From 8b1b02a409178cc0ae03597db09fbc689b11b031 Mon Sep 17 00:00:00 2001 From: Leon van Kammen Date: Fri, 28 Apr 2023 13:19:45 +0200 Subject: [PATCH] update documentation --- doc/fragments.awk | 34 +++++++++++++++++++++++++--------- index.html | 43 +++++++++++++++++++++++++++++-------------- 2 files changed, 54 insertions(+), 23 deletions(-) diff --git a/doc/fragments.awk b/doc/fragments.awk index 9257573..478a814 100644 --- a/doc/fragments.awk +++ b/doc/fragments.awk @@ -1,6 +1,16 @@ BEGIN{ - print "| fragment | type | scope |" - print "|----------|------|-------|" + ROUNDROBIN="šŸŽ²" + ASSET="šŸ”’" + PV_OVERRIDE="šŸ”“" + BROWSER_OVERRIDE="šŸ‘©" + PROMPT="āœ‹?" + print ROUNDROBIN" = multiple values will be roundrobin'ed
" + print ASSET" = immutable value(s) are defined in 3D asset
" + print PV_OVERRIDE" = value(s) can be overwritten by [predefined_view](#predefined_view)
" + print BROWSER_OVERRIDE" = value(s) can be overwritten by [URL browser_override](#browser_override)
" + print PROMPT" = value(s) can be overwritten only after confirmation of user

" + print "| fragment | type | write access | scope |" + print "|----------|------|--------------|-------|" } /category:/ { @@ -15,13 +25,19 @@ BEGIN{ gsub(/.*\("/,"",$1) gsub(/".*/,"",$1) type="string" + perms="" frag=$1 $1="" - if( $0 ~ /T_INT/ ) type="int" - if( $0 ~ /T_STRING_OBJ/ ) type="[string object](string object)" - if( $0 ~ /T_VECTOR2/ ) type="[vector2](#vector2)" - if( $0 ~ /T_VECTOR3/ ) type="[vector3](#vector3)" - if( $0 ~ /T_URL/ ) type="[url](#url)" - if( $0 ~ /T_PREDEFINED_VIEW/ ) type="[predefined view](#prefined%20view)" - print "| **"frag"** |" type "|" scope "|" + if( $0 ~ /T_INT/ ) type="int" + if( $0 ~ /T_STRING_OBJ/ ) type="[string object](string object ) " + if( $0 ~ /T_VECTOR2/ ) type="[vector2](#vector ) " + if( $0 ~ /T_VECTOR3/ ) type="[vector3](#vector ) " + if( $0 ~ /T_URL/ ) type="[url](#url ) " + if( $0 ~ /T_PREDEFINED_VIEW/ ) type="[predefined view](#predefined_view ) " + if( $0 ~ /ROUNDROBIN/ ) perms=perms" "ROUNDROBIN + if( $0 ~ /ASSET/ ) perms=perms" "ASSET + if( $0 ~ /PV_OVERRIDE/ ) perms=perms" "PV_OVERRIDE + if( $0 ~ /BROWSER_OVERRIDE/ ) perms=perms" "BROWSER_OVERRIDE + if( $0 ~ /PROMPT/ ) perms=perms" "PROMPT + print "| **"frag"** |" type "|" perms "|" scope "|" } diff --git a/index.html b/index.html index c84cdfb..dab66d3 100644 --- a/index.html +++ b/index.html @@ -515,15 +515,14 @@ xrfragment_Parser.parse = function(key,value,resultMap) { Frag_h["t"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.ROUNDROBIN | xrfragment_XRF.T_VECTOR2 | xrfragment_XRF.BROWSER_OVERRIDE; Frag_h["gravity"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR3; Frag_h["physics"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR3; - Frag_h["scroll"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_STRING; Frag_h["fov"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_INT | xrfragment_XRF.BROWSER_OVERRIDE; Frag_h["clip"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR2 | xrfragment_XRF.BROWSER_OVERRIDE; Frag_h["fog"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_STRING | xrfragment_XRF.BROWSER_OVERRIDE; Frag_h["namespace"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING; - Frag_h["SPFX"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING; + Frag_h["SPDX"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING; Frag_h["unit"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING; Frag_h["description"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING; - Frag_h["src_session"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_URL | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.BROWSER_OVERRIDE | xrfragment_XRF.PROMPT; + Frag_h["session"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_URL | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.BROWSER_OVERRIDE | xrfragment_XRF.PROMPT; if(value.length == 0 && !Object.prototype.hasOwnProperty.call(Frag_h,key)) { resultMap[key] = new xrfragment_XRF(key,xrfragment_XRF.PV_EXECUTE | xrfragment_XRF.BROWSER_OVERRIDE); return true; @@ -535,12 +534,12 @@ xrfragment_Parser.parse = function(key,value,resultMap) { if(Object.prototype.hasOwnProperty.call(Frag_h,key)) { var v = new xrfragment_XRF(key,Frag_h[key]); if(!v.validate(value)) { - console.log("src/xrfragment/Parser.hx:75:","[ i ] fragment '" + key + "' has incompatible value (" + value + ")"); + console.log("src/xrfragment/Parser.hx:74:","[ i ] fragment '" + key + "' has incompatible value (" + value + ")"); return false; } resultMap[key] = v; } else { - console.log("src/xrfragment/Parser.hx:79:","[ i ] fragment '" + key + "' does not exist or has no type typed (yet)"); + console.log("src/xrfragment/Parser.hx:78:","[ i ] fragment '" + key + "' does not exist or has no type typed (yet)"); return false; } return true; @@ -761,11 +760,17 @@ xrfragment_URI.parse = function(qs,browser_override) { } return resultMap; }; -var xrfragment_XRF = function(_fragment,_flags) { +var xrfragment_XRF = $hx_exports["xrfragment"]["XRF"] = function(_fragment,_flags) { this.fragment = _fragment; this.flags = _flags; }; xrfragment_XRF.__name__ = true; +xrfragment_XRF.set = function(flag,flags) { + return flags | flag; +}; +xrfragment_XRF.unset = function(flag,flags) { + return flags & ~flag; +}; xrfragment_XRF.prototype = { is: function(flag) { return (this.flags & flag) != 0; @@ -848,16 +853,23 @@ xrfragment_XRF.ROUNDROBIN = 16; xrfragment_XRF.BROWSER_OVERRIDE = 32; xrfragment_XRF.PV_OVERRIDE = 64; xrfragment_XRF.PV_EXECUTE = 128; +xrfragment_XRF.T_COLOR = 256; xrfragment_XRF.T_INT = 512; +xrfragment_XRF.T_FLOAT = 1024; xrfragment_XRF.T_VECTOR2 = 2048; xrfragment_XRF.T_VECTOR3 = 4096; xrfragment_XRF.T_URL = 8192; xrfragment_XRF.T_PREDEFINED_VIEW = 16384; xrfragment_XRF.T_STRING = 32768; xrfragment_XRF.T_STRING_OBJ = 65536; +xrfragment_XRF.T_STRING_OBJ_PROP = 131072; xrfragment_XRF.isColor = new EReg("^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$",""); xrfragment_XRF.isInt = new EReg("^[0-9]+$",""); xrfragment_XRF.isFloat = new EReg("^[0-9]+\\.[0-9]+$",""); +xrfragment_XRF.isVector = new EReg("([,]+|\\w)",""); +xrfragment_XRF.isUrl = new EReg("(://)?\\..*",""); +xrfragment_XRF.isUrlOrPretypedView = new EReg("(^#|://)?\\..*",""); +xrfragment_XRF.isString = new EReg(".*",""); })({}); var xrfragment = $hx_exports["xrfragment"]; @@ -1128,8 +1140,6 @@ Error message and password prompt
  • AFRAME template
  • -
  • Draft of 'List of fragments'
  • -
  • Examples
  • Fragment Explorer
  • @@ -1138,12 +1148,16 @@ Error message and password prompt
  • List of fragments
  • +
  • predefined_view
  • +
  • Reference
  • THREE template
  • THREE template #online
  • +
  • vector
  • +
  • WebXR
  • XR Fragments
  • @@ -1173,7 +1187,7 @@ Error message and password prompt {"created":"20230424093136251","title":"$:/config/codemirror/theme","type":"string","text":"tiddlywiki","modified":"20230424093243338"}, {"created":"20230424093821723","text":"yes","tags":"","title":"$:/config/HtmlParser/DisableSandbox","modified":"20230424142930452"}, {"created":"20230424140117603","text":"allowvr allowfullscreen allow-scripts","tags":"","title":"$:/config/HtmlParser/SandboxTokens","modified":"20230424142737213"}, -{"created":"20230423174843715","title":"$:/config/Manager/Filter","text":"webxr","modified":"20230427153413594"}, +{"created":"20230423174843715","title":"$:/config/Manager/Filter","text":"xrfrag","modified":"20230427210508295"}, {"created":"20230423164137536","text":"","title":"$:/config/Manager/System","modified":"20230424140109138"}, {"created":"20230425162854560","title":"$:/config/Navigation/UpdateAddressBar","text":"permalink","modified":"20230427180247389"}, {"created":"20230424152601270","text":"hide","title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/control-panel","modified":"20230424152601270"}, @@ -1215,7 +1229,7 @@ Error message and password prompt {"created":"20230425164931250","title":"$:/state/folded/GLSL shader template","text":"show","modified":"20230425164939576"}, {"created":"20230424142403302","text":"checked","title":"$:/state/import/select-all","modified":"20230424142404392"}, {"created":"20230423163640468","title":"$:/state/notebook-sidebar","text":"yes","modified":"20230427175800205"}, -{"created":"20230423163641722","title":"$:/state/notebook-sidebar-section","text":"$:/core/ui/SideBar/Recent","modified":"20230427204332510"}, +{"created":"20230423163641722","title":"$:/state/notebook-sidebar-section","text":"$:/core/ui/SideBar/Recent","modified":"20230428111912180"}, {"created":"20230427102758222","title":"$:/state/plugin-info--1887569658-$:/plugins/ihm/tidgraph--50210113","text":"documentation","modified":"20230427102759911"}, {"created":"20230427092525294","title":"$:/state/plugin-info--391242618-$:/plugins/tiddlywiki/browser-storage","text":"yes","modified":"20230427092525375"}, {"created":"20230427093219686","title":"$:/state/plugin-info--391242618-$:/plugins/tiddlywiki/browser-storage--605768392","text":"settings","modified":"20230427094141558"}, @@ -1232,7 +1246,7 @@ Error message and password prompt {"created":"20230427151522031","title":"$:/state/tab/moresidebar-1850697562","text":"$:/core/ui/MoreSideBar/All","modified":"20230427151523774"}, {"created":"20230423164446212","title":"$:/state/tabs/controlpanel/toolbars-1345989671","text":"$:/core/ui/ControlPanel/Toolbars/PageControls","modified":"20230427180259900"}, {"title":"$:/status/RequireReloadDueToPluginChange","text":"no"}, -{"created":"20230427204335247","title":"$:/StoryList","text":"","list":"[[XR Fragments]]","modified":"20230427204342807"}, +{"created":"20230428105832665","title":"$:/StoryList","text":"","list":"[[XR Fragments]]","modified":"20230428111917717"}, {"created":"20230423163445948","title":"$:/theme","text":"$:/themes/nico/notebook","modified":"20230423163445948"}, {"text":"{\n \"tiddlers\": {\n \"$:/themes/nico/notebook/LICENSE\": {\n \"title\": \"$:/themes/nico/notebook/LICENSE\",\n \"created\": \"20200419141443144\",\n \"modified\": \"20210118213330307\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\nMIT License Copyright (c) 2020 [[Nicolas Petton|https://nicolas.petton.fr]] nicolas@petton.fr\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy\\nof this software and associated documentation files (the \\\"Software\\\"), to deal\\nin the Software without restriction, including without limitation the rights\\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\\ncopies of the Software, and to permit persons to whom the Software is furnished\\nto do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice (including the next\\nparagraph) shall be included in all copies or substantial portions of the\\nSoftware.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS\\nOR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF\\nOR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\\n\"\n },\n \"$:/themes/nico/notebook/themetweaks\": {\n \"title\": \"$:/themes/nico/notebook/themetweaks\",\n \"created\": \"20201217172915960\",\n \"modified\": \"20210123211851680\",\n \"tags\": \"$:/tags/ControlPanel/Appearance\",\n \"caption\": \"{{$:/language/ThemeTweaks/ThemeTweaks}}\",\n \"text\": \"\\\\define lingo-base() $:/language/ThemeTweaks/\\n\\nYou can tweak certain aspects of the ''Notebook'' theme.\\n\\n! \u003C\u003Clingo Options>>\\n\\n|\u003C$link to=\\\"$:/themes/nico/notebook/options/stickytitles\\\">\u003C\u003Clingo Options/StickyTitles>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Options/StickyTitles/Hint>>// |\u003C$select tiddler=\\\"$:/themes/nico/notebook/options/stickytitles\\\">\u003Coption value=\\\"no\\\">{{$:/language/No}}\u003C/option>\u003Coption value=\\\"yes\\\">{{$:/language/Yes}}\u003C/option>\u003C/$select> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/options/codewrapping\\\">\u003C\u003Clingo Options/CodeWrapping>>\u003C/$link> |\u003C$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/options/codewrapping\\\">\u003Coption value=\\\"pre\\\">{{$:/language/No}}\u003C/option>\u003Coption value=\\\"pre-wrap\\\">{{$:/language/Yes}}\u003C/option>\u003C/$select> |\\n|\u003C$link to=\\\"$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover\\\">Reveal tiddler controls on mouseover\u003C/$link> |\u003C$select tiddler=\\\"$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover\\\">\u003Coption value=\\\"no\\\">{{$:/language/No}}\u003C/option>\u003Coption value=\\\"yes\\\">{{$:/language/Yes}}\u003C/option>\u003C/$select> |\\n\\n! \u003C\u003Clingo Settings>>\\n\\n|\u003C$link to=\\\"$:/themes/nico/notebook/settings/fontfamily\\\">\u003C\u003Clingo Settings/FontFamily>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/nico/notebook/settings/fontfamily\\\" default=\\\"\\\" tag=\\\"input\\\"/> | |\\n|\u003C$link to=\\\"$:/themes/nico/notebook/settings/codefontfamily\\\">\u003C\u003Clingo Settings/CodeFontFamily>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/nico/notebook/settings/codefontfamily\\\" default=\\\"\\\" tag=\\\"input\\\"/> | |\\n|\u003C$link to=\\\"$:/themes/nico/notebook/settings/editorfontfamily\\\">\u003C\u003Clingo Settings/EditorFontFamily>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/nico/notebook/settings/editorfontfamily\\\" default=\\\"\\\" tag=\\\"input\\\"/> | |\\n\\n! \u003C\u003Clingo Metrics>>\\n\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\\\">\u003C\u003Clingo Metrics/FontSize>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\\\">\u003C\u003Clingo Metrics/LineHeight>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\\\">\u003C\u003Clingo Metrics/BodyFontSize>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/nico/notebook/metrics/bodyfontsize\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\\\">\u003C\u003Clingo Metrics/BodyLineHeight>>\u003C/$link> |\u003C$edit-text tiddler=\\\"$:/themes/nico/notebook/metrics/bodylineheight\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\\\">\u003C\u003Clingo Metrics/SidebarBreakpoint>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Metrics/SidebarBreakpoint/Hint>>// |^\u003C$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/nico/notebook/metrics/sidebar-width\\\">\u003C\u003Clingo Metrics/SidebarWidth>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Metrics/SidebarWidth/Hint>>// |^\u003C$edit-text tiddler=\\\"$:/themes/nico/notebook/metrics/sidebar-width\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|\u003C$link to=\\\"$:/themes/nico/notebook/metrics/story-width\\\">\u003C\u003Clingo Metrics/StoryWidth>>\u003C/$link>\u003Cbr>//\u003C\u003Clingo Metrics/StoryWidth/Hint>>// |^\u003C$edit-text tiddler=\\\"$:/themes/nico/notebook/metrics/story-width\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n\\n\"\n },\n \"$:/themes/nico/notebook/base\": {\n \"title\": \"$:/themes/nico/notebook/base\",\n \"created\": \"20200419141443144\",\n \"modified\": \"20210120224227503\",\n \"tags\": \"$:/tags/Stylesheet\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\\n\\n\\\\define if-sidebar(text)\\n \u003C$reveal state=\\\"$:/state/notebook-sidebar\\\" type=\\\"match\\\" text=\\\"yes\\\">\\n $text$\\n \u003C/$reveal>\\n\\\\end\\n\\n\\\\define if-reveal-tiddler-controls-on-hover(text)\\n \u003C$reveal state=\\\"$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover\\\" type=\\\"match\\\" text=\\\"yes\\\">\\n $text$\\n \u003C/$reveal>\\n\\\\end\\n \\n/* Top and bottom bars */\\n\\n/* Hide the top-right bar */\\n.tc-topbar.tc-topbar-right {\\n display: none;\\n}\\n\\ndiv.tc-sidebar-header {\\n padding: 0;\\n min-height: 0;\\n}\\n\\n.tc-story-river {\\n padding: 6px 0 !important;\\n width: 100% !important;\\n max-width: {{$:/themes/nico/notebook/metrics/story-width}} !important;\\n margin: 0 auto !important;\\n margin-top: 34px !important;\\n}\\n\\ndiv.tc-tiddler-frame {\\n width: 100%;\\n margin: 20px 0;\\n background: \u003C\u003Ccolour tiddler-background>>;\\n box-shadow: 0 5px 20px rgba(0,0,0, 0.12);\\n border-radius: 6px;\\n padding: 42px 60px 60px 60px;\\n}\\n\\nh1.tc-site-title {\\n margin-top: 14px;\\n font-size: 1.5em !important;\\n}\\n\\n.nc-bar {\\n padding: 10px;\\n height: {{$:/themes/nico/notebook/metrics/topbar-height}};\\n background: \u003C\u003Ccolour page-background>>;\\n display: flex;\\n justify-content: space-between;\\n}\\n\\n.nc-topbar-wrapper {\\n position: fixed;\\n top: 0;\\n left: 0;\\n right: 0;\\n /* The z-index needs to be above the z-index used in tiddlers in zoomin view */\\n z-index: 501;\\n}\\n\\n.nc-bar.nc-topbar {\\n top: 0;\\n background: \u003C\u003Ccolour page-background>>ee;\\n max-width: calc({{$:/themes/nico/notebook/metrics/story-width}} + 40px);\\n padding: 10px 20px;\\n margin: 0 auto;\\n}\\n\\n.nc-bar.nc-bottombar {\\n position: fixed;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n /* The z-index needs to be above the z-index used in tiddlers in zoomin view */\\n z-index: 501;\\n}\\n\\n.nc-bar .left svg {\\n fill: \u003C\u003Ccolour sidebar-controls-foreground>>;\\n}\\n\\n.nc-bar input[type=\\\"search\\\"] {\\n width: 200px;\\n padding: .6em 1em;\\n margin-top: -.2em;\\n background: \u003C\u003Ccolour sidebar-button-foreground>>44;\\n color: \u003C\u003Ccolour foreground>>cc;\\n transition: all ease-in .2s;\\n border: 1px solid transparent;\\n outline: 0;\\n}\\n\\n.nc-bar input[type=\\\"search\\\"]:focus {\\n width: 300px;\\n background: \u003C\u003Ccolour tiddler-background>>;\\n color: \u003C\u003Ccolour foreground>>;\\n border: 1px solid \u003C\u003Ccolour primary>>;\\n box-shadow: 0 0 .2rem 0 \u003C\u003Ccolour primary>>;\\n}\\n\\ninput[type=\\\"search\\\"]::-webkit-search-cancel-button {\\n -webkit-appearance: auto;\\n}\\n\\n.nc-bar .tc-block-dropdown.tc-search-drop-down {\\n margin-left: 0;\\n width: 400px;\\n border: 0;\\n box-shadow: 0 0 6px 0 rgba(0,0,0,.2);\\n border-radius: 6px;\\n padding: 20px 0;\\n}\\n\\n.nc-bar p {\\n margin: 0;\\n}\\n\\n.nc-bar .tc-page-controls {\\n margin-top: 0;\\n}\\n\\n.nc-bar .tc-page-controls button {\\n margin-right: .8em;\\n}\\n\\n.nc-bar .tc-page-controls button .tc-btn-text {\\n font-size: 14px;\\n}\\n\\n.nc-bar .tc-block-dropdown {\\n max-height: 70vh;\\n overflow: auto;\\n}\\n\\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .nc-topbar {\\n display: none;\\n }\\n\\n .tc-story-river {\\n padding: 0 !important;\\n margin-top: 0 !important;\\n margin-bottom: 60px !important;\\n }\\n\\n div.tc-tiddler-frame {\\n margin: 0;\\n box-shadow: none;\\n border-radius: 0;\\n border-top: 0;\\n }\\n}\\n\\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .nc-bottombar {\\n display: none;\\n }\\n}\\n\\n@media(max-width: 1100px) {\\n .nc-bar input[type=\\\"search\\\"] {\\n width: 200px;\\n }\\n}\\n\\n/* Sidebar */\\n\\n@keyframes sidebar-appear {\\n 0% {\\n left: -{{$:/themes/nico/notebook/metrics/sidebar-width}};\\n }\\n 100% {\\n left: 0;\\n }\\n}\\n\\n\u003C\u003Cif-sidebar \\\"\\\"\\\"\\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .nc-sidebar {\\n animation: sidebar-appear .14s;\\n padding-top: 10px;\\n }\\n}\\n\\\"\\\"\\\">>\\n\\n.nc-sidebar {\\n background: \u003C\u003Ccolour tiddler-background>>;\\n border-right: 1px solid \u003C\u003Ccolour tiddler-border>>;\\n width: {{$:/themes/nico/notebook/metrics/sidebar-width}};\\n overflow-y: auto;\\n overflow-x: hidden;\\n z-index: 500;\\n}\\n\\n.nc-sidebar .segment {\\n border-bottom: 1px solid rgba(0,0,0,.1);\\n}\\n\\n.nc-sidebar ol {\\n margin: 0;\\n padding: 0;\\n list-style: none;\\n line-height: 1.8em;\\n}\\n\\n.nc-sidebar ol ol {\\n padding-left: 18px;\\n}\\n\\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .mobile-only {\\n display: none;\\n }\\n}\\n\\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .desktop-only {\\n display: none;\\n }\\n}\\n\\n.nc-sidebar h1.tc-site-title {\\n margin: 0;\\n}\\n\\n.nc-sidebar p {\\n margin: 6px 0;\\n}\\n\\n.nc-sidebar .tc-site-subtitle {\\n color: \u003C\u003Ccolour site-title-foreground>>;\\n}\\n\\n.nc-sidebar .section .label {\\n padding: 2px 0;\\n color: \u003C\u003Ccolour site-title-foreground>>;\\n fill: \u003C\u003Ccolour site-title-foreground>>;\\n font-weight: bold;\\n line-height: 1.6em;\\n display: block;\\n width: 100%;\\n text-align: left;\\n padding: 8px 15px;\\n border-radius: 0;\\n}\\n\\n.nc-sidebar .section:not(.open) .label:hover {\\n background: rgba(0,0,0,.06);\\n}\\n\\n.nc-sidebar .section.open .label {\\n color: \u003C\u003Ccolour tiddler-background>>;\\n fill: \u003C\u003Ccolour tiddler-background>>;\\n background: \u003C\u003Ccolour primary>>;\\n border-bottom: 1px solid rgba(0,0,0,.1);\\n}\\n\\n.nc-sidebar .section .label .caret {\\n display: inline-block;\\n width: 15px;\\n float: right;\\n}\\n\\n.nc-sidebar .content {\\n padding: 6px 15px;\\n font-size: 1em;\\n}\\n\\n.nc-sidebar .tc-tiddlylink {\\n color: \u003C\u003Ccolour primary>>;\\n}\\n\\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .nc-sidebar {\\n position: fixed;\\n left: 0;\\n top: 0;\\n bottom: 0;\\n }\\n}\\n\\n\u003C\u003Cif-sidebar \\\"\\\"\\\"\\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n @keyframes sidebar-slide {\\n 0% {\\n left: -100vw;\\n }\\n 100% {\\n left: 0;\\n }\\n }\\n .nc-sidebar {\\n overflow: auto;\\n position: fixed;\\n width: 100%;\\n left: 0;\\n top: 0;\\n bottom: 48px;\\n z-index: 3000;\\n animation: sidebar-slide ease-in .2s;\\n animation-fill-mode: forwards;\\n }\\n}\\n\\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .tc-page-container {\\n margin-left: {{$:/themes/nico/notebook/metrics/sidebar-width}} !important;\\n }\\n\\n .nc-topbar-wrapper {\\n left: {{$:/themes/nico/notebook/metrics/sidebar-width}};\\n }\\n}\\n\\\"\\\"\\\">>\\n\\n/* Animate the hamburger button */\\n\\n@keyframes menu-bars-1 {\\n 0% {}\\n 100% {\\n transform: rotate(-45deg) translateY(-10px) translateX(-6px);\\n fill: \u003C\u003Ccolour foreground>>;\\n }\\n}\\n\\n@keyframes menu-bars-2 {\\n 0% {}\\n 100% { opacity: 0; }\\n}\\n\\n@keyframes menu-bars-3 {\\n 0% {}\\n 100% {\\n transform: rotate(45deg) translateY(6px) translateX(2px);\\n fill: \u003C\u003Ccolour foreground>>;\\n }\\n}\\n\\n.sidebar-toggle {\\n /* position: fixed; */\\n /* top: 6px; */\\n /* left: 6px; */\\n /* z-index: 600; */\\n /* padding: 4px; */\\n /* border-radius: 8px; */\\n margin-right: 10px;\\n transition: all ease-in-out .2s;\\n fill: \u003C\u003Ccolour sidebar-controls-foreground>>;\\n}\\n\\n.sidebar-toggle:hover,\\n.sidebar-toggle.open {\\n fill: \u003C\u003Ccolour sidebar-controls-foreground-hover>>;\\n}\\n\\n/* @media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) { */\\n/* .sidebar-toggle { */\\n/* top: auto; */\\n/* bottom: 10px; */\\n/* left: 10px; */\\n/* } */\\n/* } */\\n\\n.sidebar-toggle .bars .bar {\\n transform: rotate(0) translateY(0) translateX(0);\\n opacity: 1;\\n transform-origin: 20px 10px;\\n transition: transform 0.4s ease-in-out, opacity 0.2s ease-in-out, fill .4s ease-in-out;\\n}\\n\\n.sidebar-toggle .bars .bar:nth-of-type(3) {\\n transform-origin: 20px 20px;\\n}\\n\\n.sidebar-toggle.open .bars .bar:nth-of-type(1) {\\n animation: menu-bars-1 .6s;\\n animation-fill-mode: forwards;\\n}\\n.sidebar-toggle.open .bars .bar:nth-of-type(2) {\\n animation: menu-bars-2 .6s;\\n animation-fill-mode: forwards;\\n}\\n.sidebar-toggle.open .bars .bar:nth-of-type(3) {\\n animation: menu-bars-3 .6s;\\n animation-fill-mode: forwards;\\n}\\n\\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n div.tc-tiddler-frame {\\n padding: 14px;\\n }\\n}\\n\\n/* Inputs */\\n\\ninput, textarea {\\n transition: border .14s ease-in-out;\\n background: \u003C\u003Ccolour tiddler-editor-background>>;\\n border: 1px solid \u003C\u003Ccolour tiddler-editor-border>>;\\n padding: .5em;\\n border-radius: 4px;\\n}\\n\\ninput:focus, textarea:focus {\\n box-shadow: 0 0 0.2rem 0 \u003C\u003Ccolour primary>>;\\n outline: 0;\\n border-color: \u003C\u003Ccolour primary>>;\\n}\\n\\nbutton {\\n border-radius: 1.5em;\\n border: 1px solid #ccc;\\n background: \u003C\u003Ccolour tiddler-background>>;\\n padding: .3em 1em;\\n cursor: pointer;\\n transition: box-shadow ease-in .1s;\\n color: \u003C\u003Ccolor foreground>>;\\n}\\n\\nbutton:focus, button:active {\\n outline: 0 none;\\n}\\n\\nbutton.tc-btn-invisible {\\n border-radius: 0;\\n}\\n\\n.tc-editor-toolbar button,\\n.tc-editor-toolbar button.tc-btn-invisible {\\n border-radius: 3px;\\n background: \u003C\u003Ccolour tiddler-editor-background>>;\\n color: \u003C\u003Ccolour foreground>>;\\n fill: \u003C\u003Ccolour foreground>>;\\n border: 1px solid \u003C\u003Ccolour tiddler-editor-border>>;\\n}\\n\\n.tc-editor-toolbar button:hover,\\n.tc-editor-toolbar button:active {\\n border-color: \u003C\u003Ccolour primary>>;\\n background: \u003C\u003Ccolour primary>>;\\n color: \u003C\u003Ccolour background>>;\\n fill: \u003C\u003Ccolour background>>;\\n}\\n\\n.tc-tiddler-frame input.tc-edit-texteditor,\\n.tc-tiddler-frame textarea.tc-edit-texteditor,\\n.tc-tiddler-frame iframe.tc-edit-texteditor {\\n transition: border .14s ease-in-out;\\n border: 1px solid \u003C\u003Ccolour tiddler-editor-border>>;\\n background: \u003C\u003Ccolour tiddler-editor-background>>;\\n padding: 4px;\\n border-radius: 4px;\\n}\\n\\n.tc-tiddler-frame input.tc-edit-texteditor:focus,\\n.tc-tiddler-frame textarea.tc-edit-texteditor:focus,\\n.tc-tiddler-frame iframe.tc-edit-texteditor:focus {\\n box-shadow: 0 0 0.2rem 0 \u003C\u003Ccolour primary>>;\\n outline: 0;\\n border-color: \u003C\u003Ccolour primary>>;\\n}\\n\\n.tc-tiddler-controls .tc-btn-text {\\n font-size: 16px;\\n}\\n\\n\u003C\u003Cif-reveal-tiddler-controls-on-hover \\\"\\\"\\\"\\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .tc-tiddler-frame .tc-tiddler-controls svg {\\n opacity: 0;\\n transition: all .2s ease-in;\\n }\\n\\n .tc-tiddler-controls svg.tc-image-close-button,\\n .tc-tiddler-controls .py-toggle-todo-button svg,\\n .tc-tiddler-controls svg.tc-image-done-button,\\n .tc-tiddler-frame .tc-tiddler-controls:hover svg {\\n opacity: 1;\\n }\\n\\n .tc-tiddler-controls .py-toggle-todo-button .done svg {\\n fill: #2da562;\\n }\\n}\\n\\\"\\\"\\\">>\\n\\nbutton.tc-tag-label, span.tc-tag-label {\\n padding: 0.3em 1em !important;\\n}\\n\\n/* Fonts */\\n\\nhtml, body {\\n font-family: {{$:/themes/nico/notebook/settings/fontfamily}};\\n}\\n\\n.tc-tiddler-frame input.tc-edit-texteditor,\\n.tc-tiddler-frame textarea.tc-edit-texteditor,\\n.tc-tiddler-frame iframe.tc-edit-texteditor {\\n font-family: {{$:/themes/nico/notebook/settings/editorfontfamily}};\\n}\\n\\npre, code {\\n font-family: {{$:/themes/nico/notebook/settings/codefontfamily}};\\n}\\n\\n.tc-titlebar, .tc-site-title {\\n font-size: 28px !important;\\n line-height: 34px !important;\\n font-weight: 600 !important;\\n letter-spacing: -0.5px !important;\\n}\\n\\nh1, h2, h3, h4, h5, h6 {\\n font-weight: 600;\\n}\\n\\n.tc-tiddler-body h1,\\n.tc-tiddler-body h2,\\n.tc-tiddler-preview-preview h1,\\n.tc-tiddler-preview-preview h2 {\\n font-weight: bold;\\n}\\n\\ndiv.tc-tiddler-frame .tc-tiddler-body {\\n font-size: {{$:/themes/nico/notebook/metrics/bodyfontsize}};\\n line-height: {{$:/themes/nico/notebook/metrics/bodylineheight}};\\n}\\n\\n/* Tabs */\\n\\ndiv.tc-tab-buttons {\\n margin-bottom: -4px;\\n}\\n\\ndiv.tc-tab-buttons button {\\n font-weight: bold;\\n font-size: 1.2em;\\n line-height: 1em;\\n padding: .6em .8em .4em .8em;\\n border: 0;\\n border-radius: 0;\\n background: transparent;\\n cursor: pointer;\\n transition: background ease-in .2s;\\n}\\n\\ndiv.tc-tab-buttons button:hover {\\n background: rgba(0,0,0,.03);\\n}\\n\\ndiv.tc-tab-buttons button.tc-tab-selected {\\n border: 0;\\n background: transparent;\\n border-bottom: 4px solid \u003C\u003Ccolour primary>>;\\n}\\n\\n/* Dropdowns */\\n\\n@keyframes pop {\\n 0% {\\n transform: scale(0.8);\\n opacity: 0;\\n }\\n\\n 80% {\\n transform: scale(1.03);\\n opacity: 1;\\n }\\n\\n 100% {\\n transform: scale(1);\\n opacity: 1;\\n }\\n}\\n\\n.tc-drop-down {\\n box-shadow: 0 0 10px rgba(0,0,0,.2);\\n border-radius: 6px;\\n padding: 10px 0 !important;\\n animation: pop .15s ease-in forwards;\\n}\\n\\n.tc-drop-down a, .tc-drop-down button {\\n padding: 3px 15px !important;\\n}\\n\\n.tc-search-results {\\n line-height: 2em;\\n}\\n\\n.tc-search-results em {\\n font-weight: bold;\\n font-style: normal;\\n}\\n\\n/* Draft list */\\n\\n.tc-drafts-list {\\n font-size: .9em;\\n left: auto;\\n right: 0;\\n}\\n\\n.tc-drafts-list a {\\n padding: 6px 12px;\\n font-weight: bold;\\n border-top-left-radius: 6px;\\n border-top-right-radius: 6px;\\n display: inline-block;\\n}\\n\\n.nc-refs {\\n color: #888;\\n font-size: .9em;\\n}\\n\\n.nc-refs h4 {\\n margin-bottom: 4px;\\n}\\n\\n.nc-post-created {\\n color: #acacac;\\n font-size: .8em;\\n}\\n\"\n },\n \"$:/themes/nico/notebook/changelog\": {\n \"title\": \"$:/themes/nico/notebook/changelog\",\n \"caption\": \"ChangeLog\",\n \"created\": \"20201217180707912\",\n \"modified\": \"20210202214001915\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"! 1.4.1\\n\\n!! Fixes\\n\\n* Fix the transclusion mode of sidebar sections\\n* Fix section title rendering for tiddlers without a caption field\\n* Fix the colour of links in the sidebar when using Notebook palettes with Vanilla\\n\\n! 1.4.0\\n\\n!! Features\\n\\n* New redesigned topbar layout\\n* Add a configuration setting for the story width\\n* Add support for keyboard navigation in the search dropdown\\n\\n! 1.3.6\\n\\n!! Improvements\\n\\n* Improve the style of tabs\\n* New animation for drop-downs\\n* Use a lighter page background colour in the beige palette\\n\\n!! Fixes\\n\\n* Fix the default ctrl+shift+F shortcut for focusing the search input\\n\\n! 1.3.5\\n\\n!! Features\\n\\n* Add an option to reveal tiddler controls on mouseover\\n\\n! 1.3.4\\n\\n!! Improvements\\n\\n* Add a keyboard shortcut (alt+shift+s) to toggle Notebook sidebar\\n* Add missing colours to tiddler editor fields in the dark palette\\n\\n!! Fixes\\n\\n* Fix the size of toolbar button labels when the $:/config/Toolbar/Text is set to yes\\n\\n! 1.3.3\\n\\n!! Improvements\\n\\n* Make the sidebar more generic by using the default sidebar sections\\n\\n! 1.3.2\\n\\n!! Improvements\\n\\n* Add colours for messages in the dark palette\\n* Add colours for notification in the dark palette\\n* Set colours for messages in the beige palette\\n\\n! 1.3.1\\n\\n!! Features\\n\\n* New font family settings distinct from the Vanilla theme\\n\\n!! Improvements\\n\\n* Use a slightly lighter colour as the search input background\\n* Improve contrast of sidebar buttons in the dark palette\\n\\n!! Fixes\\n\\n* Fix tiddler control button colours in all three palettes\\n* Fix tab colours in palette-dark\\n\\n! 1.3.0\\n\\n!! Improvements\\n\\n* New dark colour palette\\n* Use a darker color for tiddler subtitles\\n* Add back the WebKit search cancel button in search inputs\\n\\n!! Fixes\\n\\n* Fix the z-index of the topbar for the zoomin story view\\n* Fix the font weight of tiddler titles in edit mode\\n\\n! 1.2.0\\n\\n!! Improvements\\n\\n* Better support for dark colour palettes\\n\\n!! Fixes\\n\\n* Fix rendering of overflowing/wrapping text in the sidebar\\n\\n! 1.1.0\\n\\n!! Features\\n\\n* New theme tweaks tab dedicated to Notebook in the control panel\\n* Inputs in the edit template are now styled consistently with other inputs\\n\\n!! Fixes\\n\\n* Fixes the position of sticky tiddler titles when the option is turned on\\n\"\n },\n \"$:/config/ShortcutInfo/notebook-focus-search\": {\n \"title\": \"$:/config/ShortcutInfo/notebook-focus-search\",\n \"text\": \"Focus on the topbar search field\"\n },\n \"$:/config/shortcuts/notebook-focus-search\": {\n \"title\": \"$:/config/shortcuts/notebook-focus-search\",\n \"text\": \"ctrl+shift+F\"\n },\n \"$:/config/Search/AutoFocus\": {\n \"title\": \"$:/config/Search/AutoFocus\",\n \"text\": \"false\"\n },\n \"$:/config/shortcuts/sidebar-search\": {\n \"title\": \"$:/config/shortcuts/sidebar-search\",\n \"text\": \"\"\n },\n \"$:/themes/nico/notebook/images/bars\": {\n \"title\": \"$:/themes/nico/notebook/images/bars\",\n \"created\": \"20200428212322206\",\n \"modified\": \"20201210210231235\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Csvg class=\\\"bars\\\" height=\\\"21pt\\\" viewBox=\\\"0 0 42 42\\\" enable-background=\\\"new 0 0 32 22.5\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n \u003Cg class=\\\"svg-menu-toggle\\\" sketch:type=\\\"MSLayerGroup\\\">\\n \u003Crect class=\\\"bar\\\" x=\\\"8\\\" y=\\\"28\\\" width=\\\"26\\\" height=\\\"4\\\">\u003C/rect>\\n \u003Crect class=\\\"bar\\\" x=\\\"8\\\" y=\\\"19\\\" width=\\\"26\\\" height=\\\"4\\\">\u003C/rect>\\n \u003Crect class=\\\"bar\\\" x=\\\"8\\\" y=\\\"10\\\" width=\\\"26\\\" height=\\\"4\\\">\u003C/rect>\\n \u003C/g>\\n\u003C/svg>\\n\"\n },\n \"$:/themes/nico/notebook/images/caret-down\": {\n \"title\": \"$:/themes/nico/notebook/images/caret-down\",\n \"created\": \"20200429194348688\",\n \"modified\": \"20201210210230919\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Csvg width=\\\"6pt\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 320 512\\\">\u003Cpath d=\\\"M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\\\"/>\u003C/svg>\\n\"\n },\n \"$:/themes/nico/notebook/images/caret-right\": {\n \"title\": \"$:/themes/nico/notebook/images/caret-right\",\n \"created\": \"20200429194305719\",\n \"modified\": \"20201210210230909\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Csvg width=\\\"4pt\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 192 512\\\">\u003Cpath d=\\\"M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z\\\"/>\u003C/svg>\\n\"\n },\n \"$:/themes/nico/notebook/images/color-switch\": {\n \"title\": \"$:/themes/nico/notebook/images/color-switch\",\n \"created\": \"20201210170859810\",\n \"creator\": \"nico\",\n \"modified\": \"20201210205606403\",\n \"modifier\": \"nico\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Csvg width=\\\"20px\\\" height=\\\"20px\\\" viewBox=\\\"0 0 16 16\\\" class=\\\"bi bi-circle-half\\\" fill=\\\"currentColor\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n \u003Cpath fill-rule=\\\"evenodd\\\" d=\\\"M8 15V1a7 7 0 1 1 0 14zm0 1A8 8 0 1 1 8 0a8 8 0 0 1 0 16z\\\"/>\\n\u003C/svg\\n\"\n },\n \"$:/themes/nico/notebook/metrics/bodyfontsize\": {\n \"title\": \"$:/themes/nico/notebook/metrics/bodyfontsize\",\n \"created\": \"20200428203454207\",\n \"modified\": \"20201210205606363\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"15px\\n\"\n },\n \"$:/themes/nico/notebook/metrics/bodylineheight\": {\n \"title\": \"$:/themes/nico/notebook/metrics/bodylineheight\",\n \"created\": \"20200428203454207\",\n \"modified\": \"20201210205606363\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"22px\"\n },\n \"$:/themes/nico/notebook/metrics/sidebar-width\": {\n \"title\": \"$:/themes/nico/notebook/metrics/sidebar-width\",\n \"created\": \"20200429144554294\",\n \"modified\": \"20201210210231246\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"350px\\n\"\n },\n \"$:/themes/nico/notebook/metrics/story-width\": {\n \"title\": \"$:/themes/nico/notebook/metrics/story-width\",\n \"created\": \"20210123210054185\",\n \"modified\": \"20210123211911688\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"800px\\n\"\n },\n \"$:/themes/nico/notebook/metrics/topbar-height\": {\n \"title\": \"$:/themes/nico/notebook/metrics/topbar-height\",\n \"created\": \"20200428203454207\",\n \"modified\": \"20201210205606363\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"52px\\n\"\n },\n \"$:/themes/nico/notebook/options/stickytitles\": {\n \"title\": \"$:/themes/nico/notebook/options/stickytitles\",\n \"text\": \"no\"\n },\n \"$:/themes/nico/notebook/options/codewrapping\": {\n \"title\": \"$:/themes/nico/notebook/options/codewrapping\",\n \"text\": \"pre-wrap\"\n },\n \"$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover\": {\n \"title\": \"$:/themes/nico/notebook/options/reveal-tiddler-controls-on-hover\",\n \"text\": \"no\"\n },\n \"$:/core/ui/PageTemplate/sidebar\": {\n \"title\": \"$:/core/ui/PageTemplate/sidebar\",\n \"created\": \"20200430072116835\",\n \"modified\": \"20201217174129501\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\whitespace trim\\n\\\\define config-title()\\n$:/config/SideBarSegments/Visibility/$(listItem)$\\n\\\\end\\n\\nOverwritten by $:/themes/nico/notebook so that the default sidebar does not get rendered.\\n\"\n },\n \"$:/themes/tiddlywiki/vanilla/themetweaks\": {\n \"title\": \"$:/themes/tiddlywiki/vanilla/themetweaks\",\n \"caption\": \"{{$:/language/ThemeTweaks/ThemeTweaks}}\",\n \"created\": \"20201217163834291\",\n \"modified\": \"20201217163914434\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"Overwritten by $:/themes/nico/notebook so that the Vanilla theme tweaks do not appear in the control panel. \"\n },\n \"$:/themes/nico/notebook/palettes/palette-beige\": {\n \"title\": \"$:/themes/nico/notebook/palettes/palette-beige\",\n \"text\": \"alert-background: #ffe476\\nalert-border: #b99e2f\\nalert-highlight: #881122\\nalert-muted-foreground: #b99e2f\\nbackground: #ffffff\\nblockquote-bar: \u003C\u003Ccolour muted-foreground>>\\nbutton-background:\\nbutton-foreground:\\nbutton-border:\\ncode-background: #f7f7f9\\ncode-border: #e1e1e8\\ncode-foreground: #dd1144\\ndirty-indicator: #c63636\\ndownload-background: #66cccc\\ndownload-foreground: \u003C\u003Ccolour background>>\\ndragger-background: \u003C\u003Ccolour foreground>>\\ndragger-foreground: \u003C\u003Ccolour background>>\\ndropdown-background: \u003C\u003Ccolour background>>\\ndropdown-border: #ddd\\ndropdown-tab-background-selected: #fff\\ndropdown-tab-background: #ececec\\ndropzone-background: #da8548\\nexternal-link-background-hover: inherit\\nexternal-link-background-visited: inherit\\nexternal-link-background: inherit\\nexternal-link-foreground-hover: inherit\\nexternal-link-foreground-visited: #0000aa\\nexternal-link-foreground: #0000ee\\nforeground: #3F3B3B\\nmessage-background: #e6f5e8\\nmessage-border: #2b5532\\nmessage-foreground: #2b5532\\nmodal-backdrop: \u003C\u003Ccolour foreground>>\\nmodal-background: \u003C\u003Ccolour background>>\\nmodal-border: #999999\\nmodal-footer-background: #f5f5f5\\nmodal-footer-border: #dddddd\\nmodal-header-border: #eeeeee\\nmuted-foreground: #999999\\nnotification-background: #ffffdd\\nnotification-border: #999999\\npage-background: #f5f5ee\\npre-background: #f6f6f6\\npre-border: #cccccc\\nprimary: #7f4bca\\nselect-tag-background:\\nselect-tag-foreground:\\nsidebar-button-foreground: #a6a69c\\nsidebar-controls-foreground-hover: #000000\\nsidebar-controls-foreground: \u003C\u003Ccolour sidebar-button-foreground>>\\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\\nsidebar-foreground: #acacac\\nsidebar-muted-foreground-hover: #444444\\nsidebar-muted-foreground: #c0c0c0\\nsidebar-tab-background-selected: #ffffff\\nsidebar-tab-background: \u003C\u003Ccolour tab-background>>\\nsidebar-tab-border-selected: \u003C\u003Ccolour tab-border-selected>>\\nsidebar-tab-border: \u003C\u003Ccolour tab-border>>\\nsidebar-tab-divider: \u003C\u003Ccolour tab-divider>>\\nsidebar-tab-foreground-selected: \u003C\u003Ccolour tab-foreground-selected>>\\nsidebar-tab-foreground: \u003C\u003Ccolour tab-foreground>>\\nsidebar-tiddler-link-foreground-hover: \u003C\u003Ccolour primary>>\\nsidebar-tiddler-link-foreground: \u003C\u003Ccolour tab-foreground>>\\nsite-title-foreground: #353748\\nstatic-alert-foreground: #aaaaaa\\ntab-background-selected: #ffffff\\ntab-background: #eeeeee\\ntab-border-selected: #cccccc\\ntab-border: #cccccc\\ntab-divider: #d8d8d8\\ntab-foreground-selected: \u003C\u003Ccolour foreground>>\\ntab-foreground: #888888\\ntable-border: #dddddd\\ntable-footer-background: #a8a8a8\\ntable-header-background: #f0f0f0\\ntag-background: #ffeedd\\ntag-foreground: #000\\ntiddler-background: \u003C\u003Ccolour background>>\\ntiddler-border: #dbdbc7;\\ntiddler-controls-foreground-hover: #888888;\\ntiddler-controls-foreground-selected: #888888;\\ntiddler-controls-foreground: #cccccc\\ntiddler-editor-background: \u003C\u003Ccolour background>>\\ntiddler-editor-border-image: #ffffff\\ntiddler-editor-border: rgba(0,0,0,.2)\\ntiddler-editor-fields-even: #e0e8e0\\ntiddler-editor-fields-odd: #f0f4f0\\ntiddler-info-background: #f8f8f8\\ntiddler-info-border: #dddddd\\ntiddler-info-tab-background: #f8f8f8\\ntiddler-link-background: \u003C\u003Ccolour background>>\\ntiddler-link-foreground: \u003C\u003Ccolour primary>>\\ntiddler-subtitle-foreground: #aaaaaa\\ntiddler-title-foreground: #333\\ntoolbar-new-button:\\ntoolbar-options-button:\\ntoolbar-save-button:\\ntoolbar-info-button:\\ntoolbar-edit-button:\\ntoolbar-close-button:\\ntoolbar-delete-button:\\ntoolbar-cancel-button:\\ntoolbar-done-button:\\nuntagged-background: #999999\\nvery-muted-foreground: #888888\\n\",\n \"type\": \"application/x-tiddler-dictionary\",\n \"description\": \"A beige colour palette for Notebook\",\n \"name\": \"Notebook Beige\",\n \"tags\": \"$:/tags/Palette $:/tags/notebook/Palette\"\n },\n \"$:/themes/nico/notebook/palettes/palette-dark\": {\n \"title\": \"$:/themes/nico/notebook/palettes/palette-dark\",\n \"text\": \"alert-background: #643b43\\nalert-border: #3f181f\\nalert-highlight: #881122\\nalert-muted-foreground: #bc8b94\\nbackground: #383e49\\nblockquote-bar: \u003C\u003Ccolour muted-foreground>>\\nbutton-background:\\nbutton-border:\\nbutton-foreground:\\ncode-background: #2c323b\\ncode-border: #111\\ncode-foreground: #dd1144\\ndirty-indicator: #c63636\\ndownload-background: #98be65\\ndownload-foreground: \u003C\u003Ccolour background>>\\ndragger-background: \u003C\u003Ccolour foreground>>\\ndragger-foreground: \u003C\u003Ccolour background>>\\ndropdown-background: \u003C\u003Ccolour background>>\\ndropdown-border: #111\\ndropdown-tab-background-selected: #fff\\ndropdown-tab-background: #ececec\\ndropzone-background: #da8548\\nexternal-link-background-hover: inherit\\nexternal-link-background-visited: inherit\\nexternal-link-background: inherit\\nexternal-link-foreground-hover: inherit\\nexternal-link-foreground-visited: #61afef\\nexternal-link-foreground: #c678dd\\nforeground: #c8ced8\\nmessage-background: #2c323e\\nmessage-border: #111\\nmessage-foreground: #d5e2f1\\nmodal-backdrop: \u003C\u003Ccolour foreground>>\\nmodal-background: \u003C\u003Ccolour background>>\\nmodal-border: #999999\\nmodal-footer-background: #f5f5f5\\nmodal-footer-border: #dddddd\\nmodal-header-border: #eeeeee\\nmuted-foreground: #999999\\nnotification-background: #3a5e39\\nnotification-border: #192c19\\npage-background: #262b33\\npre-background: \u003C\u003Ccolour page-background>>\\npre-border: \u003C\u003Ccolour tiddler-border>>\\nprimary: #bf93ff\\nselect-tag-background:\\nselect-tag-foreground:\\nsidebar-button-foreground: #5e646f\\nsidebar-controls-foreground-hover: #cad2e5\\nsidebar-controls-foreground: \u003C\u003Ccolour sidebar-button-foreground>>\\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\\nsidebar-foreground: #cad2e5\\nsidebar-muted-foreground-hover: #444444\\nsidebar-muted-foreground: #c0c0c0\\nsidebar-tab-background-selected: \u003C\u003Ccolour tab-background-selected>>\\nsidebar-tab-background: \u003C\u003Ccolour tab-background>>\\nsidebar-tab-border-selected: \u003C\u003Ccolour tab-border-selected>>\\nsidebar-tab-border: \u003C\u003Ccolour tab-border>>\\nsidebar-tab-divider: \u003C\u003Ccolour tab-divider>>\\nsidebar-tab-foreground-selected: \u003C\u003Ccolour tab-foreground-selected>>\\nsidebar-tab-foreground: \u003C\u003Ccolour tab-foreground>>\\nsidebar-tiddler-link-foreground-hover: \u003C\u003Ccolour primary>>\\nsidebar-tiddler-link-foreground: \u003C\u003Ccolour tab-foreground>>\\nsite-title-foreground: \u003C\u003Ccolour foreground>>\\nstatic-alert-foreground: #aaaaaa\\ntab-background-selected: \u003C\u003Ccolour background>>\\ntab-background: \u003C\u003Ccolour page-background>>\\ntab-border-selected: \u003C\u003Ccolour foreground>>\\ntab-border: #cad2e5\\ntab-divider: #cad2e5\\ntab-foreground-selected: #ecf2ff\\ntab-foreground: #cad2e5\\ntable-border: #aaaaaa\\ntable-footer-background: #a8a8a8\\ntable-header-background: #262b33\\ntag-background: #fcb671\\ntag-foreground: #000\\ntiddler-background: \u003C\u003Ccolour background>>\\ntiddler-border: #111\\ntiddler-controls-foreground-hover: #cad2e5\\ntiddler-controls-foreground-selected: #cad2e5\\ntiddler-controls-foreground: #5e646f\\ntiddler-editor-background: \u003C\u003Ccolour background>>\\ntiddler-editor-border-image: #ffffff\\ntiddler-editor-border: rgba(255, 255, 255, 0.3)\\ntiddler-editor-fields-even: \u003C\u003Ccolour background>>\\ntiddler-editor-fields-odd: #2c323b\\ntiddler-info-background: #f8f8f8\\ntiddler-info-border: #dddddd\\ntiddler-info-tab-background: #f8f8f8\\ntiddler-link-background: \u003C\u003Ccolour background>>\\ntiddler-link-foreground: \u003C\u003Ccolour primary>>\\ntiddler-subtitle-foreground: #aaaaaa\\ntiddler-title-foreground: \u003C\u003Ccolour foreground>>\\ntoolbar-cancel-button:\\ntoolbar-close-button:\\ntoolbar-delete-button:\\ntoolbar-done-button:\\ntoolbar-edit-button:\\ntoolbar-info-button:\\ntoolbar-new-button:\\ntoolbar-options-button:\\ntoolbar-save-button:\\nuntagged-background: #999999\\nvery-muted-foreground: #888888\\n\",\n \"type\": \"application/x-tiddler-dictionary\",\n \"description\": \"A dark colour palette for Notebook\",\n \"name\": \"Notebook Dark\",\n \"tags\": \"$:/tags/Palette $:/tags/notebook/Palette\"\n },\n \"$:/themes/nico/notebook/palettes/palette-grey\": {\n \"title\": \"$:/themes/nico/notebook/palettes/palette-grey\",\n \"text\": \"alert-background: #ffe476\\nalert-border: #b99e2f\\nalert-highlight: #881122\\nalert-muted-foreground: #b99e2f\\nbackground: #ffffff\\nblockquote-bar: \u003C\u003Ccolour muted-foreground>>\\nbutton-background:\\nbutton-foreground:\\nbutton-border:\\ncode-background: #f7f7f9\\ncode-border: #e1e1e8\\ncode-foreground: #dd1144\\ndirty-indicator: #c63636\\ndownload-background: #66cccc\\ndownload-foreground: \u003C\u003Ccolour background>>\\ndragger-background: \u003C\u003Ccolour foreground>>\\ndragger-foreground: \u003C\u003Ccolour background>>\\ndropdown-background: \u003C\u003Ccolour background>>\\ndropdown-border: #ddd\\ndropdown-tab-background-selected: #fff\\ndropdown-tab-background: #ececec\\ndropzone-background: #da8548\\nexternal-link-background-hover: inherit\\nexternal-link-background-visited: inherit\\nexternal-link-background: inherit\\nexternal-link-foreground-hover: inherit\\nexternal-link-foreground-visited: #0000aa\\nexternal-link-foreground: #0000ee\\nforeground: #283c46\\nmessage-background: #ecf2ff\\nmessage-border: #cfd6e6\\nmessage-foreground: #547599\\nmodal-backdrop: \u003C\u003Ccolour foreground>>\\nmodal-background: \u003C\u003Ccolour background>>\\nmodal-border: #999999\\nmodal-footer-background: #f5f5f5\\nmodal-footer-border: #dddddd\\nmodal-header-border: #eeeeee\\nmuted-foreground: #999999\\nnotification-background: #ffffdd\\nnotification-border: #999999\\npage-background: #f4f4f4\\npre-background: #f6f6f6\\npre-border: #cccccc\\nprimary: #127edd\\nselect-tag-background:\\nselect-tag-foreground:\\nsidebar-button-foreground: #a6a69c\\nsidebar-controls-foreground-hover: #000000\\nsidebar-controls-foreground: \u003C\u003Ccolour sidebar-button-foreground>>\\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\\nsidebar-foreground: #acacac\\nsidebar-muted-foreground-hover: #444444\\nsidebar-muted-foreground: #c0c0c0\\nsidebar-tab-background-selected: #ffffff\\nsidebar-tab-background: \u003C\u003Ccolour tab-background>>\\nsidebar-tab-border-selected: \u003C\u003Ccolour tab-border-selected>>\\nsidebar-tab-border: \u003C\u003Ccolour tab-border>>\\nsidebar-tab-divider: \u003C\u003Ccolour tab-divider>>\\nsidebar-tab-foreground-selected: \u003C\u003Ccolour tab-foreground-selected>>\\nsidebar-tab-foreground: \u003C\u003Ccolour tab-foreground>>\\nsidebar-tiddler-link-foreground-hover: \u003C\u003Ccolour primary>>\\nsidebar-tiddler-link-foreground: \u003C\u003Ccolour tab-foreground>>\\nsite-title-foreground: #353748\\nstatic-alert-foreground: #aaaaaa\\ntab-background-selected: #ffffff\\ntab-background: #eeeeee\\ntab-border-selected: #cccccc\\ntab-border: #cccccc\\ntab-divider: #d8d8d8\\ntab-foreground-selected: \u003C\u003Ccolour foreground>>\\ntab-foreground: #888888\\ntable-border: #dddddd\\ntable-footer-background: #a8a8a8\\ntable-header-background: #f0f0f0\\ntag-background: #ffeedd\\ntag-foreground: #000\\ntiddler-background: \u003C\u003Ccolour background>>\\ntiddler-border: #ddd\\ntiddler-controls-foreground-hover: #888888;\\ntiddler-controls-foreground-selected: #888888;\\ntiddler-controls-foreground: #cccccc\\ntiddler-editor-background: \u003C\u003Ccolour background>>\\ntiddler-editor-border-image: #ffffff\\ntiddler-editor-border: rgba(0,0,0,.2)\\ntiddler-editor-fields-even: #e0e8e0\\ntiddler-editor-fields-odd: #f0f4f0\\ntiddler-info-background: #f8f8f8\\ntiddler-info-border: #dddddd\\ntiddler-info-tab-background: #f8f8f8\\ntiddler-link-background: \u003C\u003Ccolour background>>\\ntiddler-link-foreground: \u003C\u003Ccolour primary>>\\ntiddler-subtitle-foreground: #aaaaaa\\ntiddler-title-foreground: #333\\ntoolbar-new-button:\\ntoolbar-options-button:\\ntoolbar-save-button:\\ntoolbar-info-button:\\ntoolbar-edit-button:\\ntoolbar-close-button:\\ntoolbar-delete-button:\\ntoolbar-cancel-button:\\ntoolbar-done-button:\\nuntagged-background: #999999\\nvery-muted-foreground: #888888\\n\",\n \"type\": \"application/x-tiddler-dictionary\",\n \"description\": \"A grey color palette for Notebook\",\n \"name\": \"Notebook Grey\",\n \"tags\": \"$:/tags/Palette $:/tags/notebook/Palette\"\n },\n \"$:/themes/nico/notebook/settings/codefontfamily\": {\n \"title\": \"$:/themes/nico/notebook/settings/codefontfamily\",\n \"created\": \"20210101213404232\",\n \"modified\": \"20210101214210227\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\"Fira Mono\\\",\\\"Liberation Mono\\\",Menlo,Courier,monospace\\n\"\n },\n \"$:/themes/nico/notebook/settings/fontfamily\": {\n \"title\": \"$:/themes/nico/notebook/settings/fontfamily\",\n \"created\": \"20210101213404232\",\n \"modified\": \"20210101213411800\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\"Segoe UI\\\",Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\"\\n\"\n },\n \"$:/themes/nico/notebook/shortcuts/notebook-focus-search\": {\n \"title\": \"$:/themes/nico/notebook/shortcuts/notebook-focus-search\",\n \"created\": \"20201210122048919\",\n \"key\": \"((notebook-focus-search))\",\n \"modified\": \"20210115130024907\",\n \"tags\": \"$:/tags/KeyboardShortcut\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$action-sendmessage $message=\\\"tm-focus-selector\\\" $param=\\\".nc-topbar input\\\"/>\\n\"\n },\n \"$:/themes/nico/notebook/shortcuts/toggle-sidebar\": {\n \"title\": \"$:/themes/nico/notebook/shortcuts/toggle-sidebar\",\n \"created\": \"20210115130000707\",\n \"key\": \"((toggle-sidebar))\",\n \"modified\": \"20210115130021883\",\n \"tags\": \"$:/tags/KeyboardShortcut\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$list\\n filter=\\\"[[$:/state/notebook-sidebar]is[missing]] [{$:/state/notebook-sidebar}removeprefix[yes]]\\\"\\n emptyMessage=\\\"\\\"\\\"\u003C$action-setfield $tiddler=\\\"$:/state/notebook-sidebar\\\" text=\\\"yes\\\"/>\\\"\\\"\\\"\\n>\\n \u003C$action-setfield $tiddler=\\\"$:/state/notebook-sidebar\\\" text=\\\"no\\\"/>\\n\u003C/$list>\\n\"\n },\n \"$:/themes/nico/notebook/stickytitles\": {\n \"title\": \"$:/themes/nico/notebook/stickytitles\",\n \"created\": \"20201217172915960\",\n \"modified\": \"20201217180034682\",\n \"tags\": \"$:/tags/Stylesheet\",\n \"text\": \"\u003C$reveal state=\\\"$:/themes/nico/notebook/options/stickytitles\\\" type=\\\"match\\\" text=\\\"yes\\\">\\n\\n.tc-tiddler-title {\\n position: -webkit-sticky;\\n position: -moz-sticky;\\n position: -o-sticky;\\n position: -ms-sticky;\\n position: sticky;\\n top: {{$:/themes/nico/notebook/metrics/topbar-height}};\\n background: \u003C\u003Ccolour tiddler-background>>;\\n z-index: 500;\\n}\\n\\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n .tc-tiddler-title {\\n top: 0;\\n }\\n}\\n\\n\u003C$list filter=\\\"[range[100]]\\\">\\n`.tc-story-river .tc-tiddler-frame:nth-child(100n+`\u003C$text text=\u003C\u003CcurrentTiddler>>/>`) {\\nz-index: `\u003C$text text={{{ [[200]subtract\u003CcurrentTiddler>] }}}/>`;\\n}\\n`\\n\u003C/$list>\\n\u003C/$reveal>\\n\"\n },\n \"$:/themes/nico/notebook/tags/Sidebar\": {\n \"title\": \"$:/themes/nico/notebook/tags/Sidebar\",\n \"created\": \"20200429164516951\",\n \"list\": \"$:/themes/nico/notebook/ui/Buttons/menu $:/themes/nico/notebook/ui/Sidebar/Headings $:/themes/nico/notebook/ui/Sidebar/Search $:/themes/nico/notebook/Sidebar/Sections\",\n \"modified\": \"20201210205606504\",\n \"type\": \"text/vnd.tiddlywiki\"\n },\n \"$:/themes/nico/notebook/tags/SidebarSection\": {\n \"title\": \"$:/themes/nico/notebook/tags/SidebarSection\",\n \"created\": \"20200429201017275\",\n \"list\": \"$:/themes/nico/notebook/ui/Sidebar/Open $:/themes/nico/notebook/ui/Sidebar/Recent $:/themes/nico/notebook/ui/Sidebar/Tools $:/themes/nico/notebook/ui/Sidebar/More\",\n \"modified\": \"20201210215658901\",\n \"type\": \"text/vnd.tiddlywiki\"\n },\n \"$:/themes/nico/notebook/ui/Bottombar\": {\n \"title\": \"$:/themes/nico/notebook/ui/Bottombar\",\n \"created\": \"20200429113453340\",\n \"modified\": \"20201210210230886\",\n \"tags\": \"$:/tags/PageTemplate\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$reveal state=\\\"$:/state/notebook-bottombar\\\" type=\\\"match\\\" text=\\\"yes\\\" default=\\\"yes\\\" retain=\\\"yes\\\" animate=\\\"yes\\\">\\n \u003Cdiv class=\\\"nc-bar nc-bottombar\\\">\\n \u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/NotebookTopbar]!has[draft.of]]\\\" variable=\\\"listItem\\\">\\n \u003C$reveal type=\\\"nomatch\\\" state=\u003C\u003Cconfig-title>> text=\\\"hide\\\" tag=\\\"div\\\">\\n \u003C$transclude tiddler=\u003C\u003ClistItem>> mode=\\\"block\\\"/>\\n \u003C/$reveal>\\n \u003C/$list>\\n \u003Cdiv class=\\\"left\\\">\\n {{$:/themes/nico/notebook/ui/Buttons/menu}}\\n \u003C/div>\\n \u003Cdiv class=\\\"right\\\">\\n {{$:/core/ui/SideBarSegments/page-controls}}\\n \u003C/div>\\n \u003C/div>\\n\u003C/$reveal>\\n\\n\"\n },\n \"$:/themes/nico/notebook/ui/Buttons/SwitchPalette\": {\n \"title\": \"$:/themes/nico/notebook/ui/Buttons/SwitchPalette\",\n \"created\": \"20201210171047824\",\n \"description\": \"Toggle between grey/beige colour palette\",\n \"modified\": \"20210118213335643\",\n \"tags\": \"$:/tags/PageControls\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Cspan class=\\\"desktop-only\\\">\\n \u003C$vars\\n palettes=\\\"[all[tiddlers+shadows]tag[$:/tags/notebook/Palette]]\\\"\\n popupTiddler=\u003C\u003Cqualify \\\"$:/state/notebook/palette-dropdown\\\">>\\n >\\n \u003C$button\\n popup=\u003C\u003CpopupTiddler>>\\n tooltip=\\\"Switch colours\\\"\\n aria-label=\\\"Switch colours\\\"\\n class=\u003C\u003Ctv-config-toolbar-class>>\\n >\\n \u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n\\t{{$:/themes/nico/notebook/images/color-switch}}\\n \u003C/$list>\\n\\n \u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\\t\u003Cspan class=\\\"tc-btn-text\\\">Switch colours\u003C/span>\\n \u003C/$list>\\n\\n \u003C$reveal state=\u003C\u003CpopupTiddler>> type=\\\"popup\\\" position=\\\"belowleft\\\" class=\\\"tc-drop-down\\\">\\n\\t\u003C$list filter=\u003C\u003Cpalettes>>>\\n\\t \u003C$button class=\\\"tc-btn-invisible\\\">\\n\\t {{!!name}}\\n\\t \u003C$action-setfield $tiddler=\\\"$:/palette\\\" text={{!!title}}/>\\n\\t \u003C/$button>\\n\\t\u003C/$list>\\n \u003C/$reveal>\\n\\n \u003C/$button>\\n \u003C/$vars>\\n\u003C/span>\\n\"\n },\n \"$:/themes/nico/notebook/ui/Buttons/menu\": {\n \"title\": \"$:/themes/nico/notebook/ui/Buttons/menu\",\n \"created\": \"20200429115248943\",\n \"modified\": \"20210124211756417\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$reveal state=\\\"$:/state/notebook-sidebar\\\" type=\\\"match\\\" text=\\\"yes\\\" default=\\\"no\\\" retain=\\\"yes\\\" animate=\\\"no\\\">\\n \u003C$button set=\\\"$:/state/notebook-sidebar\\\" setTo=\\\"no\\\" tooltip=\\\"Toggle menu\\\" class=\\\"tc-btn-invisible sidebar-toggle open\\\">\\n {{$:/themes/nico/notebook/images/bars}}\\n \u003C/$button>\\n\u003C/$reveal>\\n\\n\u003C$reveal type=\\\"nomatch\\\" state=\\\"$:/state/notebook-sidebar\\\" text=\\\"yes\\\">\\n \u003C$button set=\\\"$:/state/notebook-sidebar\\\" setTo=\\\"yes\\\" tooltip=\\\"Toggle menu\\\" class=\\\"tc-btn-invisible sidebar-toggle\\\">\\n {{$:/themes/nico/notebook/images/bars}}\\n \u003C/$button>\\n\u003C/$reveal>\\n\"\n },\n \"$:/themes/nico/notebook/ui/Search\": {\n \"title\": \"$:/themes/nico/notebook/ui/Search\",\n \"created\": \"20200429191943257\",\n \"modified\": \"20210126170723413\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define advanced-search-actions()\\n\u003C$action-setfield $tiddler=\\\"$:/temp/advancedsearch/input\\\" text={{$:/temp/notebook-search}}/>\\n\u003C$action-setfield $tiddler=\\\"$:/temp/advancedsearch/refresh\\\" text=\\\"yes\\\"/>\\n\u003C$action-navigate $to=\\\"$:/AdvancedSearch\\\"/>\\n\\\\end\\n\\n\\\\define input-accept-actions()\\n\u003C$list filter=\\\"[\u003C__tiddler__>get[text]!is[missing]] ~[\u003C__tiddler__>get[text]is[shadow]]\\\">\\n \u003C$action-navigate $to={{{ [\u003C__tiddler__>get[text]] }}}/>\\n \u003C$action-deletetiddler $filter=\\\"[[$:/temp/search]] [\u003CsearchTiddler>] [\u003CsearchListState>]\\\"/>\\n\u003C/$list>\\n\\\\end\\n\\n\\\\define cancel-search-actions()\\n\u003C$list filter=\\\"[\u003CsearchTiddler>get[text]!match{$:/temp/search}]\\\" emptyMessage=\\\"\\\"\\\"\u003C$action-deletetiddler $filter=\\\"[[$:/temp/search]] [\u003CsearchTiddler>] [\u003CsearchListState>]\\\"/>\\\"\\\"\\\">\\n \u003C$action-setfield $tiddler=\\\"$:/temp/search\\\" text={{{ [\u003CsearchTiddler>get[text]] }}}/>\\n \u003C$action-setfield $tiddler=\\\"$:/temp/search/refresh\\\" text=\\\"yes\\\"/>\u003C/$list>\\n\\\\end\\n\\n\u003C$vars editTiddler=\\\"$:/temp/search\\\"\\n searchTiddler=\\\"$:/temp/search/input\\\"\\n searchListState=\u003C\u003Cqualify \\\"$:/state/search-list/selected-item\\\">>>\\n \u003C$macrocall $name=\\\"keyboard-driven-input\\\"\\n\\t tiddler=\u003C\u003CeditTiddler>>\\n\\t storeTitle=\u003C\u003CsearchTiddler>>\\n\\t selectionStateTitle=\u003C\u003CsearchListState>>\\n\\t refreshTitle=\\\"$:/temp/search/refresh\\\"\\n\\t type=\\\"search\\\"\\n\\t tag=\\\"input\\\"\\n\\t focus={{$:/config/Search/AutoFocus}}\\n\\t focusPopup=\\\"$:/state/popup/notebook-search\\\"\\n\\t class=\\\"tc-popup-handle\\\"\\n\\t filterMinLength={{$:/config/Search/MinLength}}\\n\\t placeholder=\\\"Search...\\\"\\n\\t inputAcceptActions=\u003C\u003Cinput-accept-actions>>\\n\\t inputCancelActions=\u003C\u003Ccancel-search-actions>>\\n\\t cancelPopups=\\\"yes\\\"\\n\\t configTiddlerFilter=\\\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\\\"\\n\\t />\\n \u003C$button\\n tooltip={{$:/language/Buttons/AdvancedSearch/Hint}}\\n aria-label={{$:/language/Buttons/AdvancedSearch/Caption}}\\n class=\\\"tc-btn-invisible tc-page-controls\\\"\\n >\\n {{$:/core/images/advanced-search-button}}\\n \u003C\u003Cadvanced-search-actions>>\\n \u003C/$button>\\n \u003C$reveal tag=\\\"div\\\" class=\\\"tc-block-dropdown-wrapper\\\" state=\\\"$:/state/popup/notebook-search\\\" type=\\\"nomatch\\\" text=\\\"\\\" default=\\\"\\\">\\n \u003C$list filter=\\\"[\u003CsearchTiddler>get[text]minlength{$:/config/Search/MinLength}limit[1]]\\\" emptyMessage=\\\"\\\" variable=\\\"listItem\\\">\\n \u003Cdiv class=\\\"tc-block-dropdown tc-search-drop-down\\\">\\n \u003C$tiddler tiddler=\u003C\u003CconfigTiddler>>>\\n {{$:/themes/nico/notebook/ui/Sidebar/SearchResults}}\\n \u003C/$tiddler>\\n \u003C/div>\\n \u003C/$list>\\n \u003C/$reveal>\\n\u003C/$vars>\\n\"\n },\n \"$:/themes/nico/notebook/ui/Sidebar/Headings\": {\n \"title\": \"$:/themes/nico/notebook/ui/Sidebar/Headings\",\n \"created\": \"20200429160014174\",\n \"modified\": \"20201210210231267\",\n \"tags\": \"$:/themes/nico/notebook/tags/Sidebar\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Cdiv class=\\\"segment\\\">\\n \u003Cdiv class=\\\"content\\\">\\n \u003Ch1 class=\\\"tc-site-title\\\">\\n {{$:/SiteTitle}}\\n \u003C/h1>\\n \u003Cdiv class=\\\"tc-site-subtitle\\\">\\n {{$:/SiteSubtitle}}\\n \u003C/div>\\n \u003C/div>\\n\u003C/div>\\n\"\n },\n \"$:/themes/nico/notebook/ui/Sidebar/Search\": {\n \"title\": \"$:/themes/nico/notebook/ui/Sidebar/Search\",\n \"created\": \"20200429191943257\",\n \"modified\": \"20210124220152702\",\n \"tags\": \"$:/themes/nico/notebook/tags/Sidebar\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003Cdiv class=\\\"mobile-only\\\">\\n \u003Cdiv class=\\\"segment\\\">\\n \u003Cdiv class=\\\"content search\\\">\\n {{$:/themes/nico/notebook/ui/Search}}\\n \u003C/div>\\n \u003C/div>\\n\u003C/div>\\n\"\n },\n \"$:/themes/nico/notebook/ui/Sidebar/SearchResults\": {\n \"title\": \"$:/themes/nico/notebook/ui/Sidebar/SearchResults\",\n \"created\": \"20200429191943257\",\n \"modified\": \"20210126164631418\",\n \"tags\": \"\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define searchResultList()\\n \u003Csmall>{{$:/language/Search/Matches/Title}}\u003C/small>\\n\\n \u003C$list filter=\\\"[!is[system]search:title{$(searchTiddler)$}sort[title]limit[250]]\\\">\\n \u003Cspan class={{{[\u003CcurrentTiddler>addsuffix[-primaryList]] -[\u003CsearchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\\n \u003C$transclude tiddler=\\\"$:/core/ui/ListItemTemplate\\\"/>\\n \u003C/span>\\n \u003C/$list>\\n\\n \u003Csmall>{{$:/language/Search/Matches/All}}\u003C/small>\\n\\n \u003C$list filter=\\\"[!is[system]search{$(searchTiddler)$}sort[title]limit[250]]\\\">\\n \u003Cspan class={{{[\u003CcurrentTiddler>addsuffix[-secondaryList]] -[\u003CsearchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\\n \u003C$transclude tiddler=\\\"$:/core/ui/ListItemTemplate\\\"/>\\n \u003C/span>\\n \u003C/$list>\\n\\\\end\\n\\n\u003Cdiv class=\\\"tc-search-results\\\">\\n \u003C\u003CsearchResultList>>\\n\u003C/div>\\n\"\n },\n \"$:/themes/nico/notebook/ui/Sidebar/SectionTemplate\": {\n \"title\": \"$:/themes/nico/notebook/ui/Sidebar/SectionTemplate\",\n \"created\": \"20200429161226897\",\n \"modified\": \"20210202213859460\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\define sidebarHeading()\\n\u003C$vars tv-wikilinks=\\\"no\\\">\\n \u003C$transclude field=\\\"caption\\\">\\n \u003C$view field=\\\"title\\\"/>\\n \u003C/$transclude>\\n\u003C/$vars>\\n\\\\end\\n\\n\u003C$reveal state=\\\"$:/state/notebook-sidebar-section\\\" type=\\\"match\\\" text=\u003C\u003CcurrentTiddler>> default=\\\"no\\\" animate=\\\"no\\\">\\n \u003Cdiv class=\\\"segment section open\\\">\\n \u003C$button set=\\\"$:/state/notebook-sidebar-section\\\" setTo=\\\"\\\" class=\\\"tc-btn-invisible label\\\">\\n \u003C\u003CsidebarHeading>>\\n \u003Cspan class=\\\"caret\\\">{{$:/themes/nico/notebook/images/caret-down}}\u003C/span>\\n \u003C/$button>\\n \u003Cdiv class=\\\"content\\\">\\n \u003C$transclude $tiddler=\u003C\u003CcurrentTiddler>> mode=\\\"block\\\"/>\\n \u003C/div>\\n \u003C/div>\\n\u003C/$reveal>\\n\u003C$reveal state=\\\"$:/state/notebook-sidebar-section\\\" type=\\\"nomatch\\\" text=\u003C\u003CcurrentTiddler>> default=\\\"yes\\\" animate=\\\"no\\\">\\n \u003Cdiv class=\\\"segment section\\\">\\n \u003C$button set=\\\"$:/state/notebook-sidebar-section\\\" setTo=\u003C\u003CcurrentTiddler>> class=\\\"tc-btn-invisible label\\\">\\n \u003C\u003CsidebarHeading>>\\n \u003Cspan class=\\\"caret\\\">{{$:/themes/nico/notebook/images/caret-right}}\u003C/span>\\n \u003C/$button>\\n \u003C/div>\\n\u003C/$reveal>\\n\"\n },\n \"$:/themes/nico/notebook/ui/Sidebar/Sections\": {\n \"title\": \"$:/themes/nico/notebook/ui/Sidebar/Sections\",\n \"created\": \"20200429163239707\",\n \"modified\": \"20210112213620486\",\n \"tags\": \"$:/themes/nico/notebook/tags/Sidebar\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$list filter=\\\"[all[shadows+tiddlers]!has[draft.of]tag[$:/tags/SideBar]]\\\">\\n {{||$:/themes/nico/notebook/ui/Sidebar/SectionTemplate}}\\n\u003C/$list>\\n\"\n },\n \"$:/themes/nico/notebook/ui/Sidebar\": {\n \"title\": \"$:/themes/nico/notebook/ui/Sidebar\",\n \"created\": \"20200428201218885\",\n \"modified\": \"20210112213605486\",\n \"tags\": \"$:/tags/PageTemplate\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\\\\whitespace trim\\n\\\\define config-title()\\n$:/config/SideBarSegments/Visibility/$(listItem)$\\n\\\\end\\n\\n\u003C$reveal state=\\\"$:/state/notebook-sidebar\\\" type=\\\"match\\\" text=\\\"yes\\\" default=\\\"no\\\" retain=\\\"yes\\\" animate=\\\"no\\\">\\n \u003C$scrollable fallthrough=\\\"no\\\">\\n \u003Cdiv class=\\\"nc-sidebar\\\">\\n \u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/themes/nico/notebook/tags/Sidebar]!has[draft.of]]\\\" variable=\\\"listItem\\\">\\n \u003C$reveal type=\\\"nomatch\\\" state=\u003C\u003Cconfig-title>> text=\\\"hide\\\" tag=\\\"div\\\">\\n \u003C$transclude tiddler=\u003C\u003ClistItem>> mode=\\\"inline\\\"/>\\n \u003C/$reveal>\\n \u003C/$list>\\n \u003C/div>\\n \u003C/$scrollable>\\n\u003C/$reveal>\\n\\n\"\n },\n \"$:/themes/nico/notebook/ui/Topbar\": {\n \"title\": \"$:/themes/nico/notebook/ui/Topbar\",\n \"created\": \"20200428203101797\",\n \"modified\": \"20210124213834458\",\n \"tags\": \"$:/tags/PageTemplate\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"\u003C$reveal state=\\\"$:/state/notebook-topbar\\\" type=\\\"match\\\" text=\\\"yes\\\" default=\\\"yes\\\" retain=\\\"yes\\\" animate=\\\"yes\\\">\\n \u003Cdiv class=\\\"nc-topbar-wrapper\\\">\\n \u003Cdiv class=\\\"nc-bar nc-topbar tc-adjust-top-of-scroll\\\">\\n \u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/NotebookTopbar]!has[draft.of]]\\\" variable=\\\"listItem\\\">\\n \u003C$reveal type=\\\"nomatch\\\" state=\u003C\u003Cconfig-title>> text=\\\"hide\\\" tag=\\\"div\\\">\\n \u003C$transclude tiddler=\u003C\u003ClistItem>> mode=\\\"block\\\"/>\\n \u003C/$reveal>\\n \u003C/$list>\\n \u003Cdiv class=\\\"left\\\">\\n\\t{{$:/themes/nico/notebook/ui/Buttons/menu}}\\n {{$:/themes/nico/notebook/ui/Search}}\\n \u003C/div>\\n \u003Cdiv class=\\\"right\\\">\\n {{$:/core/ui/SideBarSegments/page-controls}}\\n \u003C/div>\\n \u003C/div>\\n \u003C/div>\\n\u003C/$reveal>\\n\\n\"\n }\n }\n}","bag":"default","revision":"0","version":"1.4.1","type":"application/json","title":"$:/themes/nico/notebook","source":"https://github.com/NicolasPetton/Notebook","plugin-type":"theme","name":"Notebook theme","list":"LICENSE changelog","description":"A clean, uncluttered TiddlyWiki theme","dependents":"$:/themes/tiddlywiki/vanilla $:/plugins/nico/notebook-mobile","core-version":">=5.1.22","author":"NicolasPetton"}, {"created":"20200429144554294","title":"$:/themes/nico/notebook/metrics/sidebar-width","modified":"20230423163514560","tags":"","type":"text/vnd.tiddlywiki","text":"300px"}, @@ -1248,16 +1262,17 @@ Error message and password prompt {"created":"20230427081708927","text":"\u003C!-- sandboxify textareas with class 'sandboxify' -->\n\u003Cscript>\n\nfunction sandboxify() { \n let run = (t) => {\n let $res = t.parentElement.children[1]\n function log(res){\n $res.innerHTML = typeof res == 'string' ? res : JSON.stringify(res,null,2)\n }\n let _log = console.log\n console.log = log\n try{\n eval(t.value); \n }catch(e){ log(e) }finally{ console.log = _log }\n } \n const textareas = document.querySelectorAll(\"textarea.sandboxify\");\n textareas.forEach(t => {\n t.addEventListener(\"input\", function (event) {\n try {\n run(t)\n } catch (error) {\n console.error(error);\n }\n });\n run(t)\n }); \n}\n\n// call sandboxify once on page load\nsandboxify();\n\n// set up a MutationObserver to call sandboxify on any new textareas added to the DOM\nconst observer = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n if (mutation.addedNodes && mutation.addedNodes.length > 0) {\n const addedNodes = mutation.addedNodes;\n addedNodes.forEach(addedNode => {\n if (addedNode.tagName === \"TEXTAREA\" && addedNode.classList.contains(\"sandboxify\")) {\n sandboxify();\n }\n });\n }\n });\n});\n\nobserver.observe(document, { childList: true, subtree: true });\n\u003C/script>","tags":"$:/tags/RawMarkup","title":"$:/webxr-notebook/sandboxify.js","modified":"20230427090041916"}, {"created":"20230427072514129","text":"\u003C!-- scriptie-talkie-embed.js -->\n\u003Cscript>\n\n(function(e,t,n){function i(n,s){if(!t[n]){if(!e[n]){var o=\"function\"==typeof require&&require;if(!s&&o)return o(n,!0);if(r)return r(n,!0);throw Error(\"Cannot find module '\"+n+\"'\")}var u=t[n]={exports:{}};e[n][0](function(t){var r=e[n][1][t];return i(r?r:t)},u,u.exports)}return t[n].exports}for(var r=\"function\"==typeof require&&require,s=0;n.length>s;s++)i(n[s]);return i})({1:[function(require){\"use strict\";var scriptieTalkieEmbed=require(\"../../\");scriptieTalkieEmbed()},{\"../../\":2}],3:[function(require,module,exports){\"use strict\";module.exports=function(textarea){var opts={},data=textarea.getAttribute(\"data-scriptie-talkie\");if(!data)return opts;try{opts=eval(\"(\"+data+\")\")}catch(e){console.error(e)}finally{return opts}}},{}],4:[function(require,module){\"use strict\";function trimEmpty(lines){for(;lines.length&&!lines[0].trim().length;)lines.shift();for(;lines.length&&!lines[lines.length-1].trim().length;)lines.length--}function leftAlign(lines){var indent=-1;if(lines.filter(function(line){return line.trim().length}).forEach(function(line){for(var lineIndent=0,col=0;\" \"===line.charAt(col++);)lineIndent++;indent=-1===indent?lineIndent:Math.min(indent,lineIndent)}),!indent)return lines;for(var i=0;lines.length>i;i++)lines[i]=lines[i].slice(indent)}module.exports=function(textarea,addRows){addRows=addRows||0;var lines=textarea.textContent.split(\"\\n\");return trimEmpty(lines),leftAlign(lines),textarea.rows=Math.max(lines.length+addRows,1),textarea.textContent=lines.join(\"\\n\"),lines}},{}],5:[function(require,module){\"use strict\";function replaceElement(replaceEl,withEl){replaceEl.parentNode.replaceChild(withEl,replaceEl)}var format=require(\"util\").format;module.exports=function(textarea,opts){opts=opts||{};var minHeight=opts.minHeight||150,maxHeight=opts.maxHeight||600,minWidth=opts.minWidth||600,textareaWidth=textarea.clientWidth,width=Math.max(minWidth,textareaWidth),height=textarea.clientHeight+50;height=Math.max(minHeight,height),height=Math.min(maxHeight,height);var container=document.createElement(\"div\");return container.setAttribute(\"class\",\"scriptie-talkie-container\"),container.setAttribute(\"style\",format(\"width: %spx; height: %spx\",width,height)),replaceElement(textarea,container),container}},{util:6}],7:[function(require,module){\"use strict\";module.exports=function(container){var link=document.createElement(\"a\");return link.setAttribute(\"class\",\"scriptie-talkie-link\"),window.link=link,container.appendChild(link),link.textContent=\"full view\",link}},{}],8:[function(require,module){\"use script\";module.exports=function(){var head=document.getElementsByTagName(\"head\")[0],style=document.createElement(\"style\");style.type=\"text/css\",style.styleSheet?style.styleSheet.cssText=css:style.appendChild(document.createTextNode(css)),head.appendChild(style)};var css=[\"textarea.scriptie-talkie {\",\" visibility: hidden;\",\" display : block;\",\"}\",\".scriptie-talkie-container {\",\" position: relative; \",\" margin: 10px 0px;\",\"}\",\".scriptie-talkie-editor,\",\".scriptie-talkie-terminal {\",\" position: absolute;\",\" top: 0;\",\" bottom: 0;\",\" height: 100%;\",\" width: 50%;\",\"}\",\".scriptie-talkie-editor {\",\" left: 0;\",\" right: 50%;\",\"}\",\".scriptie-talkie-link {\",\" position : absolute;\",\" bottom : 1px;\",\" right : 4px;\",\" font-size : 14px;\",\" color : yellowgreen;\",\" z-index : 1;\",\"}\",\"textarea.scriptie-talkie, \",\".scriptie-talkie-terminal,\",\".scriptie-talkie-editor {\",\" /* text area needs same font to determine editor size correctly */\",\" font-size : 14px;\",\" font-family : Terminus,Consolas,Profont,Monaco,Inconsolata,Inconsolata-g,\",' Unifont,Lime,\"ClearlyU PUA\",Clean,\"DejaVu Sans Mono\",\"Lucida Console\",',' \"Bitstream Vera Sans Mono\",Freemono,\"Liberation Mono\",Dina,Anka,Droid Sans Mono,',' Anonymous Pro,Proggy fonts,Envy Code R,Gamow,Courier,\"Courier New\",Terminal,monospace;',\"}\",\".scriptie-talkie-terminal {\",\" background : black;\",\" right: 0;\",\" left: 50%;\",\" overflow: auto\",\"}\",\"/* tweak the ace editor a bit since we will never have >99 lines and need to save space */\",\".scriptie-talkie-editor .ace_gutter-cell ,\",\".scriptie-talkie-editor .ace_folding-enabled > .ace_gutter-cell { \",\" padding-left: 20px;\",\" padding-right: 5px;\",\"}\"].join(\"\\n\")},{}],9:[function(require,module){\"use strict\";var qs=require(\"querystring\"),scriptieTalkieUrl=\"http://thlorenz.github.io/scriptie-talkie\";module.exports=function(code){return scriptieTalkieUrl+\"?\"+qs.stringify({code:code})}},{querystring:10}],2:[function(require,module){\"use strict\";function harvest(scripties){for(var textarea,res=[],len=scripties.length,i=0;len>i;i++)textarea=scripties.item(i),res.push(textarea);return res}function sizeTerminalToRowsAndAdjust(container,lines){var evaluatedLines=evaluateScript(lines.join(\"\\n\")),term=createTerminal(container,{lines:evaluatedLines});return container.style.height=term.height+\"px\",term}function talkify(textareas){loadStyles(),textareas.forEach(function(textarea){function evaluate(){var code=editor.getValue();terminal.reset(),link.setAttribute(\"href\",linkTo(code)),evaluateScript(code,terminal.writeln.bind(terminal))}var term,lines=prepareTextarea(textarea,-3),config=getTextareaConfig(textarea),container=createContainer(textarea),link=createLink(container);term=config.sizeToEditor?createTerminal(container):sizeTerminalToRowsAndAdjust(container,lines);var edit=createEditor(container,textarea.textContent,config),terminal=term.terminal,editor=edit.editor;editor.on(\"change\",debounce(evaluate,400,!1)),editor.clearSelection(),evaluate()})}var debounce=require(\"debounce\"),getTextareaConfig=require(\"./lib/get-textarea-config\"),prepareTextarea=require(\"./lib/prepare-textarea\"),createContainer=require(\"./lib/create-container\"),createEditor=require(\"./lib/create-editor\"),createTerminal=require(\"./lib/create-terminal\"),createLink=require(\"./lib/create-link\"),evaluateScript=require(\"./lib/evaluate-script\"),loadStyles=require(\"./lib/load-styles\"),linkTo=require(\"./lib/link-to\");module.exports=function(){var wantScripties=document.getElementsByClassName(\"scriptie-talkie\"),textareas=harvest(wantScripties);textareas.length&&talkify(textareas)},window.scriptieTalkieEmbed=module.exports},{\"./lib/get-textarea-config\":3,\"./lib/prepare-textarea\":4,\"./lib/create-container\":5,\"./lib/create-editor\":11,\"./lib/create-terminal\":12,\"./lib/create-link\":7,\"./lib/evaluate-script\":13,\"./lib/load-styles\":8,\"./lib/link-to\":9,debounce:14}],6:[function(require,module,exports){function isArray(ar){return ar instanceof Array||Array.isArray(ar)||ar&&ar!==Object.prototype&&isArray(ar.__proto__)}function isRegExp(re){return re instanceof RegExp||\"object\"==typeof re&&\"[object RegExp]\"===Object.prototype.toString.call(re)}function isDate(d){if(d instanceof Date)return!0;if(\"object\"!=typeof d)return!1;var properties=Date.prototype&&Object_getOwnPropertyNames(Date.prototype),proto=d.__proto__&&Object_getOwnPropertyNames(d.__proto__);return JSON.stringify(proto)===JSON.stringify(properties)}require(\"events\"),exports.isArray=isArray,exports.isDate=function(obj){return\"[object Date]\"===Object.prototype.toString.call(obj)},exports.isRegExp=function(obj){return\"[object RegExp]\"===Object.prototype.toString.call(obj)},exports.print=function(){},exports.puts=function(){},exports.debug=function(){},exports.inspect=function(obj,showHidden,depth,colors){function format(value,recurseTimes){if(value&&\"function\"==typeof value.inspect&&value!==exports&&(!value.constructor||value.constructor.prototype!==value))return value.inspect(recurseTimes);switch(typeof value){case\"undefined\":return stylize(\"undefined\",\"undefined\");case\"string\":var simple=\"'\"+JSON.stringify(value).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return stylize(simple,\"string\");case\"number\":return stylize(\"\"+value,\"number\");case\"boolean\":return stylize(\"\"+value,\"boolean\")}if(null===value)return stylize(\"null\",\"null\");var visible_keys=Object_keys(value),keys=showHidden?Object_getOwnPropertyNames(value):visible_keys;if(\"function\"==typeof value&&0===keys.length){if(isRegExp(value))return stylize(\"\"+value,\"regexp\");var name=value.name?\": \"+value.name:\"\";return stylize(\"[Function\"+name+\"]\",\"special\")}if(isDate(value)&&0===keys.length)return stylize(value.toUTCString(),\"date\");var base,type,braces;if(isArray(value)?(type=\"Array\",braces=[\"[\",\"]\"]):(type=\"Object\",braces=[\"{\",\"}\"]),\"function\"==typeof value){var n=value.name?\": \"+value.name:\"\";base=isRegExp(value)?\" \"+value:\" [Function\"+n+\"]\"}else base=\"\";if(isDate(value)&&(base=\" \"+value.toUTCString()),0===keys.length)return braces[0]+base+braces[1];if(0>recurseTimes)return isRegExp(value)?stylize(\"\"+value,\"regexp\"):stylize(\"[Object]\",\"special\");seen.push(value);var output=keys.map(function(key){var name,str;if(value.__lookupGetter__&&(value.__lookupGetter__(key)?str=value.__lookupSetter__(key)?stylize(\"[Getter/Setter]\",\"special\"):stylize(\"[Getter]\",\"special\"):value.__lookupSetter__(key)&&(str=stylize(\"[Setter]\",\"special\"))),0>visible_keys.indexOf(key)&&(name=\"[\"+key+\"]\"),str||(0>seen.indexOf(value[key])?(str=null===recurseTimes?format(value[key]):format(value[key],recurseTimes-1),str.indexOf(\"\\n\")>-1&&(str=isArray(value)?str.split(\"\\n\").map(function(line){return\" \"+line}).join(\"\\n\").substr(2):\"\\n\"+str.split(\"\\n\").map(function(line){return\" \"+line}).join(\"\\n\"))):str=stylize(\"[Circular]\",\"special\")),name===void 0){if(\"Array\"===type&&key.match(/^\\d+$/))return str;name=JSON.stringify(\"\"+key),name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(name=name.substr(1,name.length-2),name=stylize(name,\"name\")):(name=name.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),name=stylize(name,\"string\"))}return name+\": \"+str});seen.pop();var numLinesEst=0,length=output.reduce(function(prev,cur){return numLinesEst++,cur.indexOf(\"\\n\")>=0&&numLinesEst++,prev+cur.length+1},0);return output=length>50?braces[0]+(\"\"===base?\"\":base+\"\\n \")+\" \"+output.join(\",\\n \")+\" \"+braces[1]:braces[0]+base+\" \"+output.join(\", \")+\" \"+braces[1]}var seen=[],stylize=function(str,styleType){var styles={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},style={special:\"cyan\",number:\"blue\",\"boolean\":\"yellow\",undefined:\"grey\",\"null\":\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"}[styleType];return style?\"\u001b[\"+styles[style][0]+\"m\"+str+\"\u001b[\"+styles[style][1]+\"m\":str};return colors||(stylize=function(str){return str}),format(obj,depth===void 0?2:depth)},exports.log=function(){},exports.pump=null;var Object_keys=Object.keys||function(obj){var res=[];for(var key in obj)res.push(key);return res},Object_getOwnPropertyNames=Object.getOwnPropertyNames||function(obj){var res=[];for(var key in obj)Object.hasOwnProperty.call(obj,key)&&res.push(key);return res},Object_create=Object.create||function(prototype,properties){var object;if(null===prototype)object={__proto__:null};else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != 'object'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return properties!==void 0&&Object.defineProperties&&Object.defineProperties(object,properties),object};exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object_create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})};var formatRegExp=/%[sdj%]/g;exports.format=function(f){if(\"string\"!=typeof f){for(var objects=[],i=0;arguments.length>i;i++)objects.push(exports.inspect(arguments[i]));return objects.join(\" \")}for(var i=1,args=arguments,len=args.length,str=(f+\"\").replace(formatRegExp,function(x){if(\"%%\"===x)return\"%\";if(i>=len)return x;switch(x){case\"%s\":return args[i++]+\"\";case\"%d\":return Number(args[i++]);case\"%j\":return JSON.stringify(args[i++]);default:return x}}),x=args[i];len>i;x=args[++i])str+=null===x||\"object\"!=typeof x?\" \"+x:\" \"+exports.inspect(x);return str}},{events:15}],10:[function(require,module,exports){function stringifyString(str,prefix){if(!prefix)throw new TypeError(\"stringify expects an object\");return prefix+\"=\"+encodeURIComponent(str)}function stringifyArray(arr,prefix){var ret=[];if(!prefix)throw new TypeError(\"stringify expects an object\");for(var i=0;arr.length>i;i++)ret.push(stringify(arr[i],prefix+\"[]\"));return ret.join(\"&\")}function stringifyObject(obj,prefix){for(var key,ret=[],keys=objectKeys(obj),i=0,len=keys.length;len>i;++i)key=keys[i],ret.push(stringify(obj[key],prefix?prefix+\"[\"+encodeURIComponent(key)+\"]\":encodeURIComponent(key)));return ret.join(\"&\")}function set(obj,key,val){var v=obj[key];void 0===v?obj[key]=val:isArray(v)?v.push(val):obj[key]=[v,val]}function lastBraceInKey(str){for(var brace,c,len=str.length,i=0;len>i;++i)if(c=str[i],\"]\"==c&&(brace=!1),\"[\"==c&&(brace=!0),\"=\"==c&&!brace)return i}var isArray=\"function\"==typeof Array.isArray?Array.isArray:function(xs){return\"[object Array]\"===Object.prototype.toString.call(xs)},objectKeys=Object.keys||function objectKeys(object){if(object!==Object(object))throw new TypeError(\"Invalid object\");var keys=[];for(var key in object)object.hasOwnProperty(key)&&(keys[keys.length]=key);return keys};exports.version=\"0.3.1\";var toString=Object.prototype.toString,notint=/[^0-9]/;exports.parse=function(str){function promote(parent,key){if(0==parent[key].length)return parent[key]={};var t={};for(var i in parent[key])t[i]=parent[key][i];return parent[key]=t,t}return null==str||\"\"==str?{}:(str+\"\").split(\"&\").reduce(function(ret,pair){function parse(parts,parent,key){var part=parts.shift();part?(obj=parent[key]=parent[key]||[],\"]\"==part?isArray(obj)?\"\"!=val&&obj.push(val):\"object\"==typeof obj?obj[objectKeys(obj).length]=val:obj=parent[key]=[parent[key],val]:~part.indexOf(\"]\")?(part=part.substr(0,part.length-1),notint.test(part)&&isArray(obj)&&(obj=promote(parent,key)),parse(parts,obj,part)):(notint.test(part)&&isArray(obj)&&(obj=promote(parent,key)),parse(parts,obj,part))):isArray(parent[key])?parent[key].push(val):parent[key]=\"object\"==typeof parent[key]?val:parent[key]===void 0?val:[parent[key],val]}try{pair=decodeURIComponent(pair.replace(/\\+/g,\" \"))}catch(e){}var eql=pair.indexOf(\"=\"),brace=lastBraceInKey(pair),key=pair.substr(0,brace||eql),val=pair.substr(brace||eql,pair.length),val=val.substr(val.indexOf(\"=\")+1,val.length),parent=ret;if(\"\"==key&&(key=pair,val=\"\"),~key.indexOf(\"]\")){var parts=key.split(\"[\");parts.length,parse(parts,parent,\"base\")}else{if(notint.test(key)&&isArray(parent.base)){var t={};for(var k in parent.base)t[k]=parent.base[k];parent.base=t}set(parent.base,key,val)}return ret},{base:{}}).base};var stringify=exports.stringify=function(obj,prefix){return isArray(obj)?stringifyArray(obj,prefix):\"[object Object]\"==toString.call(obj)?stringifyObject(obj,prefix):\"string\"==typeof obj?stringifyString(obj,prefix):prefix}},{}],14:[function(require,module){module.exports=function(func,threshold,execAsap){var timeout;return!1!==execAsap&&(execAsap=!0),function(){function delayed(){execAsap||func.apply(obj,args),timeout=null}var obj=this,args=arguments;timeout?clearTimeout(timeout):execAsap&&func.apply(obj,args),timeout=setTimeout(delayed,threshold||100)}}},{}],16:[function(require,module){var process=module.exports={};process.nextTick=function(){var canSetImmediate=\"undefined\"!=typeof window&&window.setImmediate,canPost=\"undefined\"!=typeof window&&window.postMessage&&window.addEventListener;if(canSetImmediate)return function(f){return window.setImmediate(f)};if(canPost){var queue=[];return window.addEventListener(\"message\",function(ev){if(ev.source===window&&\"process-tick\"===ev.data&&(ev.stopPropagation(),queue.length>0)){var fn=queue.shift();fn()}},!0),function(fn){queue.push(fn),window.postMessage(\"process-tick\",\"*\")}}return function(fn){setTimeout(fn,0)}}(),process.title=\"browser\",process.browser=!0,process.env={},process.argv=[],process.binding=function(){throw Error(\"process.binding is not supported\")},process.cwd=function(){return\"/\"},process.chdir=function(){throw Error(\"process.chdir is not supported\")}},{}],15:[function(require,module,exports){(function(process){function indexOf(xs,x){if(xs.indexOf)return xs.indexOf(x);for(var i=0;xs.length>i;i++)if(x===xs[i])return i;return-1}process.EventEmitter||(process.EventEmitter=function(){});var EventEmitter=exports.EventEmitter=process.EventEmitter,isArray=\"function\"==typeof Array.isArray?Array.isArray:function(xs){return\"[object Array]\"===Object.prototype.toString.call(xs)},defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){this._events||(this._events={}),this._events.maxListeners=n},EventEmitter.prototype.emit=function(type){if(\"error\"===type&&(!this._events||!this._events.error||isArray(this._events.error)&&!this._events.error.length))throw arguments[1]instanceof Error?arguments[1]:Error(\"Uncaught, unspecified 'error' event.\");if(!this._events)return!1;var handler=this._events[type];if(!handler)return!1;if(\"function\"==typeof handler){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:var args=Array.prototype.slice.call(arguments,1);handler.apply(this,args)}return!0}if(isArray(handler)){for(var args=Array.prototype.slice.call(arguments,1),listeners=handler.slice(),i=0,l=listeners.length;l>i;i++)listeners[i].apply(this,args);return!0}return!1},EventEmitter.prototype.addListener=function(type,listener){if(\"function\"!=typeof listener)throw Error(\"addListener only takes instances of Function\");if(this._events||(this._events={}),this.emit(\"newListener\",type,listener),this._events[type])if(isArray(this._events[type])){if(!this._events[type].warned){var m;m=void 0!==this._events.maxListeners?this._events.maxListeners:defaultMaxListeners,m&&m>0&&this._events[type].length>m&&(this._events[type].warned=!0,console.error(\"(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.\",this._events[type].length),console.trace())}this._events[type].push(listener)}else this._events[type]=[this._events[type],listener];else this._events[type]=listener;return this},EventEmitter.prototype.on=EventEmitter.prototype.addListener,EventEmitter.prototype.once=function(type,listener){var self=this;return self.on(type,function g(){self.removeListener(type,g),listener.apply(this,arguments)}),this},EventEmitter.prototype.removeListener=function(type,listener){if(\"function\"!=typeof listener)throw Error(\"removeListener only takes instances of Function\");if(!this._events||!this._events[type])return this;var list=this._events[type];if(isArray(list)){var i=indexOf(list,listener);if(0>i)return this;list.splice(i,1),0==list.length&&delete this._events[type]}else this._events[type]===listener&&delete this._events[type];return this},EventEmitter.prototype.removeAllListeners=function(type){return 0===arguments.length?(this._events={},this):(type&&this._events&&this._events[type]&&(this._events[type]=null),this)},EventEmitter.prototype.listeners=function(type){return this._events||(this._events={}),this._events[type]||(this._events[type]=[]),isArray(this._events[type])||(this._events[type]=[this._events[type]]),this._events[type]}})(require(\"__browserify_process\"))},{__browserify_process:16}],17:[function(){ace.define(\"ace/theme/monokai\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(acequire,exports){exports.isDark=!0,exports.cssClass=\"ace-monokai\",exports.cssText=\".ace-monokai .ace_gutter {background: #2F3129;color: #8F908A}.ace-monokai .ace_print-margin {width: 1px;background: #555651}.ace-monokai .ace_scroller {background-color: #272822}.ace-monokai .ace_text-layer {color: #F8F8F2}.ace-monokai .ace_cursor {border-left: 2px solid #F8F8F0}.ace-monokai .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #F8F8F0}.ace-monokai .ace_marker-layer .ace_selection {background: #49483E}.ace-monokai.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #272822;border-radius: 2px}.ace-monokai .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-monokai .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #49483E}.ace-monokai .ace_marker-layer .ace_active-line {background: #202020}.ace-monokai .ace_gutter-active-line {background-color: #272727}.ace-monokai .ace_marker-layer .ace_selected-word {border: 1px solid #49483E}.ace-monokai .ace_invisible {color: #52524d}.ace-monokai .ace_entity.ace_name.ace_tag,.ace-monokai .ace_keyword,.ace-monokai .ace_meta,.ace-monokai .ace_storage {color: #F92672}.ace-monokai .ace_constant.ace_character,.ace-monokai .ace_constant.ace_language,.ace-monokai .ace_constant.ace_numeric,.ace-monokai .ace_constant.ace_other {color: #AE81FF}.ace-monokai .ace_invalid {color: #F8F8F0;background-color: #F92672}.ace-monokai .ace_invalid.ace_deprecated {color: #F8F8F0;background-color: #AE81FF}.ace-monokai .ace_support.ace_constant,.ace-monokai .ace_support.ace_function {color: #66D9EF}.ace-monokai .ace_fold {background-color: #A6E22E;border-color: #F8F8F2}.ace-monokai .ace_storage.ace_type,.ace-monokai .ace_support.ace_class,.ace-monokai .ace_support.ace_type {font-style: italic;color: #66D9EF}.ace-monokai .ace_entity.ace_name.ace_function,.ace-monokai .ace_entity.ace_other,.ace-monokai .ace_variable {color: #A6E22E}.ace-monokai .ace_variable.ace_parameter {font-style: italic;color: #FD971F}.ace-monokai .ace_string {color: #E6DB74}.ace-monokai .ace_comment {color: #75715E}.ace-monokai .ace_markup.ace_underline {text-decoration: underline}.ace-monokai .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQ11D6z7Bq1ar/ABCKBG6g04U2AAAAAElFTkSuQmCC) right repeat-y}\";var dom=acequire(\"../lib/dom\");dom.importCssString(exports.cssText,exports.cssClass)})},{}],18:[function(require){(function(){ace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/tokenizer\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/range\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"],function(acequire,exports){var oop=acequire(\"../lib/oop\"),TextMode=acequire(\"./text\").Mode,Tokenizer=acequire(\"../tokenizer\").Tokenizer,JavaScriptHighlightRules=acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules,MatchingBraceOutdent=acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;acequire(\"../range\").Range;var WorkerClient=acequire(\"../worker/worker_client\").WorkerClient,CstyleBehaviour=acequire(\"./behaviour/cstyle\").CstyleBehaviour,CStyleFoldMode=acequire(\"./folding/cstyle\").FoldMode,Mode=function(){this.$tokenizer=new Tokenizer((new JavaScriptHighlightRules).getRules()),this.$outdent=new MatchingBraceOutdent,this.$behaviour=new CstyleBehaviour,this.foldingRules=new CStyleFoldMode};oop.inherits(Mode,TextMode),function(){this.lineCommentStart=\"//\",this.blockComment={start:\"/*\",end:\"*/\"},this.getNextLineIndent=function(state,line,tab){var indent=this.$getIndent(line),tokenizedLine=this.$tokenizer.getLineTokens(line,state),tokens=tokenizedLine.tokens,endState=tokenizedLine.state;if(tokens.length&&\"comment\"==tokens[tokens.length-1].type)return indent;if(\"start\"==state||\"no_regex\"==state){var match=line.match(/^.*(?:\\bcase\\b.*\\:|[\\{\\(\\[])\\s*$/);match&&(indent+=tab)}else if(\"doc-start\"==state){if(\"start\"==endState||\"no_regex\"==endState)return\"\";var match=line.match(/^\\s*(\\/?)\\*/);match&&(match[1]&&(indent+=\" \"),indent+=\"* \")}return indent},this.checkOutdent=function(state,line,input){return this.$outdent.checkOutdent(line,input)},this.autoOutdent=function(state,doc,row){this.$outdent.autoOutdent(doc,row)},this.createWorker=function(session){var worker=new WorkerClient([\"ace\"],require(\"../worker/javascript\"),\"JavaScriptWorker\");return worker.attachToDocument(session.getDocument()),worker.on(\"jslint\",function(results){session.setAnnotations(results.data)}),worker.on(\"terminate\",function(){session.clearAnnotations()}),worker}}.call(Mode.prototype),exports.Mode=Mode}),ace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"],function(acequire,exports){var oop=acequire(\"../lib/oop\"),DocCommentHighlightRules=acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules,TextHighlightRules=acequire(\"./text_highlight_rules\").TextHighlightRules,JavaScriptHighlightRules=function(){var keywordMapper=this.createKeywordMapper({\"variable.language\":\"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document\",keyword:\"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\"storage.type\":\"const|let|var|function\",\"constant.language\":\"null|Infinity|NaN|undefined\",\"support.function\":\"alert\",\"constant.language.boolean\":\"true|false\"},\"identifier\"),kwBeforeRe=\"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\",identifierRe=\"[a-zA-Z\\\\$_Ā”-ļææ][a-zA-Z\\\\d\\\\$_Ā”-ļææ]*\\\\b\",escapedRe=\"\\\\\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)\";this.$rules={no_regex:[{token:\"comment\",regex:/\\/\\/.*$/},DocCommentHighlightRules.getStartRule(\"doc-start\"),{token:\"comment\",regex:/\\/\\*/,next:\"comment\"},{token:\"string\",regex:\"'(?=.)\",next:\"qstring\"},{token:\"string\",regex:'\"(?=.)',next:\"qqstring\"},{token:\"constant.numeric\",regex:/0[xX][0-9a-fA-F]+\\b/},{token:\"constant.numeric\",regex:/[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b/},{token:[\"storage.type\",\"punctuation.operator\",\"support.function\",\"punctuation.operator\",\"entity.name.function\",\"text\",\"keyword.operator\"],regex:\"(\"+identifierRe+\")(\\\\.)(prototype)(\\\\.)(\"+identifierRe+\")(\\\\s*)(=)\",next:\"function_arguments\"},{token:[\"storage.type\",\"punctuation.operator\",\"entity.name.function\",\"text\",\"keyword.operator\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(\"+identifierRe+\")(\\\\.)(\"+identifierRe+\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"entity.name.function\",\"text\",\"keyword.operator\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(\"+identifierRe+\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"storage.type\",\"punctuation.operator\",\"entity.name.function\",\"text\",\"keyword.operator\",\"text\",\"storage.type\",\"text\",\"entity.name.function\",\"text\",\"paren.lparen\"],regex:\"(\"+identifierRe+\")(\\\\.)(\"+identifierRe+\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"storage.type\",\"text\",\"entity.name.function\",\"text\",\"paren.lparen\"],regex:\"(function)(\\\\s+)(\"+identifierRe+\")(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"entity.name.function\",\"text\",\"punctuation.operator\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(\"+identifierRe+\")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:[\"text\",\"text\",\"storage.type\",\"text\",\"paren.lparen\"],regex:\"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",next:\"function_arguments\"},{token:\"keyword\",regex:\"(?:\"+kwBeforeRe+\")\\\\b\",next:\"start\"},{token:[\"punctuation.operator\",\"support.function\"],regex:/(\\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:opzzzz|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/},{token:[\"punctuation.operator\",\"support.function.dom\"],regex:/(\\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/},{token:[\"punctuation.operator\",\"support.constant\"],regex:/(\\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/},{token:[\"storage.type\",\"punctuation.operator\",\"support.function.firebug\"],regex:/(console)(\\.)(warn|info|log|error|time|timeEnd|assert)\\b/},{token:keywordMapper,regex:identifierRe},{token:\"keyword.operator\",regex:/--|\\+\\+|[!$%&*+\\-~]|===|==|=|!=|!==|\u003C=|>=|\u003C\u003C=|>>=|>>>=|\u003C>|\u003C|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=/,next:\"start\"},{token:\"punctuation.operator\",regex:/\\?|\\:|\\,|\\;|\\./,next:\"start\"},{token:\"paren.lparen\",regex:/[\\[({]/,next:\"start\"},{token:\"paren.rparen\",regex:/[\\])}]/},{token:\"keyword.operator\",regex:/\\/=?/,next:\"start\"},{token:\"comment\",regex:/^#!.*$/}],start:[DocCommentHighlightRules.getStartRule(\"doc-start\"),{token:\"comment\",regex:\"\\\\/\\\\*\",next:\"comment_regex_allowed\"},{token:\"comment\",regex:\"\\\\/\\\\/.*$\",next:\"start\"},{token:\"string.regexp\",regex:\"\\\\/\",next:\"regex\"},{token:\"text\",regex:\"\\\\s+|^$\",next:\"start\"},{token:\"empty\",regex:\"\",next:\"no_regex\"}],regex:[{token:\"regexp.keyword.operator\",regex:\"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"},{token:\"string.regexp\",regex:\"/\\\\w*\",next:\"no_regex\"},{token:\"invalid\",regex:/\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/},{token:\"constant.language.escape\",regex:/\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?]/},{token:\"constant.language.delimiter\",regex:/\\|/},{token:\"constant.language.escape\",regex:/\\[\\^?/,next:\"regex_character_class\"},{token:\"empty\",regex:\"$\",next:\"no_regex\"},{defaultToken:\"string.regexp\"}],regex_character_class:[{token:\"regexp.keyword.operator\",regex:\"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"},{token:\"constant.language.escape\",regex:\"]\",next:\"regex\"},{token:\"constant.language.escape\",regex:\"-\"},{token:\"empty\",regex:\"$\",next:\"no_regex\"},{defaultToken:\"string.regexp.charachterclass\"}],function_arguments:[{token:\"variable.parameter\",regex:identifierRe},{token:\"punctuation.operator\",regex:\"[, ]+\"},{token:\"punctuation.operator\",regex:\"$\"},{token:\"empty\",regex:\"\",next:\"no_regex\"}],comment_regex_allowed:[{token:\"comment\",regex:\"\\\\*\\\\/\",next:\"start\"},{defaultToken:\"comment\"}],comment:[{token:\"comment\",regex:\"\\\\*\\\\/\",next:\"no_regex\"},{defaultToken:\"comment\"}],qqstring:[{token:\"constant.language.escape\",regex:escapedRe},{token:\"string\",regex:\"\\\\\\\\$\",next:\"qqstring\"},{token:\"string\",regex:'\"|$',next:\"no_regex\"},{defaultToken:\"string\"}],qstring:[{token:\"constant.language.escape\",regex:escapedRe},{token:\"string\",regex:\"\\\\\\\\$\",next:\"qstring\"},{token:\"string\",regex:\"'|$\",next:\"no_regex\"},{defaultToken:\"string\"}]},this.embedRules(DocCommentHighlightRules,\"doc-\",[DocCommentHighlightRules.getEndRule(\"no_regex\")])\n};oop.inherits(JavaScriptHighlightRules,TextHighlightRules),exports.JavaScriptHighlightRules=JavaScriptHighlightRules}),ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"],function(acequire,exports){var oop=acequire(\"../lib/oop\"),TextHighlightRules=acequire(\"./text_highlight_rules\").TextHighlightRules,DocCommentHighlightRules=function(){this.$rules={start:[{token:\"comment.doc.tag\",regex:\"@[\\\\w\\\\d_]+\"},{token:\"comment.doc.tag\",regex:\"\\\\bTODO\\\\b\"},{defaultToken:\"comment.doc\"}]}};oop.inherits(DocCommentHighlightRules,TextHighlightRules),DocCommentHighlightRules.getStartRule=function(start){return{token:\"comment.doc\",regex:\"\\\\/\\\\*(?=\\\\*)\",next:start}},DocCommentHighlightRules.getEndRule=function(start){return{token:\"comment.doc\",regex:\"\\\\*\\\\/\",next:start}},exports.DocCommentHighlightRules=DocCommentHighlightRules}),ace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"],function(acequire,exports){var Range=acequire(\"../range\").Range,MatchingBraceOutdent=function(){};(function(){this.checkOutdent=function(line,input){return/^\\s+$/.test(line)?/^\\s*\\}/.test(input):!1},this.autoOutdent=function(doc,row){var line=doc.getLine(row),match=line.match(/^(\\s*\\})/);if(!match)return 0;var column=match[1].length,openBracePos=doc.findMatchingBracket({row:row,column:column});if(!openBracePos||openBracePos.row==row)return 0;var indent=this.$getIndent(doc.getLine(openBracePos.row));doc.replace(new Range(row,0,row,column-1),indent)},this.$getIndent=function(line){return line.match(/^\\s*/)[0]}}).call(MatchingBraceOutdent.prototype),exports.MatchingBraceOutdent=MatchingBraceOutdent}),ace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"],function(acequire,exports){var oop=acequire(\"../../lib/oop\"),Behaviour=acequire(\"../behaviour\").Behaviour,TokenIterator=acequire(\"../../token_iterator\").TokenIterator,lang=acequire(\"../../lib/lang\"),SAFE_INSERT_IN_TOKENS=[\"text\",\"paren.rparen\",\"punctuation.operator\"],SAFE_INSERT_BEFORE_TOKENS=[\"text\",\"paren.rparen\",\"punctuation.operator\",\"comment\"],autoInsertedBrackets=0,autoInsertedRow=-1,autoInsertedLineEnd=\"\",maybeInsertedBrackets=0,maybeInsertedRow=-1,maybeInsertedLineStart=\"\",maybeInsertedLineEnd=\"\",CstyleBehaviour=function(){CstyleBehaviour.isSaneInsertion=function(editor,session){var cursor=editor.getCursorPosition(),iterator=new TokenIterator(session,cursor.row,cursor.column);if(!this.$matchTokenType(iterator.getCurrentToken()||\"text\",SAFE_INSERT_IN_TOKENS)){var iterator2=new TokenIterator(session,cursor.row,cursor.column+1);if(!this.$matchTokenType(iterator2.getCurrentToken()||\"text\",SAFE_INSERT_IN_TOKENS))return!1}return iterator.stepForward(),iterator.getCurrentTokenRow()!==cursor.row||this.$matchTokenType(iterator.getCurrentToken()||\"text\",SAFE_INSERT_BEFORE_TOKENS)},CstyleBehaviour.$matchTokenType=function(token,types){return types.indexOf(token.type||token)>-1},CstyleBehaviour.recordAutoInsert=function(editor,session,bracket){var cursor=editor.getCursorPosition(),line=session.doc.getLine(cursor.row);this.isAutoInsertedClosing(cursor,line,autoInsertedLineEnd[0])||(autoInsertedBrackets=0),autoInsertedRow=cursor.row,autoInsertedLineEnd=bracket+line.substr(cursor.column),autoInsertedBrackets++},CstyleBehaviour.recordMaybeInsert=function(editor,session,bracket){var cursor=editor.getCursorPosition(),line=session.doc.getLine(cursor.row);this.isMaybeInsertedClosing(cursor,line)||(maybeInsertedBrackets=0),maybeInsertedRow=cursor.row,maybeInsertedLineStart=line.substr(0,cursor.column)+bracket,maybeInsertedLineEnd=line.substr(cursor.column),maybeInsertedBrackets++},CstyleBehaviour.isAutoInsertedClosing=function(cursor,line,bracket){return autoInsertedBrackets>0&&cursor.row===autoInsertedRow&&bracket===autoInsertedLineEnd[0]&&line.substr(cursor.column)===autoInsertedLineEnd},CstyleBehaviour.isMaybeInsertedClosing=function(cursor,line){return maybeInsertedBrackets>0&&cursor.row===maybeInsertedRow&&line.substr(cursor.column)===maybeInsertedLineEnd&&line.substr(0,cursor.column)==maybeInsertedLineStart},CstyleBehaviour.popAutoInsertedClosing=function(){autoInsertedLineEnd=autoInsertedLineEnd.substr(1),autoInsertedBrackets--},CstyleBehaviour.clearMaybeInsertedClosing=function(){maybeInsertedBrackets=0,maybeInsertedRow=-1},this.add(\"braces\",\"insertion\",function(state,action,editor,session,text){var cursor=editor.getCursorPosition(),line=session.doc.getLine(cursor.row);if(\"{\"==text){var selection=editor.getSelectionRange(),selected=session.doc.getTextRange(selection);if(\"\"!==selected&&\"{\"!==selected&&editor.getWrapBehavioursEnabled())return{text:\"{\"+selected+\"}\",selection:!1};if(CstyleBehaviour.isSaneInsertion(editor,session))return/[\\]\\}\\)]/.test(line[cursor.column])?(CstyleBehaviour.recordAutoInsert(editor,session,\"}\"),{text:\"{}\",selection:[1,1]}):(CstyleBehaviour.recordMaybeInsert(editor,session,\"{\"),{text:\"{\",selection:[1,1]})}else if(\"}\"==text){var rightChar=line.substring(cursor.column,cursor.column+1);if(\"}\"==rightChar){var matching=session.$findOpeningBracket(\"}\",{column:cursor.column+1,row:cursor.row});if(null!==matching&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text))return CstyleBehaviour.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}else if(\"\\n\"==text||\"\\r\\n\"==text){var closing=\"\";CstyleBehaviour.isMaybeInsertedClosing(cursor,line)&&(closing=lang.stringRepeat(\"}\",maybeInsertedBrackets),CstyleBehaviour.clearMaybeInsertedClosing());var rightChar=line.substring(cursor.column,cursor.column+1);if(\"}\"==rightChar||\"\"!==closing){var openBracePos=session.findMatchingBracket({row:cursor.row,column:cursor.column},\"}\");if(!openBracePos)return null;var indent=this.getNextLineIndent(state,line.substring(0,cursor.column),session.getTabString()),next_indent=this.$getIndent(line);return{text:\"\\n\"+indent+\"\\n\"+next_indent+closing,selection:[1,indent.length,1,indent.length]}}}}),this.add(\"braces\",\"deletion\",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&\"{\"==selected){var line=session.doc.getLine(range.start.row),rightChar=line.substring(range.end.column,range.end.column+1);if(\"}\"==rightChar)return range.end.column++,range;maybeInsertedBrackets--}}),this.add(\"parens\",\"insertion\",function(state,action,editor,session,text){if(\"(\"==text){var selection=editor.getSelectionRange(),selected=session.doc.getTextRange(selection);if(\"\"!==selected&&editor.getWrapBehavioursEnabled())return{text:\"(\"+selected+\")\",selection:!1};if(CstyleBehaviour.isSaneInsertion(editor,session))return CstyleBehaviour.recordAutoInsert(editor,session,\")\"),{text:\"()\",selection:[1,1]}}else if(\")\"==text){var cursor=editor.getCursorPosition(),line=session.doc.getLine(cursor.row),rightChar=line.substring(cursor.column,cursor.column+1);if(\")\"==rightChar){var matching=session.$findOpeningBracket(\")\",{column:cursor.column+1,row:cursor.row});if(null!==matching&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text))return CstyleBehaviour.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}}),this.add(\"parens\",\"deletion\",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&\"(\"==selected){var line=session.doc.getLine(range.start.row),rightChar=line.substring(range.start.column+1,range.start.column+2);if(\")\"==rightChar)return range.end.column++,range}}),this.add(\"brackets\",\"insertion\",function(state,action,editor,session,text){if(\"[\"==text){var selection=editor.getSelectionRange(),selected=session.doc.getTextRange(selection);if(\"\"!==selected&&editor.getWrapBehavioursEnabled())return{text:\"[\"+selected+\"]\",selection:!1};if(CstyleBehaviour.isSaneInsertion(editor,session))return CstyleBehaviour.recordAutoInsert(editor,session,\"]\"),{text:\"[]\",selection:[1,1]}}else if(\"]\"==text){var cursor=editor.getCursorPosition(),line=session.doc.getLine(cursor.row),rightChar=line.substring(cursor.column,cursor.column+1);if(\"]\"==rightChar){var matching=session.$findOpeningBracket(\"]\",{column:cursor.column+1,row:cursor.row});if(null!==matching&&CstyleBehaviour.isAutoInsertedClosing(cursor,line,text))return CstyleBehaviour.popAutoInsertedClosing(),{text:\"\",selection:[1,1]}}}}),this.add(\"brackets\",\"deletion\",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&\"[\"==selected){var line=session.doc.getLine(range.start.row),rightChar=line.substring(range.start.column+1,range.start.column+2);if(\"]\"==rightChar)return range.end.column++,range}}),this.add(\"string_dquotes\",\"insertion\",function(state,action,editor,session,text){if('\"'==text||\"'\"==text){var quote=text,selection=editor.getSelectionRange(),selected=session.doc.getTextRange(selection);if(\"\"!==selected&&\"'\"!==selected&&'\"'!=selected&&editor.getWrapBehavioursEnabled())return{text:quote+selected+quote,selection:!1};var cursor=editor.getCursorPosition(),line=session.doc.getLine(cursor.row),leftChar=line.substring(cursor.column-1,cursor.column);if(\"\\\\\"==leftChar)return null;for(var token,tokens=session.getTokens(selection.start.row),col=0,quotepos=-1,x=0;tokens.length>x&&(token=tokens[x],\"string\"==token.type?quotepos=-1:0>quotepos&&(quotepos=token.value.indexOf(quote)),!(token.value.length+col>selection.start.column));x++)col+=tokens[x].value.length;if(!token||0>quotepos&&\"comment\"!==token.type&&(\"string\"!==token.type||selection.start.column!==token.value.length+col-1&&token.value.lastIndexOf(quote)===token.value.length-1)){if(!CstyleBehaviour.isSaneInsertion(editor,session))return;return{text:quote+quote,selection:[1,1]}}if(token&&\"string\"===token.type){var rightChar=line.substring(cursor.column,cursor.column+1);if(rightChar==quote)return{text:\"\",selection:[1,1]}}}}),this.add(\"string_dquotes\",\"deletion\",function(state,action,editor,session,range){var selected=session.doc.getTextRange(range);if(!range.isMultiLine()&&('\"'==selected||\"'\"==selected)){var line=session.doc.getLine(range.start.row),rightChar=line.substring(range.start.column+1,range.start.column+2);if(rightChar==selected)return range.end.column++,range}})};oop.inherits(CstyleBehaviour,Behaviour),exports.CstyleBehaviour=CstyleBehaviour}),ace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"],function(acequire,exports){var oop=acequire(\"../../lib/oop\");acequire(\"../../range\").Range;var BaseFoldMode=acequire(\"./fold_mode\").FoldMode,FoldMode=exports.FoldMode=function(commentRegex){commentRegex&&(this.foldingStartMarker=RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/,\"|\"+commentRegex.start)),this.foldingStopMarker=RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/,\"|\"+commentRegex.end)))};oop.inherits(FoldMode,BaseFoldMode),function(){this.foldingStartMarker=/(\\{|\\[)[^\\}\\]]*$|^\\s*(\\/\\*)/,this.foldingStopMarker=/^[^\\[\\{]*(\\}|\\])|^[\\s\\*]*(\\*\\/)/,this.getFoldWidgetRange=function(session,foldStyle,row){var line=session.getLine(row),match=line.match(this.foldingStartMarker);if(match){var i=match.index;return match[1]?this.openingBracketBlock(session,match[1],row,i):session.getCommentFoldRange(row,i+match[0].length,1)}if(\"markbeginend\"===foldStyle){var match=line.match(this.foldingStopMarker);if(match){var i=match.index+match[0].length;return match[1]?this.closingBracketBlock(session,match[1],row,i):session.getCommentFoldRange(row,i,-1)}}}}.call(FoldMode.prototype)})})()},{\"../worker/javascript\":19}],11:[function(require,module){\"use strict\";var ace=require(\"brace\");require(\"brace/mode/javascript\"),require(\"brace/theme/monokai\"),module.exports=function(container,src){var editorContainer=document.createElement(\"div\");editorContainer.setAttribute(\"class\",\"scriptie-talkie-editor\"),container.appendChild(editorContainer);var editor=ace.edit(editorContainer),session=editor.getSession();return editor.setTheme(\"ace/theme/monokai\"),session.setMode(\"ace/mode/javascript\"),session.$tabSize=2,editor.$highlightActiveLine=!1,editor.setValue(src),{container:editorContainer,editor:editor}}},{\"brace/mode/javascript\":18,\"brace/theme/monokai\":17,brace:20}],12:[function(require,module){\"use strict\";function appendTerminal(terminalContainer,lines){var terminal=hypernal();return lines&&lines.forEach(function(line){terminal.writeln(line)}),terminal.appendTo(terminalContainer),terminal}function appendTerminalAndGetHeight(terminalContainer,lines){var terminal=appendTerminal(terminalContainer,lines),height=terminal.element.clientHeight;return{terminal:terminal,height:height}}var hypernal=require(\"hypernal\");module.exports=function(container,opts){opts=opts||{};var height,terminal,terminalContainer=document.createElement(\"div\");if(terminalContainer.setAttribute(\"class\",\"scriptie-talkie-terminal\"),container.appendChild(terminalContainer),opts.lines){var appended=appendTerminalAndGetHeight(terminalContainer,opts.lines);terminal=appended.terminal,height=appended.height}else terminal=appendTerminal(terminalContainer);return{container:terminalContainer,terminal:terminal,height:height}}},{hypernal:21}],13:[function(require,module){\"use strict\";var scriptieTalkie=require(\"scriptie-talkie\");module.exports=function(script,writeln){var lines=[];if(writeln=writeln||function(){},!script.trim().length)return lines;try{lines=scriptieTalkie(script),lines.forEach(function(line){writeln(line)})}catch(e){if(console.log(e.stack),console.error(\"\"+e),e instanceof ReferenceError&&/Trying to access object from destroyed plug-in/.test(e.message)){var msg=\"Looks like your iPad Safari browser doesn't like what scriptie talkie is doing.\\nPlease try another device and/or browser, i.e. chrome works everywhere, even on iPad.\";writeln(msg)}else e.inner?(writeln(\"unable to parse the current code, looks like you have an error on: \"),writeln(\"line: \"+e.inner.lineNumber+\" column: \"+e.inner.column)):(writeln(\"\"+e),writeln(e.stack))}return lines}},{\"scriptie-talkie\":22}],19:[function(require,module){(function(){module.exports.id=\"ace/mode/javascript_worker\",module.exports.src='\"no use strict\";(function(window){void 0!==window.window&&window.document||(window.console={log:function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:msgs})},error:function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:msgs})}},window.window=window,window.ace=window,window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\"!\")){var chunks=moduleName.split(\"!\");return normalizeModule(parentId,chunks[0])+\"!\"+normalizeModule(parentId,chunks[1])}if(\".\"==moduleName.charAt(0)){var base=parentId.split(\"/\").slice(0,-1).join(\"/\");for(moduleName=base+\"/\"+moduleName;-1!==moduleName.indexOf(\".\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/\\\\/\\\\.\\\\//,\"/\").replace(/[^\\\\/]+\\\\/\\\\.\\\\.\\\\//,\"\")}}return moduleName},window.acequire=function(parentId,id){if(!id.charAt)throw Error(\"worker.js acequire() accepts only (parentId, id) as arguments\");id=normalizeModule(parentId,id);var module=acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;var chunks=id.split(\"/\");chunks[0]=acequire.tlns[chunks[0]]||chunks[0];var path=chunks.join(\"/\")+\".js\";return acequire.id=id,importScripts(path),acequire(parentId,id)},acequire.modules={},acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,\"string\"!=typeof id&&(deps=id,id=acequire.id)):1==arguments.length&&(factory=id,id=acequire.id),0!==id.indexOf(\"text!\")){var req=function(deps,factory){return acequire(id,deps,factory)};acequire.modules[id]={factory:function(){var module={exports:{}},returnExports=factory(req,module.exports,module);return returnExports&&(module.exports=returnExports),module}}}},window.initBaseUrls=function initBaseUrls(topLevelNamespaces){acequire.tlns=topLevelNamespaces},window.initSender=function initSender(){var EventEmitter=acequire(null,\"ace/lib/event_emitter\").EventEmitter,oop=acequire(null,\"ace/lib/oop\"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:\"call\",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:\"event\",name:name,data:data})}}.call(Sender.prototype),new Sender},window.main=null,window.sender=null,window.onmessage=function(e){var msg=e.data;if(msg.command){if(!main[msg.command])throw Error(\"Unknown command:\"+msg.command);main[msg.command].apply(main,msg.args)}else if(msg.init){initBaseUrls(msg.tlns),acequire(null,\"ace/lib/fixoldbrowsers\"),sender=initSender();var clazz=acequire(null,msg.module)[msg.classname];main=new clazz(sender)}else msg.event&&sender&&sender._emit(msg.event,msg.data)})})(this),ace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/regexp\",\"ace/lib/es5-shim\"],function(acequire){acequire(\"./regexp\"),acequire(\"./es5-shim\")}),ace.define(\"ace/lib/regexp\",[\"require\",\"exports\",\"module\"],function(){function getNativeFlags(regex){return(regex.global?\"g\":\"\")+(regex.ignoreCase?\"i\":\"\")+(regex.multiline?\"m\":\"\")+(regex.extended?\"x\":\"\")+(regex.sticky?\"y\":\"\")}function indexOf(array,item,from){if(Array.prototype.indexOf)return array.indexOf(item,from);for(var i=from||0;array.length>i;i++)if(array[i]===item)return i;return-1}var real={exec:RegExp.prototype.exec,test:RegExp.prototype.test,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split},compliantExecNpcg=void 0===real.exec.call(/()??/,\"\")[1],compliantLastIndexIncrement=function(){var x=/^/g;return real.test.call(x,\"\"),!x.lastIndex}();compliantLastIndexIncrement&&compliantExecNpcg||(RegExp.prototype.exec=function(str){var name,r2,match=real.exec.apply(this,arguments);if(\"string\"==typeof str&&match){if(!compliantExecNpcg&&match.length>1&&indexOf(match,\"\")>-1&&(r2=RegExp(this.source,real.replace.call(getNativeFlags(this),\"g\",\"\")),real.replace.call(str.slice(match.index),r2,function(){for(var i=1;arguments.length-2>i;i++)void 0===arguments[i]&&(match[i]=void 0)})),this._xregexp&&this._xregexp.captureNames)for(var i=1;match.length>i;i++)name=this._xregexp.captureNames[i-1],name&&(match[name]=match[i]);!compliantLastIndexIncrement&&this.global&&!match[0].length&&this.lastIndex>match.index&&this.lastIndex--}return match},compliantLastIndexIncrement||(RegExp.prototype.test=function(str){var match=real.exec.call(this,str);return match&&this.global&&!match[0].length&&this.lastIndex>match.index&&this.lastIndex--,!!match}))}),ace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\"sentinel\",{}),\"sentinel\"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\"function\"!=typeof target)throw new TypeError(\"Function.prototype.bind called on incompatible \"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\"__defineGetter__\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\"XXX\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\"[object Array]\"==_toString(obj)});var boxedString=Object(\"a\"),splitString=\"a\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduce of empty array with no initial value\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\"reduce of empty array with no initial value\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduceRight of empty array with no initial value\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\"reduceRight of empty array with no initial value\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(object,property){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != \\'object\\'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\"undefined\"==typeof document||doesDefinePropertyWork(document.createElement(\"div\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\"Property description must be an object: \",ERR_NON_OBJECT_TARGET=\"Object.defineProperty called on non-object: \",ERR_ACCESSORS_NOT_SUPPORTED=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(object,property,descriptor){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\"object\"!=typeof descriptor&&\"function\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\"value\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\"get\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\"set\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\"function\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\"\";owns(object,name);)name+=\"?\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(\"Object.keys called on a non-object\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\"\t\\\\n\u000b\\\\f\\\\r įš€į Žā€€ā€ā€‚ā€ƒā€„ā€…ā€†ā€‡ā€ˆā€‰ā€Šā€ÆāŸć€€\\\\u2028\\\\u2029\";if(!String.prototype.trim||ws.trim()){ws=\"[\"+ws+\"]\";var trimBeginRegexp=RegExp(\"^\"+ws+ws+\"*\"),trimEndRegexp=RegExp(ws+ws+\"*$\");String.prototype.trim=function(){return(this+\"\").replace(trimBeginRegexp,\"\").replace(trimEndRegexp,\"\")}}var toObject=function(o){if(null==o)throw new TypeError(\"can\\'t convert \"+o+\" to object\");return Object(o)}}),ace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\"object\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault);for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners)for(var i=0;listeners.length>i;i++)listeners[i](e,this)},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){if(this._defaultHandlers=this._defaultHandlers||{},this._defaultHandlers[eventName])throw Error(\"The default handler for \\'\"+eventName+\"\\' is already set\");this._defaultHandlers[eventName]=callback},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\"unshift\":\"push\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(acequire,exports){exports.inherits=function(){var tempCtor=function(){};return function(ctor,superCtor){tempCtor.prototype=superCtor.prototype,ctor.super_=superCtor.prototype,ctor.prototype=new tempCtor,ctor.prototype.constructor=ctor}}(),exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define(\"ace/mode/javascript_worker\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/worker/mirror\",\"ace/mode/javascript/jshint\"],function(acequire,exports,module){function startRegex(arr){return RegExp(\"^(\"+arr.join(\"|\")+\")\")}var oop=acequire(\"../lib/oop\"),Mirror=acequire(\"../worker/mirror\").Mirror,lint=acequire(\"./javascript/jshint\").JSHINT,disabledWarningsRe=startRegex([\"Bad for in variable \\'(.+)\\'.\",\\'Missing \"use strict\"\\']),errorsRe=startRegex([\"Unexpected\",\"Expected \",\"Confusing (plus|minus)\",\"\\\\\\\\{a\\\\\\\\} unterminated regular expression\",\"Unclosed \",\"Unmatched \",\"Unbegun comment\",\"Bad invocation\",\"Missing space after\",\"Missing operator at\"]),infoRe=startRegex([\"Expected an assignment\",\"Bad escapement of EOL\",\"Unexpected comma\",\"Unexpected space\",\"Missing radix parameter.\",\"A leading decimal point can\",\"\\\\\\\\[\\'{a}\\'\\\\\\\\] is better written in dot notation.\",\"\\'{a}\\' used out of scope\"]),JavaScriptWorker=exports.JavaScriptWorker=function(sender){Mirror.call(this,sender),this.setTimeout(500),this.setOptions()};oop.inherits(JavaScriptWorker,Mirror),function(){this.setOptions=function(options){this.options=options||{es5:!0,esnext:!0,devel:!0,browser:!0,node:!0,laxcomma:!0,laxbreak:!0,lastsemic:!0,onevar:!1,passfail:!1,maxerr:100,expr:!0,multistr:!0,globalstrict:!0},this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.changeOptions=function(newOptions){oop.mixin(this.options,newOptions),this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.isValidJS=function(str){try{eval(\"throw 0;\"+str)}catch(e){if(0===e)return!0}return!1},this.onUpdate=function(){var value=this.doc.getValue();if(value=value.replace(/^#!.*\\\\n/,\"\\\\n\"),!value)return this.sender.emit(\"jslint\",[]),void 0;var errors=[],maxErrorLevel=this.isValidJS(value)?\"warning\":\"error\";lint(value,this.options);for(var results=lint.errors,errorAdded=!1,i=0;results.length>i;i++){var error=results[i];if(error){var raw=error.raw,type=\"warning\";if(\"Missing semicolon.\"==raw){var str=error.evidence.substr(error.character);str=str.charAt(str.search(/\\\\S/)),\"error\"==maxErrorLevel&&str&&/[\\\\w\\\\d{([\\'\"]/.test(str)?(error.reason=\\'Missing \";\" before statement\\',type=\"error\"):type=\"info\"}else{if(disabledWarningsRe.test(raw))continue;infoRe.test(raw)?type=\"info\":errorsRe.test(raw)?(errorAdded=!0,type=maxErrorLevel):\"\\'{a}\\' is not defined.\"==raw?type=\"warning\":\"\\'{a}\\' is defined but never used.\"==raw&&(type=\"info\")}errors.push({row:error.line-1,column:error.character-1,text:error.reason,type:type,raw:raw})}}this.sender.emit(\"jslint\",errors)}}.call(JavaScriptWorker.prototype)}),ace.define(\"ace/worker/mirror\",[\"require\",\"exports\",\"module\",\"ace/document\",\"ace/lib/lang\"],function(acequire,exports){var Document=acequire(\"../document\").Document,lang=acequire(\"../lib/lang\"),Mirror=exports.Mirror=function(sender){this.sender=sender;var doc=this.doc=new Document(\"\"),deferredUpdate=this.deferredUpdate=lang.delayedCall(this.onUpdate.bind(this)),_self=this;sender.on(\"change\",function(e){doc.applyDeltas([e.data]),deferredUpdate.schedule(_self.$timeout)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){}}).call(Mirror.prototype)}),ace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Anchor=acequire(\"./anchor\").Anchor,Document=function(text){this.$lines=[],0==text.length?this.$lines=[\"\"]:Array.isArray(text)?this.insertLines(0,text):this.insert({row:0,column:0},text)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength();this.remove(new Range(0,0,len,this.getLine(len-1).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0==\"aaa\".split(/a/).length?function(text){return text.replace(/\\\\r\\\\n|\\\\r/g,\"\\\\n\").split(\"\\\\n\")}:function(text){return text.split(/\\\\r\\\\n|\\\\r|\\\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\\\r\\\\n|\\\\r|\\\\n)/m);this.$autoNewLine=match?match[1]:\"\\\\n\"},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\"windows\":return\"\\\\r\\\\n\";case\"unix\":return\"\\\\n\";default:return this.$autoNewLine}},this.$autoNewLine=\"\\\\n\",this.$newLineMode=\"auto\",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode)},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\"\\\\r\\\\n\"==text||\"\\\\r\"==text||\"\\\\n\"==text},this.getLine=function(row){return this.$lines[row]||\"\"},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){if(range.start.row==range.end.row)return this.$lines[range.start.row].substring(range.start.column,range.end.column);var lines=this.getLines(range.start.row+1,range.end.row-1);return lines.unshift((this.$lines[range.start.row]||\"\").substring(range.start.column)),lines.push((this.$lines[range.end.row]||\"\").substring(0,range.end.column)),lines.join(this.getNewLineCharacter())},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):0>position.row&&(position.row=0),position},this.insert=function(position,text){if(!text||0===text.length)return position;position=this.$clipPosition(position),1>=this.getLength()&&this.$detectNewLine(text);var lines=this.$split(text),firstLine=lines.splice(0,1)[0],lastLine=0==lines.length?null:lines.splice(lines.length-1,1)[0];return position=this.insertInLine(position,firstLine),null!==lastLine&&(position=this.insertNewLine(position),position=this.insertLines(position.row,lines),position=this.insertInLine(position,lastLine||\"\")),position},this.insertLines=function(row,lines){if(0==lines.length)return{row:row,column:0};if(lines.length>65535){var end=this.insertLines(row,lines.slice(65535));lines=lines.slice(0,65535)}var args=[row,0];args.push.apply(args,lines),this.$lines.splice.apply(this.$lines,args);var range=new Range(row,0,row+lines.length,0),delta={action:\"insertLines\",range:range,lines:lines};return this._emit(\"change\",{data:delta}),end||range.end},this.insertNewLine=function(position){position=this.$clipPosition(position);var line=this.$lines[position.row]||\"\";this.$lines[position.row]=line.substring(0,position.column),this.$lines.splice(position.row+1,0,line.substring(position.column,line.length));var end={row:position.row+1,column:0},delta={action:\"insertText\",range:Range.fromPoints(position,end),text:this.getNewLineCharacter()};return this._emit(\"change\",{data:delta}),end},this.insertInLine=function(position,text){if(0==text.length)return position;var line=this.$lines[position.row]||\"\";this.$lines[position.row]=line.substring(0,position.column)+text+line.substring(position.column);var end={row:position.row,column:position.column+text.length},delta={action:\"insertText\",range:Range.fromPoints(position,end),text:text};return this._emit(\"change\",{data:delta}),end},this.remove=function(range){if(range.start=this.$clipPosition(range.start),range.end=this.$clipPosition(range.end),range.isEmpty())return range.start;var firstRow=range.start.row,lastRow=range.end.row;if(range.isMultiLine()){var firstFullRow=0==range.start.column?firstRow:firstRow+1,lastFullRow=lastRow-1;range.end.column>0&&this.removeInLine(lastRow,0,range.end.column),lastFullRow>=firstFullRow&&this.removeLines(firstFullRow,lastFullRow),firstFullRow!=firstRow&&(this.removeInLine(firstRow,range.start.column,this.getLine(firstRow).length),this.removeNewLine(range.start.row))}else this.removeInLine(firstRow,range.start.column,range.end.column);return range.start},this.removeInLine=function(row,startColumn,endColumn){if(startColumn!=endColumn){var range=new Range(row,startColumn,row,endColumn),line=this.getLine(row),removed=line.substring(startColumn,endColumn),newLine=line.substring(0,startColumn)+line.substring(endColumn,line.length);this.$lines.splice(row,1,newLine);var delta={action:\"removeText\",range:range,text:removed};return this._emit(\"change\",{data:delta}),range.start}},this.removeLines=function(firstRow,lastRow){var range=new Range(firstRow,0,lastRow+1,0),removed=this.$lines.splice(firstRow,lastRow-firstRow+1),delta={action:\"removeLines\",range:range,nl:this.getNewLineCharacter(),lines:removed};return this._emit(\"change\",{data:delta}),removed},this.removeNewLine=function(row){var firstLine=this.getLine(row),secondLine=this.getLine(row+1),range=new Range(row,firstLine.length,row+1,0),line=firstLine+secondLine;this.$lines.splice(row,2,line);var delta={action:\"removeText\",range:range,text:this.getNewLineCharacter()};this._emit(\"change\",{data:delta})},this.replace=function(range,text){if(0==text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;if(this.remove(range),text)var end=this.insert(range.start,text);else end=range.start;return end},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++){var delta=deltas[i],range=Range.fromPoints(delta.range.start,delta.range.end);\"insertLines\"==delta.action?this.insertLines(range.start.row,delta.lines):\"insertText\"==delta.action?this.insert(range.start,delta.text):\"removeLines\"==delta.action?this.removeLines(range.start.row,range.end.row-1):\"removeText\"==delta.action&&this.remove(range)}},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--){var delta=deltas[i],range=Range.fromPoints(delta.range.start,delta.range.end);\"insertLines\"==delta.action?this.removeLines(range.start.row,range.end.row-1):\"insertText\"==delta.action?this.remove(range):\"removeLines\"==delta.action?this.insertLines(range.start.row,delta.lines):\"removeText\"==delta.action&&this.insert(range.start,delta.text)}},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length;return index+newlineLength*i+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\"ace/range\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return\"Range: [\"+this.start.row+\"/\"+this.start.column+\"] -> [\"+this.end.row+\"/\"+this.end.column+\"]\"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){\"object\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)\\n},this.setEnd=function(row,column){\"object\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.document=doc,column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column),this.$onChange=this.onChange.bind(this),doc.on(\"change\",this.$onChange)};(function(){oop.implement(this,EventEmitter),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.onChange=function(e){var delta=e.data,range=delta.range;if(!(range.start.row==range.end.row&&range.start.row!=this.row||range.start.row>this.row||range.start.row==this.row&&range.start.column>this.column)){var row=this.row,column=this.column,start=range.start,end=range.end;\"insertText\"===delta.action?start.row===row&&column>=start.column?start.row===end.row?column+=end.column-start.column:(column-=start.column,row+=end.row-start.row):start.row!==end.row&&row>start.row&&(row+=end.row-start.row):\"insertLines\"===delta.action?row>=start.row&&(row+=end.row-start.row):\"removeText\"===delta.action?start.row===row&&column>start.column?column=end.column>=column?start.column:Math.max(0,column-(end.column-start.column)):start.row!==end.row&&row>start.row?(end.row===row&&(column=Math.max(0,column-end.column)+start.column),row-=end.row-start.row):end.row===row&&(row-=end.row-start.row,column=Math.max(0,column-end.column)+start.column):\"removeLines\"==delta.action&&row>=start.row&&(row>=end.row?row-=end.row-start.row:(row=start.row,column=0)),this.setPosition(row,column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._emit(\"change\",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener(\"change\",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(acequire,exports){exports.stringReverse=function(string){return string.split(\"\").reverse().join(\"\")},exports.stringRepeat=function(string,count){for(var result=\"\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\\\s\\\\s*/,trimEndRegexp=/\\\\s\\\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,\"\")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,\"\")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\"object\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function(obj){if(\"object\"!=typeof obj)return obj;var copy=obj.constructor();for(var key in obj)copy[key]=\"object\"==typeof obj[key]?this.deepCopy(obj[key]):obj[key];return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\\\]\\\\/\\\\\\\\])/g,\"\\\\\\\\$1\")},exports.escapeHTML=function(str){return str.replace(/&/g,\"&\").replace(/\"/g,\""\").replace(/\\'/g,\"'\").replace(/\u003C/g,\"<\")},exports.getMatchOffsets=function(string,regExp){var matches=[];return string.replace(regExp,function(str){matches.push({offset:arguments[arguments.length-2],length:str.length})}),matches},exports.deferredCall=function(fcn){var timer=null,callback=function(){timer=null,fcn()},deferred=function(timeout){return deferred.cancel(),timer=setTimeout(callback,timeout||0),deferred};return deferred.schedule=deferred,deferred.call=function(){return this.cancel(),fcn(),deferred},deferred.cancel=function(){return clearTimeout(timer),timer=null,deferred},deferred},exports.delayedCall=function(fcn,defaultTimeout){var timer=null,callback=function(){timer=null,fcn()},_self=function(timeout){timer&&clearTimeout(timer),timer=setTimeout(callback,timeout||defaultTimeout)};return _self.delay=_self,_self.schedule=function(timeout){null==timer&&(timer=setTimeout(callback,timeout||0))},_self.call=function(){this.cancel(),fcn()},_self.cancel=function(){timer&&clearTimeout(timer),timer=null},_self.isPending=function(){return timer},_self}}),ace.define(\"ace/mode/javascript/jshint\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var JSHINT=function(){function F(){}function is_own(object,name){return Object.prototype.hasOwnProperty.call(object,name)}function checkOption(name,t){void 0===valOptions[name]&&void 0===boolOptions[name]&&warning(\"Bad option: \\'\"+name+\"\\'.\",t)}function isString(obj){return\"[object String]\"===Object.prototype.toString.call(obj)}function isAlpha(str){return str>=\"a\"&&\"zļææ\">=str||str>=\"A\"&&\"Zļææ\">=str}function isDigit(str){return str>=\"0\"&&\"9\">=str}function isIdentifier(token,value){return token?token.identifier&&token.value===value?!0:!1:!1}function supplant(str,data){return str.replace(/\\\\{([^{}]*)\\\\}/g,function(a,b){var r=data[b];return\"string\"==typeof r||\"number\"==typeof r?r:a})}function combine(t,o){var n;for(n in o)is_own(o,n)&&!is_own(JSHINT.blacklist,n)&&(t[n]=o[n])}function updatePredefined(){Object.keys(JSHINT.blacklist).forEach(function(key){delete predefined[key]})}function assume(){option.couch&&combine(predefined,couch),option.rhino&&combine(predefined,rhino),option.prototypejs&&combine(predefined,prototypejs),option.node&&(combine(predefined,node),option.globalstrict=!0),option.devel&&combine(predefined,devel),option.dojo&&combine(predefined,dojo),option.browser&&combine(predefined,browser),option.nonstandard&&combine(predefined,nonstandard),option.jquery&&combine(predefined,jquery),option.mootools&&combine(predefined,mootools),option.worker&&combine(predefined,worker),option.wsh&&combine(predefined,wsh),option.esnext&&useESNextSyntax(),option.globalstrict&&option.strict!==!1&&(option.strict=!0),option.yui&&combine(predefined,yui)}function quit(message,line,chr){var percentage=Math.floor(100*(line/lines.length));throw{name:\"JSHintError\",line:line,character:chr,message:message+\" (\"+percentage+\"% scanned).\",raw:message}}function isundef(scope,m,t,a){return JSHINT.undefs.push([scope,m,t,a])}function warning(m,t,a,b,c,d){var ch,l,w;return t=t||nexttoken,\"(end)\"===t.id&&(t=token),l=t.line||0,ch=t.from||0,w={id:\"(error)\",raw:m,evidence:lines[l-1]||\"\",line:l,character:ch,scope:JSHINT.scope,a:a,b:b,c:c,d:d},w.reason=supplant(m,w),JSHINT.errors.push(w),option.passfail&&quit(\"Stopping. \",l,ch),warnings+=1,warnings>=option.maxerr&&quit(\"Too many errors.\",l,ch),w}function warningAt(m,l,ch,a,b,c,d){return warning(m,{line:l,from:ch},a,b,c,d)}function error(m,t,a,b,c,d){warning(m,t,a,b,c,d)}function errorAt(m,l,ch,a,b,c,d){return error(m,{line:l,from:ch},a,b,c,d)}function addInternalSrc(elem,src){var i;return i={id:\"(internal)\",elem:elem,value:src},JSHINT.internals.push(i),i}function addlabel(t,type,token){\"hasOwnProperty\"===t&&warning(\"\\'hasOwnProperty\\' is a really bad name.\"),\"exception\"===type&&is_own(funct[\"(context)\"],t)&&(funct[t]===!0||option.node||warning(\"Value of \\'{a}\\' may be overwritten in IE.\",nexttoken,t)),is_own(funct,t)&&!funct[\"(global)\"]&&(funct[t]===!0?option.latedef&&warning(\"\\'{a}\\' was used before it was defined.\",nexttoken,t):option.shadow||\"exception\"===type||warning(\"\\'{a}\\' is already defined.\",nexttoken,t)),funct[t]=type,token&&(funct[\"(tokens)\"][t]=token),funct[\"(global)\"]?(global[t]=funct,is_own(implied,t)&&(option.latedef&&warning(\"\\'{a}\\' was used before it was defined.\",nexttoken,t),delete implied[t])):scope[t]=funct}function doOption(){var b,obj,filter,t,tn,v,minus,nt=nexttoken,o=nt.value,quotmarkValue=option.quotmark,predef={};switch(o){case\"*/\":error(\"Unbegun comment.\");break;case\"/*members\":case\"/*member\":o=\"/*members\",membersOnly||(membersOnly={}),obj=membersOnly,option.quotmark=!1;break;case\"/*jshint\":case\"/*jslint\":obj=option,filter=boolOptions;break;case\"/*global\":obj=predef;break;default:error(\"What?\")}for(t=lex.token();;){minus=!1;for(var breakOuterLoop;;){if(\"special\"===t.type&&\"*/\"===t.value){breakOuterLoop=!0;break}if(\"(endline)\"!==t.id&&\",\"!==t.id)break;t=lex.token()}if(breakOuterLoop)break;if(\"/*global\"===o&&\"-\"===t.value&&(minus=!0,t=lex.token()),\"(string)\"!==t.type&&\"(identifier)\"!==t.type&&\"/*members\"!==o&&error(\"Bad option.\",t),v=lex.token(),\":\"===v.id){v=lex.token(),obj===membersOnly&&error(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",t,\"*/\",\":\"),\"/*jshint\"===o&&checkOption(t.value,t);var numericVals=[\"maxstatements\",\"maxparams\",\"maxdepth\",\"maxcomplexity\",\"maxerr\",\"maxlen\",\"indent\"];if(numericVals.indexOf(t.value)>-1&&(\"/*jshint\"===o||\"/*jslint\"===o))b=+v.value,(\"number\"!=typeof b||!isFinite(b)||0>=b||Math.floor(b)!==b)&&error(\"Expected a small integer and instead saw \\'{a}\\'.\",v,v.value),\"indent\"===t.value&&(obj.white=!0),obj[t.value]=b;else if(\"validthis\"===t.value)funct[\"(global)\"]?error(\"Option \\'validthis\\' can\\'t be used in a global scope.\"):\"true\"===v.value||\"false\"===v.value?obj[t.value]=\"true\"===v.value:error(\"Bad option value.\",v);else if(\"quotmark\"===t.value&&\"/*jshint\"===o)switch(v.value){case\"true\":obj.quotmark=!0;break;case\"false\":obj.quotmark=!1;break;case\"double\":case\"single\":obj.quotmark=v.value;break;default:error(\"Bad option value.\",v)}else\"true\"===v.value||\"false\"===v.value?(\"/*jslint\"===o?(tn=renamedOptions[t.value]||t.value,obj[tn]=\"true\"===v.value,void 0!==invertedOptions[tn]&&(obj[tn]=!obj[tn])):obj[t.value]=\"true\"===v.value,\"newcap\"===t.value&&(obj[\"(explicitNewcap)\"]=!0)):error(\"Bad option value.\",v);t=lex.token()}else(\"/*jshint\"===o||\"/*jslint\"===o)&&error(\"Missing option value.\",t),obj[t.value]=!1,\"/*global\"===o&&minus===!0&&(JSHINT.blacklist[t.value]=t.value,updatePredefined()),t=v}\"/*members\"===o&&(option.quotmark=quotmarkValue),combine(predefined,predef);for(var key in predef)is_own(predef,key)&&(declared[key]=nt);filter&&assume()}function peek(p){for(var t,i=p||0,j=0;i>=j;)t=lookahead[j],t||(t=lookahead[j]=lex.token()),j+=1;return t}function advance(id,t){switch(token.id){case\"(number)\":\".\"===nexttoken.id&&warning(\"A dot following a number can be confused with a decimal point.\",token);break;case\"-\":(\"-\"===nexttoken.id||\"--\"===nexttoken.id)&&warning(\"Confusing minusses.\");break;case\"+\":(\"+\"===nexttoken.id||\"++\"===nexttoken.id)&&warning(\"Confusing plusses.\")}for((\"(string)\"===token.type||token.identifier)&&(anonname=token.value),id&&nexttoken.id!==id&&(t?\"(end)\"===nexttoken.id?warning(\"Unmatched \\'{a}\\'.\",t,t.id):warning(\"Expected \\'{a}\\' to match \\'{b}\\' from line {c} and instead saw \\'{d}\\'.\",nexttoken,id,t.id,t.line,nexttoken.value):(\"(identifier)\"!==nexttoken.type||nexttoken.value!==id)&&warning(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",nexttoken,id,nexttoken.value)),prevtoken=token,token=nexttoken;;){if(nexttoken=lookahead.shift()||lex.token(),\"(end)\"===nexttoken.id||\"(error)\"===nexttoken.id)return;if(\"special\"===nexttoken.type)doOption();else if(\"(endline)\"!==nexttoken.id)break}}function expression(rbp,initial){var left,isArray=!1,isObject=!1;if(\"(end)\"===nexttoken.id&&error(\"Unexpected early end of program.\",token),advance(),initial&&(anonname=\"anonymous\",funct[\"(verb)\"]=token.value),initial===!0&&token.fud)left=token.fud();else{if(token.nud)left=token.nud();else{if(\"(number)\"===nexttoken.type&&\".\"===token.id)return warning(\"A leading decimal point can be confused with a dot: \\'.{a}\\'.\",token,nexttoken.value),advance(),token;error(\"Expected an identifier and instead saw \\'{a}\\'.\",token,token.id)}for(;nexttoken.lbp>rbp;)isArray=\"Array\"===token.value,isObject=\"Object\"===token.value,left&&(left.value||left.first&&left.first.value)&&(\"new\"!==left.value||left.first&&left.first.value&&\".\"===left.first.value)&&(isArray=!1,left.value!==token.value&&(isObject=!1)),advance(),isArray&&\"(\"===token.id&&\")\"===nexttoken.id&&warning(\"Use the array literal notation [].\",token),isObject&&\"(\"===token.id&&\")\"===nexttoken.id&&warning(\"Use the object literal notation {}.\",token),token.led?left=token.led(left):error(\"Expected an operator and instead saw \\'{a}\\'.\",token,token.id)}return left}function adjacent(left,right){left=left||token,right=right||nexttoken,option.white&&left.character!==right.from&&left.line===right.line&&(left.from+=left.character-left.from,warning(\"Unexpected space after \\'{a}\\'.\",left,left.value))}function nobreak(left,right){left=left||token,right=right||nexttoken,!option.white||left.character===right.from&&left.line===right.line||warning(\"Unexpected space before \\'{a}\\'.\",right,right.value)}function nospace(left,right){left=left||token,right=right||nexttoken,option.white&&!left.comment&&left.line===right.line&&adjacent(left,right)}function nonadjacent(left,right){if(option.white){if(left=left||token,right=right||nexttoken,\";\"===left.value&&\";\"===right.value)return;left.line===right.line&&left.character===right.from&&(left.from+=left.character-left.from,warning(\"Missing space after \\'{a}\\'.\",left,left.value))}}function nobreaknonadjacent(left,right){left=left||token,right=right||nexttoken,option.laxbreak||left.line===right.line?option.white&&(left=left||token,right=right||nexttoken,left.character===right.from&&(left.from+=left.character-left.from,warning(\"Missing space after \\'{a}\\'.\",left,left.value))):warning(\"Bad line breaking before \\'{a}\\'.\",right,right.id)}function indentation(bias){var i;option.white&&\"(end)\"!==nexttoken.id&&(i=indent+(bias||0),nexttoken.from!==i&&warning(\"Expected \\'{a}\\' to have an indentation at {b} instead at {c}.\",nexttoken,nexttoken.value,i,nexttoken.from))}function nolinebreak(t){t=t||token,t.line!==nexttoken.line&&warning(\"Line breaking error \\'{a}\\'.\",t,t.value)}function comma(){token.line!==nexttoken.line?option.laxcomma||(comma.first&&(warning(\"Comma warnings can be turned off with \\'laxcomma\\'\"),comma.first=!1),warning(\"Bad line breaking before \\'{a}\\'.\",token,nexttoken.id)):!token.comment&&token.character!==nexttoken.from&&option.white&&(token.from+=token.character-token.from,warning(\"Unexpected space after \\'{a}\\'.\",token,token.value)),advance(\",\"),nonadjacent(token,nexttoken)}function symbol(s,p){var x=syntax[s];return x&&\"object\"==typeof x||(syntax[s]=x={id:s,lbp:p,value:s}),x}function delim(s){return symbol(s,0)}function stmt(s,f){var x=delim(s);return x.identifier=x.reserved=!0,x.fud=f,x}function blockstmt(s,f){var x=stmt(s,f);return x.block=!0,x}function reserveName(x){var c=x.id.charAt(0);return(c>=\"a\"&&\"z\">=c||c>=\"A\"&&\"Z\">=c)&&(x.identifier=x.reserved=!0),x}function prefix(s,f){var x=symbol(s,150);return reserveName(x),x.nud=\"function\"==typeof f?f:function(){return this.right=expression(150),this.arity=\"unary\",(\"++\"===this.id||\"--\"===this.id)&&(option.plusplus?warning(\"Unexpected use of \\'{a}\\'.\",this,this.id):this.right.identifier&&!this.right.reserved||\".\"===this.right.id||\"[\"===this.right.id||warning(\"Bad operand.\",this)),this},x}function type(s,f){var x=delim(s);return x.type=s,x.nud=f,x}function reserve(s,f){var x=type(s,f);return x.identifier=x.reserved=!0,x}function reservevar(s,v){return reserve(s,function(){return\"function\"==typeof v&&v(this),this})}function infix(s,f,p,w){var x=symbol(s,p);return reserveName(x),x.led=function(left){return w||(nobreaknonadjacent(prevtoken,token),nonadjacent(token,nexttoken)),\"in\"===s&&\"!\"===left.id&&warning(\"Confusing use of \\'{a}\\'.\",left,\"!\"),\"function\"==typeof f?f(left,this):(this.left=left,this.right=expression(p),this)},x}function relation(s,f){var x=symbol(s,100);return x.led=function(left){nobreaknonadjacent(prevtoken,token),nonadjacent(token,nexttoken);var right=expression(100);return isIdentifier(left,\"NaN\")||isIdentifier(right,\"NaN\")?warning(\"Use the isNaN function to compare with NaN.\",this):f&&f.apply(this,[left,right]),\"!\"===left.id&&warning(\"Confusing use of \\'{a}\\'.\",left,\"!\"),\"!\"===right.id&&warning(\"Confusing use of \\'{a}\\'.\",right,\"!\"),this.left=left,this.right=right,this},x}function isPoorRelation(node){return node&&(\"(number)\"===node.type&&0===+node.value||\"(string)\"===node.type&&\"\"===node.value||\"null\"===node.type&&!option.eqnull||\"true\"===node.type||\"false\"===node.type||\"undefined\"===node.type)}function assignop(s){return symbol(s,20).exps=!0,infix(s,function(left,that){if(that.left=left,predefined[left.value]===!1&&scope[left.value][\"(global)\"]===!0?warning(\"Read only.\",left):left[\"function\"]&&warning(\"\\'{a}\\' is a function.\",left,left.value),left){if(option.esnext&&\"const\"===funct[left.value]&&warning(\"Attempting to override \\'{a}\\' which is a constant\",left,left.value),\".\"===left.id||\"[\"===left.id)return left.left&&\"arguments\"!==left.left.value||warning(\"Bad assignment.\",that),that.right=expression(19),that;if(left.identifier&&!left.reserved)return\"exception\"===funct[left.value]&&warning(\"Do not assign to the exception parameter.\",left),that.right=expression(19),that;left===syntax[\"function\"]&&warning(\"Expected an identifier in an assignment and instead saw a function invocation.\",token)}error(\"Bad assignment.\",that)},20)}function bitwise(s,f,p){var x=symbol(s,p);return reserveName(x),x.led=\"function\"==typeof f?f:function(left){return option.bitwise&&warning(\"Unexpected use of \\'{a}\\'.\",this,this.id),this.left=left,this.right=expression(p),this},x}function bitwiseassignop(s){return symbol(s,20).exps=!0,infix(s,function(left,that){return option.bitwise&&warning(\"Unexpected use of \\'{a}\\'.\",that,that.id),nonadjacent(prevtoken,token),nonadjacent(token,nexttoken),left?\".\"===left.id||\"[\"===left.id||left.identifier&&!left.reserved?(expression(19),that):(left===syntax[\"function\"]&&warning(\"Expected an identifier in an assignment, and instead saw a function invocation.\",token),that):(error(\"Bad assignment.\",that),void 0)},20)}function suffix(s){var x=symbol(s,150);return x.led=function(left){return option.plusplus?warning(\"Unexpected use of \\'{a}\\'.\",this,this.id):left.identifier&&!left.reserved||\".\"===left.id||\"[\"===left.id||warning(\"Bad operand.\",this),this.left=left,this},x}function optionalidentifier(fnparam){return nexttoken.identifier?(advance(),token.reserved&&!option.es5&&(fnparam&&\"undefined\"===token.value||warning(\"Expected an identifier and instead saw \\'{a}\\' (a reserved word).\",token,token.id)),token.value):void 0}function identifier(fnparam){var i=optionalidentifier(fnparam);return i?i:(\"function\"===token.id&&\"(\"===nexttoken.id?warning(\"Missing name in function declaration.\"):error(\"Expected an identifier and instead saw \\'{a}\\'.\",nexttoken,nexttoken.value),void 0)}function reachable(s){var t,i=0;if(\";\"===nexttoken.id&&!noreach)for(;;){if(t=peek(i),t.reach)return;if(\"(endline)\"!==t.id){if(\"function\"===t.id){if(!option.latedef)break;warning(\"Inner functions should be listed at the top of the outer function.\",t);break}warning(\"Unreachable \\'{a}\\' after \\'{b}\\'.\",t,t.value,s);break}i+=1}}function statement(noindent){var r,i=indent,s=scope,t=nexttoken;if(\";\"===t.id)return advance(\";\"),void 0;if(t.identifier&&!t.reserved&&\":\"===peek().id&&(advance(),advance(\":\"),scope=Object.create(s),addlabel(t.value,\"label\"),nexttoken.labelled||\"{\"===nexttoken.value||warning(\"Label \\'{a}\\' on {b} statement.\",nexttoken,t.value,nexttoken.value),jx.test(t.value+\":\")&&warning(\"Label \\'{a}\\' looks like a javascript url.\",t,t.value),nexttoken.label=t.value,t=nexttoken),\"{\"===t.id)return block(!0,!0),void 0;if(noindent||indentation(),r=expression(0,!0),!t.block){if(option.expr||r&&r.exps?option.nonew&&\"(\"===r.id&&\"new\"===r.left.id&&warning(\"Do not use \\'new\\' for side effects.\",t):warning(\"Expected an assignment or function call and instead saw an expression.\",token),\",\"===nexttoken.id)return comma();\";\"!==nexttoken.id?option.asi||option.lastsemic&&\"}\"===nexttoken.id&&nexttoken.line===token.line||warningAt(\"Missing semicolon.\",token.line,token.character):(adjacent(token,nexttoken),advance(\";\"),nonadjacent(token,nexttoken))}return indent=i,scope=s,r}function statements(startLine){for(var p,a=[];!nexttoken.reach&&\"(end)\"!==nexttoken.id;)\";\"===nexttoken.id?(p=peek(),p&&\"(\"===p.id||warning(\"Unnecessary semicolon.\"),advance(\";\")):a.push(statement(startLine===nexttoken.line));return a}function directives(){for(var i,p,pn;\"(string)\"===nexttoken.id;){if(p=peek(0),\"(endline)\"===p.id){i=1;do pn=peek(i),i+=1;while(\"(endline)\"===pn.id);if(\";\"!==pn.id){if(\"(string)\"!==pn.id&&\"(number)\"!==pn.id&&\"(regexp)\"!==pn.id&&pn.identifier!==!0&&\"}\"!==pn.id)break;warning(\"Missing semicolon.\",nexttoken)}else p=pn}else if(\"}\"===p.id)warning(\"Missing semicolon.\",p);else if(\";\"!==p.id)break;indentation(),advance(),directive[token.value]&&warning(\\'Unnecessary directive \"{a}\".\\',token,token.value),\"use strict\"===token.value&&(option[\"(explicitNewcap)\"]||(option.newcap=!0),option.undef=!0),directive[token.value]=!0,\";\"===p.id&&advance(\";\")}}function block(ordinary,stmt,isfunc){var a,m,t,line,d,b=inblock,old_indent=indent,s=scope;inblock=ordinary,ordinary&&option.funcscope||(scope=Object.create(scope)),nonadjacent(token,nexttoken),t=nexttoken;var metrics=funct[\"(metrics)\"];if(metrics.nestedBlockDepth+=1,metrics.verifyMaxNestedBlockDepthPerFunction(),\"{\"===nexttoken.id){if(advance(\"{\"),line=token.line,\"}\"!==nexttoken.id){for(indent+=option.indent;!ordinary&&nexttoken.from>indent;)indent+=option.indent;if(isfunc){m={};for(d in directive)is_own(directive,d)&&(m[d]=directive[d]);directives(),option.strict&&funct[\"(context)\"][\"(global)\"]&&(m[\"use strict\"]||directive[\"use strict\"]||warning(\\'Missing \"use strict\" statement.\\'))}a=statements(line),metrics.statementCount+=a.length,isfunc&&(directive=m),indent-=option.indent,line!==nexttoken.line&&indentation()}else line!==nexttoken.line&&indentation();advance(\"}\",t),indent=old_indent}else ordinary?((!stmt||option.curly)&&warning(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",nexttoken,\"{\",nexttoken.value),noreach=!0,indent+=option.indent,a=[statement(nexttoken.line===token.line)],indent-=option.indent,noreach=!1):error(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",nexttoken,\"{\",nexttoken.value);return funct[\"(verb)\"]=null,ordinary&&option.funcscope||(scope=s),inblock=b,!ordinary||!option.noempty||a&&0!==a.length||warning(\"Empty block.\"),metrics.nestedBlockDepth-=1,a}function countMember(m){membersOnly&&\"boolean\"!=typeof membersOnly[m]&&warning(\"Unexpected /*member \\'{a}\\'.\",token,m),\"number\"==typeof member[m]?member[m]+=1:member[m]=1}function note_implied(token){var name=token.value,line=token.line,a=implied[name];\"function\"==typeof a&&(a=!1),a?a[a.length-1]!==line&&a.push(line):(a=[line],implied[name]=a)}function property_name(){var id=optionalidentifier(!0);return id||(\"(string)\"===nexttoken.id?(id=nexttoken.value,advance()):\"(number)\"===nexttoken.id&&(id=\"\"+nexttoken.value,advance())),id}function functionparams(){var ident,next=nexttoken,params=[];if(advance(\"(\"),nospace(),\")\"===nexttoken.id)return advance(\")\"),void 0;for(;;){if(ident=identifier(!0),params.push(ident),addlabel(ident,\"unused\",token),\",\"!==nexttoken.id)return advance(\")\",next),nospace(prevtoken,token),params;comma()}}function doFunction(name,statement){var f,oldOption=option,oldScope=scope;return option=Object.create(option),scope=Object.create(scope),funct={\"(name)\":name||\\'\"\\'+anonname+\\'\"\\',\"(line)\":nexttoken.line,\"(character)\":nexttoken.character,\"(context)\":funct,\"(breakage)\":0,\"(loopage)\":0,\"(metrics)\":createMetrics(nexttoken),\"(scope)\":scope,\"(statement)\":statement,\"(tokens)\":{}},f=funct,token.funct=funct,functions.push(funct),name&&addlabel(name,\"function\"),funct[\"(params)\"]=functionparams(),funct[\"(metrics)\"].verifyMaxParametersPerFunction(funct[\"(params)\"]),block(!1,!1,!0),funct[\"(metrics)\"].verifyMaxStatementsPerFunction(),funct[\"(metrics)\"].verifyMaxComplexityPerFunction(),scope=oldScope,option=oldOption,funct[\"(last)\"]=token.line,funct[\"(lastcharacter)\"]=token.character,funct=funct[\"(context)\"],f}function createMetrics(functionStartToken){return{statementCount:0,nestedBlockDepth:-1,ComplexityCount:1,verifyMaxStatementsPerFunction:function(){if(option.maxstatements&&this.statementCount>option.maxstatements){var message=\"Too many statements per function (\"+this.statementCount+\").\";warning(message,functionStartToken)}},verifyMaxParametersPerFunction:function(params){if(params=params||[],option.maxparams&¶ms.length>option.maxparams){var message=\"Too many parameters per function (\"+params.length+\").\";warning(message,functionStartToken)}},verifyMaxNestedBlockDepthPerFunction:function(){if(option.maxdepth&&this.nestedBlockDepth>0&&this.nestedBlockDepth===option.maxdepth+1){var message=\"Blocks are nested too deeply (\"+this.nestedBlockDepth+\").\";warning(message)}},verifyMaxComplexityPerFunction:function(){var max=option.maxcomplexity,cc=this.ComplexityCount;if(max&&cc>max){var message=\"Cyclomatic complexity is too high per function (\"+cc+\").\";warning(message,functionStartToken)}}}}function increaseComplexityCount(){funct[\"(metrics)\"].ComplexityCount+=1}function jsonValue(){function jsonObject(){var o={},t=nexttoken;if(advance(\"{\"),\"}\"!==nexttoken.id)for(;;){if(\"(end)\"===nexttoken.id)error(\"Missing \\'}\\' to match \\'{\\' from line {a}.\",nexttoken,t.line);else{if(\"}\"===nexttoken.id){warning(\"Unexpected comma.\",token);break}\",\"===nexttoken.id?error(\"Unexpected comma.\",nexttoken):\"(string)\"!==nexttoken.id&&warning(\"Expected a string and instead saw {a}.\",nexttoken,nexttoken.value)}if(o[nexttoken.value]===!0?warning(\"Duplicate key \\'{a}\\'.\",nexttoken,nexttoken.value):\"__proto__\"===nexttoken.value&&!option.proto||\"__iterator__\"===nexttoken.value&&!option.iterator?warning(\"The \\'{a}\\' key may produce unexpected results.\",nexttoken,nexttoken.value):o[nexttoken.value]=!0,advance(),advance(\":\"),jsonValue(),\",\"!==nexttoken.id)break;advance(\",\")}advance(\"}\")}function jsonArray(){var t=nexttoken;if(advance(\"[\"),\"]\"!==nexttoken.id)for(;;){if(\"(end)\"===nexttoken.id)error(\"Missing \\']\\' to match \\'[\\' from line {a}.\",nexttoken,t.line);else{if(\"]\"===nexttoken.id){warning(\"Unexpected comma.\",token);break}\",\"===nexttoken.id&&error(\"Unexpected comma.\",nexttoken)}if(jsonValue(),\",\"!==nexttoken.id)break;advance(\",\")}advance(\"]\")}switch(nexttoken.id){case\"{\":jsonObject();break;case\"[\":jsonArray();break;case\"true\":case\"false\":case\"null\":case\"(number)\":case\"(string)\":advance();break;case\"-\":advance(\"-\"),token.character!==nexttoken.from&&warning(\"Unexpected space after \\'-\\'.\",token),adjacent(token,nexttoken),advance(\"(number)\");break;default:error(\"Expected a JSON value.\",nexttoken)}}var anonname,declared,funct,functions,global,implied,inblock,indent,jsonmode,lines,lookahead,member,membersOnly,nexttoken,noreach,option,predefined,prereg,prevtoken,quotmark,scope,stack,directive,tab,token,unuseds,urls,useESNextSyntax,warnings,ax,cx,tx,nx,nxg,lx,ix,jx,ft,bang={\"\u003C\":!0,\"\u003C=\":!0,\"==\":!0,\"===\":!0,\"!==\":!0,\"!=\":!0,\">\":!0,\">=\":!0,\"+\":!0,\"-\":!0,\"*\":!0,\"/\":!0,\"%\":!0},boolOptions={asi:!0,bitwise:!0,boss:!0,browser:!0,camelcase:!0,couch:!0,curly:!0,debug:!0,devel:!0,dojo:!0,eqeqeq:!0,eqnull:!0,es5:!0,esnext:!0,evil:!0,expr:!0,forin:!0,funcscope:!0,globalstrict:!0,immed:!0,iterator:!0,jquery:!0,lastsemic:!0,latedef:!0,laxbreak:!0,laxcomma:!0,loopfunc:!0,mootools:!0,multistr:!0,newcap:!0,noarg:!0,node:!0,noempty:!0,nonew:!0,nonstandard:!0,nomen:!0,onevar:!0,onecase:!0,passfail:!0,plusplus:!0,proto:!0,prototypejs:!0,regexdash:!0,regexp:!0,rhino:!0,undef:!0,unused:!0,scripturl:!0,shadow:!0,smarttabs:!0,strict:!0,sub:!0,supernew:!0,trailing:!0,validthis:!0,withstmt:!0,white:!0,worker:!0,wsh:!0,yui:!0},valOptions={maxlen:!1,indent:!1,maxerr:!1,predef:!1,quotmark:!1,scope:!1,maxstatements:!1,maxdepth:!1,maxparams:!1,maxcomplexity:!1},invertedOptions={bitwise:!0,forin:!0,newcap:!0,nomen:!0,plusplus:!0,regexp:!0,undef:!0,white:!0,eqeqeq:!0,onevar:!0},renamedOptions={eqeq:\"eqeqeq\",vars:\"onevar\",windows:\"wsh\"},browser={ArrayBuffer:!1,ArrayBufferView:!1,Audio:!1,Blob:!1,addEventListener:!1,applicationCache:!1,atob:!1,blur:!1,btoa:!1,clearInterval:!1,clearTimeout:!1,close:!1,closed:!1,DataView:!1,DOMParser:!1,defaultStatus:!1,document:!1,event:!1,FileReader:!1,Float32Array:!1,Float64Array:!1,FormData:!1,focus:!1,frames:!1,getComputedStyle:!1,HTMLElement:!1,HTMLAnchorElement:!1,HTMLBaseElement:!1,HTMLBlockquoteElement:!1,HTMLBodyElement:!1,HTMLBRElement:!1,HTMLButtonElement:!1,HTMLCanvasElement:!1,HTMLDirectoryElement:!1,HTMLDivElement:!1,HTMLDListElement:!1,HTMLFieldSetElement:!1,HTMLFontElement:!1,HTMLFormElement:!1,HTMLFrameElement:!1,HTMLFrameSetElement:!1,HTMLHeadElement:!1,HTMLHeadingElement:!1,HTMLHRElement:!1,HTMLHtmlElement:!1,HTMLIFrameElement:!1,HTMLImageElement:!1,HTMLInputElement:!1,HTMLIsIndexElement:!1,HTMLLabelElement:!1,HTMLLayerElement:!1,HTMLLegendElement:!1,HTMLLIElement:!1,HTMLLinkElement:!1,HTMLMapElement:!1,HTMLMenuElement:!1,HTMLMetaElement:!1,HTMLModElement:!1,HTMLObjectElement:!1,HTMLOListElement:!1,HTMLOptGroupElement:!1,HTMLOptionElement:!1,HTMLParagraphElement:!1,HTMLParamElement:!1,HTMLPreElement:!1,HTMLQuoteElement:!1,HTMLScriptElement:!1,HTMLSelectElement:!1,HTMLStyleElement:!1,HTMLTableCaptionElement:!1,HTMLTableCellElement:!1,HTMLTableColElement:!1,HTMLTableElement:!1,HTMLTableRowElement:!1,HTMLTableSectionElement:!1,HTMLTextAreaElement:!1,HTMLTitleElement:!1,HTMLUListElement:!1,HTMLVideoElement:!1,history:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Image:!1,length:!1,localStorage:!1,location:!1,MessageChannel:!1,MessageEvent:!1,MessagePort:!1,moveBy:!1,moveTo:!1,MutationObserver:!1,name:!1,Node:!1,NodeFilter:!1,navigator:!1,onbeforeunload:!0,onblur:!0,onerror:!0,onfocus:!0,onload:!0,onresize:!0,onunload:!0,open:!1,openDatabase:!1,opener:!1,Option:!1,parent:!1,print:!1,removeEventListener:!1,resizeBy:!1,resizeTo:!1,screen:!1,scroll:!1,scrollBy:!1,scrollTo:!1,sessionStorage:!1,setInterval:!1,setTimeout:!1,SharedWorker:!1,status:!1,top:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,WebSocket:!1,window:!1,Worker:!1,XMLHttpRequest:!1,XMLSerializer:!1,XPathEvaluator:!1,XPathException:!1,XPathExpression:!1,XPathNamespace:!1,XPathNSResolver:!1,XPathResult:!1},couch={require:!1,respond:!1,getRow:!1,emit:!1,send:!1,start:!1,sum:!1,log:!1,exports:!1,module:!1,provides:!1},devel={alert:!1,confirm:!1,console:!1,Debug:!1,opera:!1,prompt:!1},dojo={dojo:!1,dijit:!1,dojox:!1,define:!1,require:!1},functionicity=[\"closure\",\"exception\",\"global\",\"label\",\"outer\",\"unused\",\"var\"],jquery={$:!1,jQuery:!1},mootools={$:!1,$$:!1,Asset:!1,Browser:!1,Chain:!1,Class:!1,Color:!1,Cookie:!1,Core:!1,Document:!1,DomReady:!1,DOMEvent:!1,DOMReady:!1,Drag:!1,Element:!1,Elements:!1,Event:!1,Events:!1,Fx:!1,Group:!1,Hash:!1,HtmlTable:!1,Iframe:!1,IframeShim:!1,InputValidator:!1,instanceOf:!1,Keyboard:!1,Locale:!1,Mask:!1,MooTools:!1,Native:!1,Options:!1,OverText:!1,Request:!1,Scroller:!1,Slick:!1,Slider:!1,Sortables:!1,Spinner:!1,Swiff:!1,Tips:!1,Type:!1,typeOf:!1,URI:!1,Window:!1},node={__filename:!1,__dirname:!1,Buffer:!1,console:!1,exports:!0,GLOBAL:!1,global:!1,module:!1,process:!1,acequire:!1,setTimeout:!1,clearTimeout:!1,setInterval:!1,clearInterval:!1},prototypejs={$:!1,$$:!1,$A:!1,$F:!1,$H:!1,$R:!1,$break:!1,$continue:!1,$w:!1,Abstract:!1,Ajax:!1,Class:!1,Enumerable:!1,Element:!1,Event:!1,Field:!1,Form:!1,Hash:!1,Insertion:!1,ObjectRange:!1,PeriodicalExecuter:!1,Position:!1,Prototype:!1,Selector:!1,Template:!1,Toggle:!1,Try:!1,Autocompleter:!1,Builder:!1,Control:!1,Draggable:!1,Draggables:!1,Droppables:!1,Effect:!1,Sortable:!1,SortableObserver:!1,Sound:!1,Scriptaculous:!1},rhino={defineClass:!1,deserialize:!1,gc:!1,help:!1,importPackage:!1,java:!1,load:!1,loadClass:!1,print:!1,quit:!1,readFile:!1,readUrl:!1,runCommand:!1,seal:!1,serialize:!1,spawn:!1,sync:!1,toint32:!1,version:!1},standard={Array:!1,Boolean:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,eval:!1,EvalError:!1,Function:!1,hasOwnProperty:!1,isFinite:!1,isNaN:!1,JSON:!1,Map:!1,Math:!1,NaN:!1,Number:!1,Object:!1,parseInt:!1,parseFloat:!1,RangeError:!1,ReferenceError:!1,RegExp:!1,Set:!1,String:!1,SyntaxError:!1,TypeError:!1,URIError:!1,WeakMap:!1},nonstandard={escape:!1,unescape:!1},syntax={},worker={importScripts:!0,postMessage:!0,self:!0},wsh={ActiveXObject:!0,Enumerator:!0,GetObject:!0,ScriptEngine:!0,ScriptEngineBuildVersion:!0,ScriptEngineMajorVersion:!0,ScriptEngineMinorVersion:!0,VBArray:!0,WSH:!0,WScript:!0,XDomainRequest:!0},yui={YUI:!1,Y:!1,YUI_config:!1};\\n(function(){ax=/@cc|\u003C\\\\/?|script|\\\\]\\\\s*\\\\]|\u003C\\\\s*!|</i,cx=/[\\\\u0000-\\\\u001f\\\\u007f-\\\\u009f\\\\u00ad\\\\u0600-\\\\u0604\\\\u070f\\\\u17b4\\\\u17b5\\\\u200c-\\\\u200f\\\\u2028-\\\\u202f\\\\u2060-\\\\u206f\\\\ufeff\\\\ufff0-\\\\uffff]/,tx=/^\\\\s*([(){}\\\\[.,:;\\'\"~\\\\?\\\\]#@]|==?=?|\\\\/=(?!(\\\\S*\\\\/[gim]?))|\\\\/(\\\\*(jshint|jslint|members?|global)?|\\\\/)?|\\\\*[\\\\/=]?|\\\\+(?:=|\\\\++)?|-(?:=|-+)?|%=?|&[&=]?|\\\\|[|=]?|>>?>?=?|\u003C([\\\\/=!]|\\\\!(\\\\[|--)?|\u003C=?)?|\\\\^=?|\\\\!=?=?|[a-zA-Z_$][a-zA-Z0-9_$]*|[0-9]+([xX][0-9a-fA-F]+|\\\\.[0-9]*)?([eE][+\\\\-]?[0-9]+)?)/,nx=/[\\\\u0000-\\\\u001f&\u003C\"\\\\/\\\\\\\\\\\\u007f-\\\\u009f\\\\u00ad\\\\u0600-\\\\u0604\\\\u070f\\\\u17b4\\\\u17b5\\\\u200c-\\\\u200f\\\\u2028-\\\\u202f\\\\u2060-\\\\u206f\\\\ufeff\\\\ufff0-\\\\uffff]/,nxg=/[\\\\u0000-\\\\u001f&\u003C\"\\\\/\\\\\\\\\\\\u007f-\\\\u009f\\\\u00ad\\\\u0600-\\\\u0604\\\\u070f\\\\u17b4\\\\u17b5\\\\u200c-\\\\u200f\\\\u2028-\\\\u202f\\\\u2060-\\\\u206f\\\\ufeff\\\\ufff0-\\\\uffff]/g,lx=/\\\\*\\\\//,ix=/^([a-zA-Z_$][a-zA-Z0-9_$]*)$/,jx=/^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\\\\s*:/i,ft=/^\\\\s*\\\\/\\\\*\\\\s*falls\\\\sthrough\\\\s*\\\\*\\\\/\\\\s*$/})(),\"function\"!=typeof Array.isArray&&(Array.isArray=function(o){return\"[object Array]\"===Object.prototype.toString.apply(o)}),Array.prototype.forEach||(Array.prototype.forEach=function(fn,scope){for(var len=this.length,i=0;len>i;i++)fn.call(scope||this,this[i],i,this)}),Array.prototype.indexOf||(Array.prototype.indexOf=function(searchElement){if(null===this||void 0===this)throw new TypeError;var t=Object(this),len=t.length>>>0;if(0===len)return-1;var n=0;if(arguments.length>0&&(n=Number(arguments[1]),n!=n?n=0:0!==n&&1/0!=n&&n!=-1/0&&(n=(n>0||-1)*Math.floor(Math.abs(n)))),n>=len)return-1;for(var k=n>=0?n:Math.max(len-Math.abs(n),0);len>k;k++)if(k in t&&t[k]===searchElement)return k;return-1}),\"function\"!=typeof Object.create&&(Object.create=function(o){return F.prototype=o,new F}),\"function\"!=typeof Object.keys&&(Object.keys=function(o){var k,a=[];for(k in o)is_own(o,k)&&a.push(k);return a});var lex=function lex(){function nextLine(){var at,match,tw;return line>=lines.length?!1:(character=1,s=lines[line],line+=1,option.smarttabs?(match=s.match(/(\\\\/\\\\/)? \\\\t/),at=match&&!match[1]?0:-1):at=s.search(/ \\\\t|\\\\t [^\\\\*]/),at>=0&&warningAt(\"Mixed spaces and tabs.\",line,at+1),s=s.replace(/\\\\t/g,tab),at=s.search(cx),at>=0&&warningAt(\"Unsafe character.\",line,at),option.maxlen&&option.maxlen\u003Cs.length&&warningAt(\"Line too long.\",line,s.length),tw=option.trailing&&s.match(/^(.*?)\\\\s+$/),tw&&!/^\\\\s+$/.test(s)&&warningAt(\"Trailing whitespace.\",line,tw[1].length+1),!0)}function it(type,value){function checkName(name){if(!option.proto&&\"__proto__\"===name)return warningAt(\"The \\'{a}\\' property is deprecated.\",line,from,name),void 0;if(!option.iterator&&\"__iterator__\"===name)return warningAt(\"\\'{a}\\' is only available in JavaScript 1.7.\",line,from,name),void 0;var hasDangling=/^(_+.*|.*_+)$/.test(name);if(option.nomen&&hasDangling&&\"_\"!==name){if(option.node&&\".\"!==token.id&&/^(__dirname|__filename)$/.test(name))return;return warningAt(\"Unexpected {a} in \\'{b}\\'.\",line,from,\"dangling \\'_\\'\",name),void 0}option.camelcase&&name.replace(/^_+/,\"\").indexOf(\"_\")>-1&&!name.match(/^[A-Z0-9_]*$/)&&warningAt(\"Identifier \\'{a}\\' is not in camel case.\",line,from,value)}var i,t;return t=\"(color)\"===type||\"(range)\"===type?{type:type}:\"(punctuator)\"===type||\"(identifier)\"===type&&is_own(syntax,value)?syntax[value]||syntax[\"(error)\"]:syntax[type],t=Object.create(t),(\"(string)\"===type||\"(range)\"===type)&&!option.scripturl&&jx.test(value)&&warningAt(\"Script URL.\",line,from),\"(identifier)\"===type&&(t.identifier=!0,checkName(value)),t.value=value,t.line=line,t.character=character,t.from=from,i=t.id,\"(endline)\"!==i&&(prereg=i&&(\"(,=:[!&|?{};\".indexOf(i.charAt(i.length-1))>=0||\"return\"===i||\"case\"===i)),t}var character,from,line,s;return{init:function(source){lines=\"string\"==typeof source?source.replace(/\\\\r\\\\n/g,\"\\\\n\").replace(/\\\\r/g,\"\\\\n\").split(\"\\\\n\"):source,lines[0]&&\"#!\"===lines[0].substr(0,2)&&(lines[0]=\"\"),line=0,nextLine(),from=1},range:function(begin,end){var c,value=\"\";for(from=character,s.charAt(0)!==begin&&errorAt(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",line,character,begin,s.charAt(0));;){switch(s=s.slice(1),character+=1,c=s.charAt(0)){case\"\":errorAt(\"Missing \\'{a}\\'.\",line,character,c);break;case end:return s=s.slice(1),character+=1,it(\"(range)\",value);case\"\\\\\\\\\":warningAt(\"Unexpected \\'{a}\\'.\",line,character,c)}value+=c}},token:function(){function match(x){var r1,r=x.exec(s);return r?(l=r[0].length,r1=r[1],c=r1.charAt(0),s=s.substr(l),from=character+l-r1.length,character+=l,r1):void 0}function string(x){function esc(n){var i=parseInt(s.substr(j+1,n),16);j+=n,i>=32&&126>=i&&34!==i&&92!==i&&39!==i&&warningAt(\"Unnecessary escapement.\",line,character),character+=n,c=String.fromCharCode(i)}var c,j,r=\"\",allowNewLine=!1;jsonmode&&\\'\"\\'!==x&&warningAt(\"Strings must use doublequote.\",line,character),option.quotmark&&(\"single\"===option.quotmark&&\"\\'\"!==x?warningAt(\"Strings must use singlequote.\",line,character):\"double\"===option.quotmark&&\\'\"\\'!==x?warningAt(\"Strings must use doublequote.\",line,character):option.quotmark===!0&&(quotmark=quotmark||x,quotmark!==x&&warningAt(\"Mixed double and single quotes.\",line,character))),j=0;unclosedString:for(;;){for(;j>=s.length;){j=0;var cl=line,cf=from;if(!nextLine()){errorAt(\"Unclosed string.\",cl,cf);break unclosedString}allowNewLine?allowNewLine=!1:warningAt(\"Unclosed string.\",cl,cf)}if(c=s.charAt(j),c===x)return character+=1,s=s.substr(j+1),it(\"(string)\",r,x);if(\" \">c){if(\"\\\\n\"===c||\"\\\\r\"===c)break;warningAt(\"Control character in string: {a}.\",line,character+j,s.slice(0,j))}else if(\"\\\\\\\\\"===c)switch(j+=1,character+=1,c=s.charAt(j),n=s.charAt(j+1),c){case\"\\\\\\\\\":case\\'\"\\':case\"/\":break;case\"\\'\":jsonmode&&warningAt(\"Avoid \\\\\\\\\\'.\",line,character);break;case\"b\":c=\"\\\\b\";break;case\"f\":c=\"\\\\f\";break;case\"n\":c=\"\\\\n\";break;case\"r\":c=\"\\\\r\";break;case\"t\":c=\"\t\";break;case\"0\":c=\"\\\\0\",n>=0&&7>=n&&directive[\"use strict\"]&&warningAt(\"Octal literals are not allowed in strict mode.\",line,character);break;case\"u\":esc(4);break;case\"v\":jsonmode&&warningAt(\"Avoid \\\\\\\\v.\",line,character),c=\"\u000b\";break;case\"x\":jsonmode&&warningAt(\"Avoid \\\\\\\\x-.\",line,character),esc(2);break;case\"\":if(allowNewLine=!0,option.multistr){jsonmode&&warningAt(\"Avoid EOL escapement.\",line,character),c=\"\",character-=1;break}warningAt(\"Bad escapement of EOL. Use option multistr if needed.\",line,character);break;case\"!\":if(\"\u003C\"===s.charAt(j-2))break;default:warningAt(\"Bad escapement.\",line,character)}r+=c,character+=1,j+=1}}for(var b,c,captures,d,depth,high,i,l,low,q,t,isLiteral,isInRange,n;;){if(!s)return it(nextLine()?\"(endline)\":\"(end)\",\"\");if(t=match(tx)){if(isAlpha(c)||\"_\"===c||\"$\"===c)return it(\"(identifier)\",t);if(isDigit(c))return isFinite(Number(t))||warningAt(\"Bad number \\'{a}\\'.\",line,character,t),isAlpha(s.substr(0,1))&&warningAt(\"Missing space after \\'{a}\\'.\",line,character,t),\"0\"===c&&(d=t.substr(1,1),isDigit(d)?\".\"!==token.id&&warningAt(\"Don\\'t use extra leading zeros \\'{a}\\'.\",line,character,t):!jsonmode||\"x\"!==d&&\"X\"!==d||warningAt(\"Avoid 0x-. \\'{a}\\'.\",line,character,t)),\".\"===t.substr(t.length-1)&&warningAt(\"A trailing decimal point can be confused with a dot \\'{a}\\'.\",line,character,t),it(\"(number)\",t);switch(t){case\\'\"\\':case\"\\'\":return string(t);case\"//\":s=\"\",token.comment=!0;break;case\"/*\":for(;i=s.search(lx),!(i>=0);)nextLine()||errorAt(\"Unclosed comment.\",line,character);s=s.substr(i+2),token.comment=!0;break;case\"/*members\":case\"/*member\":case\"/*jshint\":case\"/*jslint\":case\"/*global\":case\"*/\":return{value:t,type:\"special\",line:line,character:character,from:from};case\"\":break;case\"/\":if(\"=\"===s.charAt(0)&&errorAt(\"A regular expression literal can be confused with \\'/=\\'.\",line,from),prereg){for(depth=0,captures=0,l=0;;){switch(b=!0,c=s.charAt(l),l+=1,c){case\"\":return errorAt(\"Unclosed regular expression.\",line,from),quit(\"Stopping.\",line,from);case\"/\":for(depth>0&&warningAt(\"{a} unterminated regular expression group(s).\",line,from+l,depth),c=s.substr(0,l-1),q={g:!0,i:!0,m:!0};q[s.charAt(l)]===!0;)q[s.charAt(l)]=!1,l+=1;return character+=l,s=s.substr(l),q=s.charAt(0),(\"/\"===q||\"*\"===q)&&errorAt(\"Confusing regular expression.\",line,from),it(\"(regexp)\",c);case\"\\\\\\\\\":c=s.charAt(l),\" \">c?warningAt(\"Unexpected control character in regular expression.\",line,from+l):\"\u003C\"===c&&warningAt(\"Unexpected escaped character \\'{a}\\' in regular expression.\",line,from+l,c),l+=1;break;case\"(\":if(depth+=1,b=!1,\"?\"===s.charAt(l))switch(l+=1,s.charAt(l)){case\":\":case\"=\":case\"!\":l+=1;break;default:warningAt(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",line,from+l,\":\",s.charAt(l))}else captures+=1;break;case\"|\":b=!1;break;case\")\":0===depth?warningAt(\"Unescaped \\'{a}\\'.\",line,from+l,\")\"):depth-=1;break;case\" \":for(q=1;\" \"===s.charAt(l);)l+=1,q+=1;q>1&&warningAt(\"Spaces are hard to count. Use {{a}}.\",line,from+l,q);break;case\"[\":c=s.charAt(l),\"^\"===c&&(l+=1,\"]\"===s.charAt(l)&&errorAt(\"Unescaped \\'{a}\\'.\",line,from+l,\"^\")),\"]\"===c&&warningAt(\"Empty class.\",line,from+l-1),isLiteral=!1,isInRange=!1;klass:do switch(c=s.charAt(l),l+=1,c){case\"[\":case\"^\":warningAt(\"Unescaped \\'{a}\\'.\",line,from+l,c),isInRange?isInRange=!1:isLiteral=!0;break;case\"-\":isLiteral&&!isInRange?(isLiteral=!1,isInRange=!0):isInRange?isInRange=!1:\"]\"===s.charAt(l)?isInRange=!0:(option.regexdash!==(2===l||3===l&&\"^\"===s.charAt(1))&&warningAt(\"Unescaped \\'{a}\\'.\",line,from+l-1,\"-\"),isLiteral=!0);break;case\"]\":isInRange&&!option.regexdash&&warningAt(\"Unescaped \\'{a}\\'.\",line,from+l-1,\"-\");break klass;case\"\\\\\\\\\":c=s.charAt(l),\" \">c?warningAt(\"Unexpected control character in regular expression.\",line,from+l):\"\u003C\"===c&&warningAt(\"Unexpected escaped character \\'{a}\\' in regular expression.\",line,from+l,c),l+=1,/[wsd]/i.test(c)?(isInRange&&(warningAt(\"Unescaped \\'{a}\\'.\",line,from+l,\"-\"),isInRange=!1),isLiteral=!1):isInRange?isInRange=!1:isLiteral=!0;break;case\"/\":warningAt(\"Unescaped \\'{a}\\'.\",line,from+l-1,\"/\"),isInRange?isInRange=!1:isLiteral=!0;break;case\"\u003C\":isInRange?isInRange=!1:isLiteral=!0;break;default:isInRange?isInRange=!1:isLiteral=!0}while(c);break;case\".\":option.regexp&&warningAt(\"Insecure \\'{a}\\'.\",line,from+l,c);break;case\"]\":case\"?\":case\"{\":case\"}\":case\"+\":case\"*\":warningAt(\"Unescaped \\'{a}\\'.\",line,from+l,c)}if(b)switch(s.charAt(l)){case\"?\":case\"+\":case\"*\":l+=1,\"?\"===s.charAt(l)&&(l+=1);break;case\"{\":if(l+=1,c=s.charAt(l),\"0\">c||c>\"9\"){warningAt(\"Expected a number and instead saw \\'{a}\\'.\",line,from+l,c);break}for(l+=1,low=+c;c=s.charAt(l),!(\"0\">c||c>\"9\");)l+=1,low=+c+10*low;if(high=low,\",\"===c&&(l+=1,high=1/0,c=s.charAt(l),c>=\"0\"&&\"9\">=c))for(l+=1,high=+c;c=s.charAt(l),!(\"0\">c||c>\"9\");)l+=1,high=+c+10*high;\"}\"!==s.charAt(l)?warningAt(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",line,from+l,\"}\",c):l+=1,\"?\"===s.charAt(l)&&(l+=1),low>high&&warningAt(\"\\'{a}\\' should not be greater than \\'{b}\\'.\",line,from+l,low,high)}}return c=s.substr(0,l-1),character+=l,s=s.substr(l),it(\"(regexp)\",c)}return it(\"(punctuator)\",t);case\"#\":return it(\"(punctuator)\",t);default:return it(\"(punctuator)\",t)}}else{for(t=\"\",c=\"\";s&&\"!\">s;)s=s.substr(1);s&&(errorAt(\"Unexpected \\'{a}\\'.\",line,character,s.substr(0,1)),s=\"\")}}}}}();type(\"(number)\",function(){return this}),type(\"(string)\",function(){return this}),syntax[\"(identifier)\"]={type:\"(identifier)\",lbp:0,identifier:!0,nud:function(){var f,v=this.value,s=scope[v];if(\"function\"==typeof s?s=void 0:\"boolean\"==typeof s&&(f=funct,funct=functions[0],addlabel(v,\"var\"),s=funct,funct=f),funct===s)switch(funct[v]){case\"unused\":funct[v]=\"var\";break;case\"unction\":funct[v]=\"function\",this[\"function\"]=!0;break;case\"function\":this[\"function\"]=!0;break;case\"label\":warning(\"\\'{a}\\' is a statement label.\",token,v)}else if(funct[\"(global)\"])option.undef&&\"boolean\"!=typeof predefined[v]&&(\"typeof\"!==anonname&&\"delete\"!==anonname||nexttoken&&(\".\"===nexttoken.value||\"[\"===nexttoken.value))&&isundef(funct,\"\\'{a}\\' is not defined.\",token,v),note_implied(token);else switch(funct[v]){case\"closure\":case\"function\":case\"var\":case\"unused\":warning(\"\\'{a}\\' used out of scope.\",token,v);break;case\"label\":warning(\"\\'{a}\\' is a statement label.\",token,v);break;case\"outer\":case\"global\":break;default:if(s===!0)funct[v]=!0;else if(null===s)warning(\"\\'{a}\\' is not allowed.\",token,v),note_implied(token);else if(\"object\"!=typeof s)option.undef&&(\"typeof\"!==anonname&&\"delete\"!==anonname||nexttoken&&(\".\"===nexttoken.value||\"[\"===nexttoken.value))&&isundef(funct,\"\\'{a}\\' is not defined.\",token,v),funct[v]=!0,note_implied(token);else switch(s[v]){case\"function\":case\"unction\":this[\"function\"]=!0,s[v]=\"closure\",funct[v]=s[\"(global)\"]?\"global\":\"outer\";break;case\"var\":case\"unused\":s[v]=\"closure\",funct[v]=s[\"(global)\"]?\"global\":\"outer\";break;case\"closure\":funct[v]=s[\"(global)\"]?\"global\":\"outer\";break;case\"label\":warning(\"\\'{a}\\' is a statement label.\",token,v)}}return this},led:function(){error(\"Expected an operator and instead saw \\'{a}\\'.\",nexttoken,nexttoken.value)}},type(\"(regexp)\",function(){return this}),delim(\"(endline)\"),delim(\"(begin)\"),delim(\"(end)\").reach=!0,delim(\"\u003C/\").reach=!0,delim(\"\u003C!\"),delim(\"\u003C!--\"),delim(\"-->\"),delim(\"(error)\").reach=!0,delim(\"}\").reach=!0,delim(\")\"),delim(\"]\"),delim(\\'\"\\').reach=!0,delim(\"\\'\").reach=!0,delim(\";\"),delim(\":\").reach=!0,delim(\",\"),delim(\"#\"),delim(\"@\"),reserve(\"else\"),reserve(\"case\").reach=!0,reserve(\"catch\"),reserve(\"default\").reach=!0,reserve(\"finally\"),reservevar(\"arguments\",function(x){directive[\"use strict\"]&&funct[\"(global)\"]&&warning(\"Strict violation.\",x)}),reservevar(\"eval\"),reservevar(\"false\"),reservevar(\"Infinity\"),reservevar(\"null\"),reservevar(\"this\",function(x){directive[\"use strict\"]&&!option.validthis&&(funct[\"(statement)\"]&&funct[\"(name)\"].charAt(0)>\"Z\"||funct[\"(global)\"])&&warning(\"Possible strict violation.\",x)}),reservevar(\"true\"),reservevar(\"undefined\"),assignop(\"=\",\"assign\",20),assignop(\"+=\",\"assignadd\",20),assignop(\"-=\",\"assignsub\",20),assignop(\"*=\",\"assignmult\",20),assignop(\"/=\",\"assigndiv\",20).nud=function(){error(\"A regular expression literal can be confused with \\'/=\\'.\")},assignop(\"%=\",\"assignmod\",20),bitwiseassignop(\"&=\",\"assignbitand\",20),bitwiseassignop(\"|=\",\"assignbitor\",20),bitwiseassignop(\"^=\",\"assignbitxor\",20),bitwiseassignop(\"\u003C\u003C=\",\"assignshiftleft\",20),bitwiseassignop(\">>=\",\"assignshiftright\",20),bitwiseassignop(\">>>=\",\"assignshiftrightunsigned\",20),infix(\"?\",function(left,that){return that.left=left,that.right=expression(10),advance(\":\"),that[\"else\"]=expression(10),that},30),infix(\"||\",\"or\",40),infix(\"&&\",\"and\",50),bitwise(\"|\",\"bitor\",70),bitwise(\"^\",\"bitxor\",80),bitwise(\"&\",\"bitand\",90),relation(\"==\",function(left,right){var eqnull=option.eqnull&&(\"null\"===left.value||\"null\"===right.value);return!eqnull&&option.eqeqeq?warning(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",this,\"===\",\"==\"):isPoorRelation(left)?warning(\"Use \\'{a}\\' to compare with \\'{b}\\'.\",this,\"===\",left.value):isPoorRelation(right)&&warning(\"Use \\'{a}\\' to compare with \\'{b}\\'.\",this,\"===\",right.value),this}),relation(\"===\"),relation(\"!=\",function(left,right){var eqnull=option.eqnull&&(\"null\"===left.value||\"null\"===right.value);return!eqnull&&option.eqeqeq?warning(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",this,\"!==\",\"!=\"):isPoorRelation(left)?warning(\"Use \\'{a}\\' to compare with \\'{b}\\'.\",this,\"!==\",left.value):isPoorRelation(right)&&warning(\"Use \\'{a}\\' to compare with \\'{b}\\'.\",this,\"!==\",right.value),this}),relation(\"!==\"),relation(\"\u003C\"),relation(\">\"),relation(\"\u003C=\"),relation(\">=\"),bitwise(\"\u003C\u003C\",\"shiftleft\",120),bitwise(\">>\",\"shiftright\",120),bitwise(\">>>\",\"shiftrightunsigned\",120),infix(\"in\",\"in\",120),infix(\"instanceof\",\"instanceof\",120),infix(\"+\",function(left,that){var right=expression(130);return left&&right&&\"(string)\"===left.id&&\"(string)\"===right.id?(left.value+=right.value,left.character=right.character,!option.scripturl&&jx.test(left.value)&&warning(\"JavaScript URL.\",left),left):(that.left=left,that.right=right,that)},130),prefix(\"+\",\"num\"),prefix(\"+++\",function(){return warning(\"Confusing pluses.\"),this.right=expression(150),this.arity=\"unary\",this}),infix(\"+++\",function(left){return warning(\"Confusing pluses.\"),this.left=left,this.right=expression(130),this},130),infix(\"-\",\"sub\",130),prefix(\"-\",\"neg\"),prefix(\"---\",function(){return warning(\"Confusing minuses.\"),this.right=expression(150),this.arity=\"unary\",this}),infix(\"---\",function(left){return warning(\"Confusing minuses.\"),this.left=left,this.right=expression(130),this},130),infix(\"*\",\"mult\",140),infix(\"/\",\"div\",140),infix(\"%\",\"mod\",140),suffix(\"++\",\"postinc\"),prefix(\"++\",\"preinc\"),syntax[\"++\"].exps=!0,suffix(\"--\",\"postdec\"),prefix(\"--\",\"predec\"),syntax[\"--\"].exps=!0,prefix(\"delete\",function(){var p=expression(0);return(!p||\".\"!==p.id&&\"[\"!==p.id)&&warning(\"Variables should not be deleted.\"),this.first=p,this}).exps=!0,prefix(\"~\",function(){return option.bitwise&&warning(\"Unexpected \\'{a}\\'.\",this,\"~\"),expression(150),this}),prefix(\"!\",function(){return this.right=expression(150),this.arity=\"unary\",bang[this.right.id]===!0&&warning(\"Confusing use of \\'{a}\\'.\",this,\"!\"),this}),prefix(\"typeof\",\"typeof\"),prefix(\"new\",function(){var i,c=expression(155);if(c&&\"function\"!==c.id)if(c.identifier)switch(c[\"new\"]=!0,c.value){case\"Number\":case\"String\":case\"Boolean\":case\"Math\":case\"JSON\":warning(\"Do not use {a} as a constructor.\",prevtoken,c.value);break;case\"Function\":option.evil||warning(\"The Function constructor is eval.\");break;case\"Date\":case\"RegExp\":break;default:\"function\"!==c.id&&(i=c.value.substr(0,1),option.newcap&&(\"A\">i||i>\"Z\")&&!is_own(global,c.value)&&warning(\"A constructor name should start with an uppercase letter.\",token))}else\".\"!==c.id&&\"[\"!==c.id&&\"(\"!==c.id&&warning(\"Bad constructor.\",token);else option.supernew||warning(\"Weird construction. Delete \\'new\\'.\",this);return adjacent(token,nexttoken),\"(\"===nexttoken.id||option.supernew||warning(\"Missing \\'()\\' invoking a constructor.\",token,token.value),this.first=c,this}),syntax[\"new\"].exps=!0,prefix(\"void\").exps=!0,infix(\".\",function(left,that){adjacent(prevtoken,token),nobreak();var m=identifier();return\"string\"==typeof m&&countMember(m),that.left=left,that.right=m,!left||\"arguments\"!==left.value||\"callee\"!==m&&\"caller\"!==m?option.evil||!left||\"document\"!==left.value||\"write\"!==m&&\"writeln\"!==m||warning(\"document.write can be a form of eval.\",left):option.noarg?warning(\"Avoid arguments.{a}.\",left,m):directive[\"use strict\"]&&error(\"Strict violation.\"),option.evil||\"eval\"!==m&&\"execScript\"!==m||warning(\"eval is evil.\"),that},160,!0),infix(\"(\",function(left,that){\"}\"!==prevtoken.id&&\")\"!==prevtoken.id&&nobreak(prevtoken,token),nospace(),option.immed&&!left.immed&&\"function\"===left.id&&warning(\"Wrap an immediate function invocation in parentheses to assist the reader in understanding that the expression is the result of a function, and not the function itself.\");var n=0,p=[];if(left&&\"(identifier)\"===left.type&&left.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)&&-1===\"Number String Boolean Date Object\".indexOf(left.value)&&(\"Math\"===left.value?warning(\"Math is not a function.\",left):option.newcap&&warning(\"Missing \\'new\\' prefix when invoking a constructor.\",left)),\")\"!==nexttoken.id)for(;p[p.length]=expression(10),n+=1,\",\"===nexttoken.id;)comma();return advance(\")\"),nospace(prevtoken,token),\"object\"==typeof left&&(\"parseInt\"===left.value&&1===n&&warning(\"Missing radix parameter.\",token),option.evil||(\"eval\"===left.value||\"Function\"===left.value||\"execScript\"===left.value?(warning(\"eval is evil.\",left),p[0]&&\"(string)\"===[0].id&&addInternalSrc(left,p[0].value)):!p[0]||\"(string)\"!==p[0].id||\"setTimeout\"!==left.value&&\"setInterval\"!==left.value?!p[0]||\"(string)\"!==p[0].id||\".\"!==left.value||\"window\"!==left.left.value||\"setTimeout\"!==left.right&&\"setInterval\"!==left.right||(warning(\"Implied eval is evil. Pass a function instead of a string.\",left),addInternalSrc(left,p[0].value)):(warning(\"Implied eval is evil. Pass a function instead of a string.\",left),addInternalSrc(left,p[0].value))),left.identifier||\".\"===left.id||\"[\"===left.id||\"(\"===left.id||\"&&\"===left.id||\"||\"===left.id||\"?\"===left.id||warning(\"Bad invocation.\",left)),that.left=left,that},155,!0).exps=!0,prefix(\"(\",function(){nospace(),\"function\"===nexttoken.id&&(nexttoken.immed=!0);var v=expression(0);return advance(\")\",this),nospace(prevtoken,token),option.immed&&\"function\"===v.id&&\"(\"!==nexttoken.id&&(\".\"!==nexttoken.id||\"call\"!==peek().value&&\"apply\"!==peek().value)&&warning(\"Do not wrap function literals in parens unless they are to be immediately invoked.\",this),v}),infix(\"[\",function(left,that){nobreak(prevtoken,token),nospace();var s,e=expression(0);return e&&\"(string)\"===e.type&&(option.evil||\"eval\"!==e.value&&\"execScript\"!==e.value||warning(\"eval is evil.\",that),countMember(e.value),!option.sub&&ix.test(e.value)&&(s=syntax[e.value],s&&s.reserved||warning(\"[\\'{a}\\'] is better written in dot notation.\",prevtoken,e.value))),advance(\"]\",that),nospace(prevtoken,token),that.left=left,that.right=e,that},160,!0),prefix(\"[\",function(){var b=token.line!==nexttoken.line;for(this.first=[],b&&(indent+=option.indent,nexttoken.from===indent+option.indent&&(indent+=option.indent));\"(end)\"!==nexttoken.id;){for(;\",\"===nexttoken.id;)option.es5||warning(\"Extra comma.\"),advance(\",\");if(\"]\"===nexttoken.id)break;if(b&&token.line!==nexttoken.line&&indentation(),this.first.push(expression(10)),\",\"!==nexttoken.id)break;if(comma(),\"]\"===nexttoken.id&&!option.es5){warning(\"Extra comma.\",token);break}}return b&&(indent-=option.indent,indentation()),advance(\"]\",this),this},160),function(x){x.nud=function(){function saveProperty(name,token){props[name]&&is_own(props,name)?warning(\"Duplicate member \\'{a}\\'.\",nexttoken,i):props[name]={},props[name].basic=!0,props[name].basicToken=token}function saveSetter(name,token){props[name]&&is_own(props,name)?(props[name].basic||props[name].setter)&&warning(\"Duplicate member \\'{a}\\'.\",nexttoken,i):props[name]={},props[name].setter=!0,props[name].setterToken=token}function saveGetter(name){props[name]&&is_own(props,name)?(props[name].basic||props[name].getter)&&warning(\"Duplicate member \\'{a}\\'.\",nexttoken,i):props[name]={},props[name].getter=!0,props[name].getterToken=token}var b,f,i,p,t,props={};for(b=token.line!==nexttoken.line,b&&(indent+=option.indent,nexttoken.from===indent+option.indent&&(indent+=option.indent));\"}\"!==nexttoken.id;){if(b&&indentation(),\"get\"===nexttoken.value&&\":\"!==peek().id)advance(\"get\"),option.es5||error(\"get/set are ES5 features.\"),i=property_name(),i||error(\"Missing property name.\"),saveGetter(i),t=nexttoken,adjacent(token,nexttoken),f=doFunction(),p=f[\"(params)\"],p&&warning(\"Unexpected parameter \\'{a}\\' in get {b} function.\",t,p[0],i),adjacent(token,nexttoken);else if(\"set\"===nexttoken.value&&\":\"!==peek().id)advance(\"set\"),option.es5||error(\"get/set are ES5 features.\"),i=property_name(),i||error(\"Missing property name.\"),saveSetter(i,nexttoken),t=nexttoken,adjacent(token,nexttoken),f=doFunction(),p=f[\"(params)\"],p&&1===p.length||warning(\"Expected a single parameter in set {a} function.\",t,i);else{if(i=property_name(),saveProperty(i,nexttoken),\"string\"!=typeof i)break;advance(\":\"),nonadjacent(token,nexttoken),expression(10)}if(countMember(i),\",\"!==nexttoken.id)break;comma(),\",\"===nexttoken.id?warning(\"Extra comma.\",token):\"}\"!==nexttoken.id||option.es5||warning(\"Extra comma.\",token)}if(b&&(indent-=option.indent,indentation()),advance(\"}\",this),option.es5)for(var name in props)is_own(props,name)&&props[name].setter&&!props[name].getter&&warning(\"Setter is defined without getter.\",props[name].setterToken);return this},x.fud=function(){error(\"Expected to see a statement and instead saw a block.\",token)}}(delim(\"{\")),useESNextSyntax=function(){var conststatement=stmt(\"const\",function(prefix){var id,name,value;for(this.first=[];(nonadjacent(token,nexttoken),id=identifier(),\"const\"===funct[id]&&warning(\"const \\'\"+id+\"\\' has already been declared\"),funct[\"(global)\"]&&predefined[id]===!1&&warning(\"Redefinition of \\'{a}\\'.\",token,id),addlabel(id,\"const\"),!prefix)&&(name=token,this.first.push(token),\"=\"!==nexttoken.id&&warning(\"const \\'{a}\\' is initialized to \\'undefined\\'.\",token,id),\"=\"===nexttoken.id&&(nonadjacent(token,nexttoken),advance(\"=\"),nonadjacent(token,nexttoken),\"undefined\"===nexttoken.id&&warning(\"It is not necessary to initialize \\'{a}\\' to \\'undefined\\'.\",token,id),\"=\"===peek(0).id&&nexttoken.identifier&&error(\"Constant {a} was not declared correctly.\",nexttoken,nexttoken.value),value=expression(0),name.first=value),\",\"===nexttoken.id);)comma();return this});conststatement.exps=!0};var varstatement=stmt(\"var\",function(prefix){var id,name,value;for(funct[\"(onevar)\"]&&option.onevar?warning(\"Too many var statements.\"):funct[\"(global)\"]||(funct[\"(onevar)\"]=!0),this.first=[];(nonadjacent(token,nexttoken),id=identifier(),option.esnext&&\"const\"===funct[id]&&warning(\"const \\'\"+id+\"\\' has already been declared\"),funct[\"(global)\"]&&predefined[id]===!1&&warning(\"Redefinition of \\'{a}\\'.\",token,id),addlabel(id,\"unused\",token),!prefix)&&(name=token,this.first.push(token),\"=\"===nexttoken.id&&(nonadjacent(token,nexttoken),advance(\"=\"),nonadjacent(token,nexttoken),\"undefined\"===nexttoken.id&&warning(\"It is not necessary to initialize \\'{a}\\' to \\'undefined\\'.\",token,id),\"=\"===peek(0).id&&nexttoken.identifier&&error(\"Variable {a} was not declared correctly.\",nexttoken,nexttoken.value),value=expression(0),name.first=value),\",\"===nexttoken.id);)comma();return this});varstatement.exps=!0,blockstmt(\"function\",function(){inblock&&warning(\"Function declarations should not be placed in blocks. Use a function expression or move the statement to the top of the outer function.\",token);var i=identifier();return option.esnext&&\"const\"===funct[i]&&warning(\"const \\'\"+i+\"\\' has already been declared\"),adjacent(token,nexttoken),addlabel(i,\"unction\",token),doFunction(i,{statement:!0}),\"(\"===nexttoken.id&&nexttoken.line===token.line&&error(\"Function declarations are not invocable. Wrap the whole function invocation in parens.\"),this}),prefix(\"function\",function(){var i=optionalidentifier();return i?adjacent(token,nexttoken):nonadjacent(token,nexttoken),doFunction(i),!option.loopfunc&&funct[\"(loopage)\"]&&warning(\"Don\\'t make functions within a loop.\"),this}),blockstmt(\"if\",function(){var t=nexttoken;return increaseComplexityCount(),advance(\"(\"),nonadjacent(this,t),nospace(),expression(20),\"=\"===nexttoken.id&&(option.boss||warning(\"Assignment in conditional expression\"),advance(\"=\"),expression(20)),advance(\")\",t),nospace(prevtoken,token),block(!0,!0),\"else\"===nexttoken.id&&(nonadjacent(token,nexttoken),advance(\"else\"),\"if\"===nexttoken.id||\"switch\"===nexttoken.id?statement(!0):block(!0,!0)),this}),blockstmt(\"try\",function(){function doCatch(){var e,oldScope=scope;advance(\"catch\"),nonadjacent(token,nexttoken),advance(\"(\"),scope=Object.create(oldScope),e=nexttoken.value,\"(identifier)\"!==nexttoken.type&&(e=null,warning(\"Expected an identifier and instead saw \\'{a}\\'.\",nexttoken,e)),advance(),advance(\")\"),funct={\"(name)\":\"(catch)\",\"(line)\":nexttoken.line,\"(character)\":nexttoken.character,\"(context)\":funct,\"(breakage)\":funct[\"(breakage)\"],\"(loopage)\":funct[\"(loopage)\"],\"(scope)\":scope,\"(statement)\":!1,\"(metrics)\":createMetrics(nexttoken),\"(catch)\":!0,\"(tokens)\":{}},e&&addlabel(e,\"exception\"),token.funct=funct,functions.push(funct),block(!1),scope=oldScope,funct[\"(last)\"]=token.line,funct[\"(lastcharacter)\"]=token.character,funct=funct[\"(context)\"]}var b;return block(!1),\"catch\"===nexttoken.id&&(increaseComplexityCount(),doCatch(),b=!0),\"finally\"===nexttoken.id?(advance(\"finally\"),block(!1),void 0):(b||error(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",nexttoken,\"catch\",nexttoken.value),this)}),blockstmt(\"while\",function(){var t=nexttoken;return funct[\"(breakage)\"]+=1,funct[\"(loopage)\"]+=1,increaseComplexityCount(),advance(\"(\"),nonadjacent(this,t),nospace(),expression(20),\"=\"===nexttoken.id&&(option.boss||warning(\"Assignment in conditional expression\"),advance(\"=\"),expression(20)),advance(\")\",t),nospace(prevtoken,token),block(!0,!0),funct[\"(breakage)\"]-=1,funct[\"(loopage)\"]-=1,this}).labelled=!0,blockstmt(\"with\",function(){var t=nexttoken;return directive[\"use strict\"]?error(\"\\'with\\' is not allowed in strict mode.\",token):option.withstmt||warning(\"Don\\'t use \\'with\\'.\",token),advance(\"(\"),nonadjacent(this,t),nospace(),expression(0),advance(\")\",t),nospace(prevtoken,token),block(!0,!0),this}),blockstmt(\"switch\",function(){var t=nexttoken,g=!1;for(funct[\"(breakage)\"]+=1,advance(\"(\"),nonadjacent(this,t),nospace(),this.condition=expression(20),advance(\")\",t),nospace(prevtoken,token),nonadjacent(token,nexttoken),t=nexttoken,advance(\"{\"),nonadjacent(token,nexttoken),indent+=option.indent,this.cases=[];;)switch(nexttoken.id){case\"case\":switch(funct[\"(verb)\"]){case\"break\":case\"case\":case\"continue\":case\"return\":case\"switch\":case\"throw\":break;default:ft.test(lines[nexttoken.line-2])||warning(\"Expected a \\'break\\' statement before \\'case\\'.\",token)}indentation(-option.indent),advance(\"case\"),this.cases.push(expression(20)),increaseComplexityCount(),g=!0,advance(\":\"),funct[\"(verb)\"]=\"case\";break;case\"default\":switch(funct[\"(verb)\"]){case\"break\":case\"continue\":case\"return\":case\"throw\":break;default:ft.test(lines[nexttoken.line-2])||warning(\"Expected a \\'break\\' statement before \\'default\\'.\",token)}indentation(-option.indent),advance(\"default\"),g=!0,advance(\":\");break;case\"}\":return indent-=option.indent,indentation(),advance(\"}\",t),(1===this.cases.length||\"true\"===this.condition.id||\"false\"===this.condition.id)&&(option.onecase||warning(\"This \\'switch\\' should be an \\'if\\'.\",this)),funct[\"(breakage)\"]-=1,funct[\"(verb)\"]=void 0,void 0;case\"(end)\":return error(\"Missing \\'{a}\\'.\",nexttoken,\"}\"),void 0;default:if(g)switch(token.id){case\",\":return error(\"Each value should have its own case label.\"),void 0;case\":\":g=!1,statements();break;default:return error(\"Missing \\':\\' on a case clause.\",token),void 0}else{if(\":\"!==token.id)return error(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",nexttoken,\"case\",nexttoken.value),void 0;advance(\":\"),error(\"Unexpected \\'{a}\\'.\",token,\":\"),statements()}}}).labelled=!0,stmt(\"debugger\",function(){return option.debug||warning(\"All \\'debugger\\' statements should be removed.\"),this}).exps=!0,function(){var x=stmt(\"do\",function(){funct[\"(breakage)\"]+=1,funct[\"(loopage)\"]+=1,increaseComplexityCount(),this.first=block(!0),advance(\"while\");var t=nexttoken;return nonadjacent(token,t),advance(\"(\"),nospace(),expression(20),\"=\"===nexttoken.id&&(option.boss||warning(\"Assignment in conditional expression\"),advance(\"=\"),expression(20)),advance(\")\",t),nospace(prevtoken,token),funct[\"(breakage)\"]-=1,funct[\"(loopage)\"]-=1,this});x.labelled=!0,x.exps=!0}(),blockstmt(\"for\",function(){var s,t=nexttoken;if(funct[\"(breakage)\"]+=1,funct[\"(loopage)\"]+=1,increaseComplexityCount(),advance(\"(\"),nonadjacent(this,t),nospace(),\"in\"===peek(\"var\"===nexttoken.id?1:0).id){if(\"var\"===nexttoken.id)advance(\"var\"),varstatement.fud.call(varstatement,!0);else{switch(funct[nexttoken.value]){case\"unused\":funct[nexttoken.value]=\"var\";break;case\"var\":break;default:warning(\"Bad for in variable \\'{a}\\'.\",nexttoken,nexttoken.value)}advance()}return advance(\"in\"),expression(20),advance(\")\",t),s=block(!0,!0),option.forin&&s&&(s.length>1||\"object\"!=typeof s[0]||\"if\"!==s[0].value)&&warning(\"The body of a for in should be wrapped in an if statement to filter unwanted properties from the prototype.\",this),funct[\"(breakage)\"]-=1,funct[\"(loopage)\"]-=1,this}if(\";\"!==nexttoken.id)if(\"var\"===nexttoken.id)advance(\"var\"),varstatement.fud.call(varstatement);else for(;expression(0,\"for\"),\",\"===nexttoken.id;)comma();if(nolinebreak(token),advance(\";\"),\";\"!==nexttoken.id&&(expression(20),\"=\"===nexttoken.id&&(option.boss||warning(\"Assignment in conditional expression\"),advance(\"=\"),expression(20))),nolinebreak(token),advance(\";\"),\";\"===nexttoken.id&&error(\"Expected \\'{a}\\' and instead saw \\'{b}\\'.\",nexttoken,\")\",\";\"),\")\"!==nexttoken.id)for(;expression(0,\"for\"),\",\"===nexttoken.id;)comma();return advance(\")\",t),nospace(prevtoken,token),block(!0,!0),funct[\"(breakage)\"]-=1,funct[\"(loopage)\"]-=1,this}).labelled=!0,stmt(\"break\",function(){var v=nexttoken.value;return 0===funct[\"(breakage)\"]&&warning(\"Unexpected \\'{a}\\'.\",nexttoken,this.value),option.asi||nolinebreak(this),\";\"!==nexttoken.id&&token.line===nexttoken.line&&(\"label\"!==funct[v]?warning(\"\\'{a}\\' is not a statement label.\",nexttoken,v):scope[v]!==funct&&warning(\"\\'{a}\\' is out of scope.\",nexttoken,v),this.first=nexttoken,advance()),reachable(\"break\"),this\\n}).exps=!0,stmt(\"continue\",function(){var v=nexttoken.value;return 0===funct[\"(breakage)\"]&&warning(\"Unexpected \\'{a}\\'.\",nexttoken,this.value),option.asi||nolinebreak(this),\";\"!==nexttoken.id?token.line===nexttoken.line&&(\"label\"!==funct[v]?warning(\"\\'{a}\\' is not a statement label.\",nexttoken,v):scope[v]!==funct&&warning(\"\\'{a}\\' is out of scope.\",nexttoken,v),this.first=nexttoken,advance()):funct[\"(loopage)\"]||warning(\"Unexpected \\'{a}\\'.\",nexttoken,this.value),reachable(\"continue\"),this}).exps=!0,stmt(\"return\",function(){return this.line===nexttoken.line?(\"(regexp)\"===nexttoken.id&&warning(\"Wrap the /regexp/ literal in parens to disambiguate the slash operator.\"),\";\"===nexttoken.id||nexttoken.reach||(nonadjacent(token,nexttoken),\"=\"!==peek().value||option.boss||warningAt(\"Did you mean to return a conditional instead of an assignment?\",token.line,token.character+1),this.first=expression(0))):option.asi||nolinebreak(this),reachable(\"return\"),this}).exps=!0,stmt(\"throw\",function(){return nolinebreak(this),nonadjacent(token,nexttoken),this.first=expression(20),reachable(\"throw\"),this}).exps=!0,reserve(\"class\"),reserve(\"const\"),reserve(\"enum\"),reserve(\"export\"),reserve(\"extends\"),reserve(\"import\"),reserve(\"super\"),reserve(\"let\"),reserve(\"yield\"),reserve(\"implements\"),reserve(\"interface\"),reserve(\"package\"),reserve(\"private\"),reserve(\"protected\"),reserve(\"public\"),reserve(\"static\");var itself=function(s,o,g){var a,i,k,x,optionKeys,newOptionObj={};if(o&&o.scope?JSHINT.scope=o.scope:(JSHINT.errors=[],JSHINT.undefs=[],JSHINT.internals=[],JSHINT.blacklist={},JSHINT.scope=\"(main)\"),predefined=Object.create(standard),declared=Object.create(null),combine(predefined,g||{}),o)for(a=o.predef,a&&(Array.isArray(a)||\"object\"!=typeof a||(a=Object.keys(a)),a.forEach(function(item){var slice;\"-\"===item[0]?(slice=item.slice(1),JSHINT.blacklist[slice]=slice):predefined[item]=!0})),optionKeys=Object.keys(o),x=0;optionKeys.length>x;x++)newOptionObj[optionKeys[x]]=o[optionKeys[x]],\"newcap\"===optionKeys[x]&&o[optionKeys[x]]===!1&&(newOptionObj[\"(explicitNewcap)\"]=!0),\"indent\"===optionKeys[x]&&(newOptionObj.white=!0);for(option=newOptionObj,option.indent=option.indent||4,option.maxerr=option.maxerr||50,tab=\"\",i=0;option.indent>i;i+=1)tab+=\" \";if(indent=1,global=Object.create(predefined),scope=global,funct={\"(global)\":!0,\"(name)\":\"(global)\",\"(scope)\":scope,\"(breakage)\":0,\"(loopage)\":0,\"(tokens)\":{},\"(metrics)\":createMetrics(nexttoken)},functions=[funct],urls=[],stack=null,member={},membersOnly=null,implied={},inblock=!1,lookahead=[],jsonmode=!1,warnings=0,lines=[],unuseds=[],!isString(s)&&!Array.isArray(s))return errorAt(\"Input is neither a string nor an array of strings.\",0),!1;if(isString(s)&&/^\\\\s*$/g.test(s))return errorAt(\"Input is an empty string.\",0),!1;if(0===s.length)return errorAt(\"Input is an empty array.\",0),!1;lex.init(s),prereg=!0,directive={},prevtoken=token=nexttoken=syntax[\"(begin)\"];for(var name in o)is_own(o,name)&&checkOption(name,token);assume(),combine(predefined,g||{}),comma.first=!0,quotmark=void 0;try{switch(advance(),nexttoken.id){case\"{\":case\"[\":option.laxbreak=!0,jsonmode=!0,jsonValue();break;default:directives(),directive[\"use strict\"]&&!option.globalstrict&&warning(\\'Use the function form of \"use strict\".\\',prevtoken),statements()}advance(nexttoken&&\".\"!==nexttoken.value?\"(end)\":void 0);var markDefined=function(name,context){do{if(\"string\"==typeof context[name])return\"unused\"===context[name]?context[name]=\"var\":\"unction\"===context[name]&&(context[name]=\"closure\"),!0;context=context[\"(context)\"]}while(context);return!1},clearImplied=function(name,line){if(implied[name]){for(var newImplied=[],i=0;implied[name].length>i;i+=1)implied[name][i]!==line&&newImplied.push(implied[name][i]);0===newImplied.length?delete implied[name]:implied[name]=newImplied}},warnUnused=function(name,token){var line=token.line,chr=token.character;option.unused&&warningAt(\"\\'{a}\\' is defined but never used.\",line,chr,name),unuseds.push({name:name,line:line,character:chr})},checkUnused=function(func,key){var type=func[key],token=func[\"(tokens)\"][key];\"(\"!==key.charAt(0)&&(\"unused\"===type||\"unction\"===type)&&(func[\"(params)\"]&&-1!==func[\"(params)\"].indexOf(key)||warnUnused(key,token))};for(i=0;JSHINT.undefs.length>i;i+=1)k=JSHINT.undefs[i].slice(0),markDefined(k[2].value,k[0])?clearImplied(k[2].value,k[2].line):warning.apply(warning,k.slice(1));functions.forEach(function(func){for(var key in func)is_own(func,key)&&checkUnused(func,key);if(func[\"(params)\"])for(var type,params=func[\"(params)\"].slice(),param=params.pop();param;){if(type=func[param],\"undefined\"===param)return;if(\"unused\"!==type&&\"unction\"!==type)return;warnUnused(param,func[\"(tokens)\"][param]),param=params.pop()}});for(var key in declared)is_own(declared,key)&&!is_own(global,key)&&warnUnused(key,declared[key])}catch(e){if(e){var nt=nexttoken||{};JSHINT.errors.push({raw:e.raw,reason:e.message,line:e.line||nt.line,character:e.character||nt.from},null)}}if(\"(main)\"===JSHINT.scope)for(o=o||{},i=0;JSHINT.internals.length>i;i+=1)k=JSHINT.internals[i],o.scope=k.elem,itself(k.value,o,g);return 0===JSHINT.errors.length};return itself.data=function(){var fu,f,i,j,n,globals,data={functions:[],options:option},implieds=[],members=[];itself.errors.length&&(data.errors=itself.errors),jsonmode&&(data.json=!0);for(n in implied)is_own(implied,n)&&implieds.push({name:n,line:implied[n]});for(implieds.length>0&&(data.implieds=implieds),urls.length>0&&(data.urls=urls),globals=Object.keys(scope),globals.length>0&&(data.globals=globals),i=1;functions.length>i;i+=1){for(f=functions[i],fu={},j=0;functionicity.length>j;j+=1)fu[functionicity[j]]=[];for(j=0;functionicity.length>j;j+=1)0===fu[functionicity[j]].length&&delete fu[functionicity[j]];fu.name=f[\"(name)\"],fu.param=f[\"(params)\"],fu.line=f[\"(line)\"],fu.character=f[\"(character)\"],fu.last=f[\"(last)\"],fu.lastcharacter=f[\"(lastcharacter)\"],data.functions.push(fu)}unuseds.length>0&&(data.unused=unuseds),members=[];for(n in member)if(\"number\"==typeof member[n]){data.member=member;break}return data},itself.jshint=itself,itself}();\"object\"==typeof exports&&exports&&(exports.JSHINT=JSHINT)});'\n})()},{}],23:[function(){\"use strict\";Function.prototype.bind||(Function.prototype.bind=function(this_){if(\"function\"!=typeof this)throw new TypeError(\"Function.prototype.bind - what is trying to be bound is not callable\");var args=Array.prototype.slice.call(arguments,1),fn=this,Noop=function(){},fnbound=function(){return fn.apply(this instanceof Noop&&this_?this:this_,args.concat(Array.prototype.slice.call(arguments)))};return Noop.prototype=this.prototype,fnbound.prototype=new Noop,fnbound})},{}],21:[function(require,module){\"use strict\";function scroll(elem){elem&&(elem.scrollTop=elem.scrollHeight)}var Terminal=require(\"./term\"),through=require(\"through\");module.exports=function(opts){var term=new Terminal(opts);term.open();var hypernal=through(term.write.bind(term));return hypernal.appendTo=function(elem){\"string\"==typeof elem&&(elem=document.querySelector(elem)),elem.appendChild(term.element),elem.setAttribute(\"style\",\"overflow-y : auto;\"),hypernal.container=elem,term.element.style.position=\"relative\"},hypernal.writeln=function(line){term.writeln(line),hypernal.tail&&scroll(hypernal.container)},hypernal.write=function(data){term.write(data),hypernal.tail&&scroll(hypernal.container)},hypernal.reset=term.reset.bind(term),hypernal.element=term.element,hypernal.term=term,hypernal}},{\"./term\":24,through:25}],22:[function(require,module){(function(process){\"use strict\";function highlightLines(script){return highlight(script,{linenos:!0}).split(\"\\n\")}require(\"./lib/shim-bind\");var highlight=require(\"cardinal\").highlight,snippetify=require(\"snippetify\"),evalSnippets=require(\"./lib/eval-snippets\"),resolveTales=require(\"./lib/resolve-tales\");process.browser,module.exports=function(script,scriptPath,opts){opts=opts||{};var toLines=opts.toLines||highlightLines,writeln=opts.writeln||(process.browser===!0?function(){}:console.log.bind(console)),snippets=snippetify(script,{nonstrict:!0});evalSnippets(snippets,scriptPath,opts.diff);var tales=resolveTales(snippets,opts),lines=toLines(script),offset=0;return tales.forEach(function(x){x.tale.length&&lines.splice(x.insertAfter+offset++,0,x.tale)}),lines=lines.filter(function(x){return x.length}),lines.forEach(function(line){writeln(line)}),lines}})(require(\"__browserify_process\"))},{\"./lib/shim-bind\":23,\"./lib/eval-snippets\":26,\"./lib/resolve-tales\":27,cardinal:28,snippetify:29,__browserify_process:16}],20:[function(require,module){(function(){(function(){function exportAce(ns){var acequire=function(module,callback){return _acequire(\"\",module,callback)},root=global;ns&&(global[ns]||(global[ns]={}),root=global[ns]),root.define&&root.define.packaged||(_define.original=root.define,root.define=_define,root.define.packaged=!0),root.acequire&&root.acequire.packaged||(_acequire.original=root.acequire,root.acequire=acequire,root.acequire.packaged=!0)}var ACE_NAMESPACE=\"ace\",global=function(){return this}();if(ACE_NAMESPACE||\"undefined\"==typeof acequirejs){var _define=function(module,deps,payload){return\"string\"!=typeof module?(_define.original?_define.original.apply(window,arguments):(console.error(\"dropping module because define wasn't a string.\"),console.trace()),void 0):(2==arguments.length&&(payload=deps),_define.modules||(_define.modules={}),_define.modules[module]=payload,void 0)},_acequire=function(parentId,module,callback){if(\"[object Array]\"===Object.prototype.toString.call(module)){for(var params=[],i=0,l=module.length;l>i;++i){var dep=lookup(parentId,module[i]);if(!dep&&_acequire.original)return _acequire.original.apply(window,arguments);params.push(dep)}callback&&callback.apply(null,params)}else{if(\"string\"==typeof module){var payload=lookup(parentId,module);return!payload&&_acequire.original?_acequire.original.apply(window,arguments):(callback&&callback(),payload)}if(_acequire.original)return _acequire.original.apply(window,arguments)}},normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\"!\")){var chunks=moduleName.split(\"!\");return normalizeModule(parentId,chunks[0])+\"!\"+normalizeModule(parentId,chunks[1])}if(\".\"==moduleName.charAt(0)){var base=parentId.split(\"/\").slice(0,-1).join(\"/\");for(moduleName=base+\"/\"+moduleName;-1!==moduleName.indexOf(\".\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/\\/\\.\\//,\"/\").replace(/[^\\/]+\\/\\.\\.\\//,\"\")}}return moduleName},lookup=function(parentId,moduleName){moduleName=normalizeModule(parentId,moduleName);var module=_define.modules[moduleName];if(!module)return null;if(\"function\"==typeof module){var exports={},mod={id:moduleName,uri:\"\",exports:exports,packaged:!0},req=function(module,callback){return _acequire(moduleName,module,callback)},returnValue=module(req,exports,mod);return exports=returnValue||mod.exports,_define.modules[moduleName]=exports,exports}return module};exportAce(ACE_NAMESPACE)}})(),ace.define(\"ace/ace\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/editor\",\"ace/edit_session\",\"ace/undomanager\",\"ace/virtual_renderer\",\"ace/multi_select\",\"ace/worker/worker_client\",\"ace/keyboard/hash_handler\",\"ace/placeholder\",\"ace/mode/folding/fold_mode\",\"ace/theme/textmate\",\"ace/config\"],function(acequire,exports){acequire(\"./lib/fixoldbrowsers\");var dom=acequire(\"./lib/dom\"),event=acequire(\"./lib/event\"),Editor=acequire(\"./editor\").Editor,EditSession=acequire(\"./edit_session\").EditSession,UndoManager=acequire(\"./undomanager\").UndoManager,Renderer=acequire(\"./virtual_renderer\").VirtualRenderer,MultiSelect=acequire(\"./multi_select\").MultiSelect;acequire(\"./worker/worker_client\"),acequire(\"./keyboard/hash_handler\"),acequire(\"./placeholder\"),acequire(\"./mode/folding/fold_mode\"),acequire(\"./theme/textmate\"),exports.config=acequire(\"./config\"),exports.acequire=acequire,exports.edit=function(el){if(\"string\"==typeof el){var _id=el,el=document.getElementById(_id);if(!el)throw\"ace.edit can't find div #\"+_id}if(el.env&&el.env.editor instanceof Editor)return el.env.editor;var doc=exports.createEditSession(dom.getInnerText(el));el.innerHTML=\"\";var editor=new Editor(new Renderer(el));new MultiSelect(editor),editor.setSession(doc);var env={document:doc,editor:editor,onResize:editor.resize.bind(editor,null)};return event.addListener(window,\"resize\",env.onResize),editor.on(\"destroy\",function(){event.removeListener(window,\"resize\",env.onResize)}),el.env=editor.env=env,editor},exports.createEditSession=function(text){var doc=new EditSession(text,doc);return doc.setUndoManager(new UndoManager),doc},exports.EditSession=EditSession,exports.UndoManager=UndoManager}),ace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/regexp\",\"ace/lib/es5-shim\"],function(acequire){acequire(\"./regexp\"),acequire(\"./es5-shim\")}),ace.define(\"ace/lib/regexp\",[\"require\",\"exports\",\"module\"],function(){function getNativeFlags(regex){return(regex.global?\"g\":\"\")+(regex.ignoreCase?\"i\":\"\")+(regex.multiline?\"m\":\"\")+(regex.extended?\"x\":\"\")+(regex.sticky?\"y\":\"\")}function indexOf(array,item,from){if(Array.prototype.indexOf)return array.indexOf(item,from);for(var i=from||0;array.length>i;i++)if(array[i]===item)return i;return-1}var real={exec:RegExp.prototype.exec,test:RegExp.prototype.test,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split},compliantExecNpcg=void 0===real.exec.call(/()??/,\"\")[1],compliantLastIndexIncrement=function(){var x=/^/g;return real.test.call(x,\"\"),!x.lastIndex}();compliantLastIndexIncrement&&compliantExecNpcg||(RegExp.prototype.exec=function(str){var name,r2,match=real.exec.apply(this,arguments);if(\"string\"==typeof str&&match){if(!compliantExecNpcg&&match.length>1&&indexOf(match,\"\")>-1&&(r2=RegExp(this.source,real.replace.call(getNativeFlags(this),\"g\",\"\")),real.replace.call(str.slice(match.index),r2,function(){for(var i=1;arguments.length-2>i;i++)void 0===arguments[i]&&(match[i]=void 0)})),this._xregexp&&this._xregexp.captureNames)for(var i=1;match.length>i;i++)name=this._xregexp.captureNames[i-1],name&&(match[name]=match[i]);!compliantLastIndexIncrement&&this.global&&!match[0].length&&this.lastIndex>match.index&&this.lastIndex--}return match},compliantLastIndexIncrement||(RegExp.prototype.test=function(str){var match=real.exec.call(this,str);return match&&this.global&&!match[0].length&&this.lastIndex>match.index&&this.lastIndex--,!!match}))}),ace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\"sentinel\",{}),\"sentinel\"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\"function\"!=typeof target)throw new TypeError(\"Function.prototype.bind called on incompatible \"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\"__defineGetter__\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\"XXX\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\"[object Array]\"==_toString(obj)});var boxedString=Object(\"a\"),splitString=\"a\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduce of empty array with no initial value\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\"reduce of empty array with no initial value\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduceRight of empty array with no initial value\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\"reduceRight of empty array with no initial value\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(object,property){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != 'object'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\"undefined\"==typeof document||doesDefinePropertyWork(document.createElement(\"div\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\"Property description must be an object: \",ERR_NON_OBJECT_TARGET=\"Object.defineProperty called on non-object: \",ERR_ACCESSORS_NOT_SUPPORTED=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(object,property,descriptor){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\"object\"!=typeof descriptor&&\"function\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\"value\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\"get\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\"set\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\"function\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\"\";owns(object,name);)name+=\"?\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(\"Object.keys called on a non-object\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\"\t\\n\u000b\\f\\r įš€į Žā€€ā€ā€‚ā€ƒā€„ā€…ā€†ā€‡ā€ˆā€‰ā€Šā€ÆāŸć€€\\u2028\\u2029\";if(!String.prototype.trim||ws.trim()){ws=\"[\"+ws+\"]\";var trimBeginRegexp=RegExp(\"^\"+ws+ws+\"*\"),trimEndRegexp=RegExp(ws+ws+\"*$\");String.prototype.trim=function(){return(this+\"\").replace(trimBeginRegexp,\"\").replace(trimEndRegexp,\"\")}}var toObject=function(o){if(null==o)throw new TypeError(\"can't convert \"+o+\" to object\");return Object(o)}}),ace.define(\"ace/lib/dom\",[\"require\",\"exports\",\"module\"],function(acequire,exports){if(\"undefined\"!=typeof document){var XHTML_NS=\"http://www.w3.org/1999/xhtml\";exports.getDocumentHead=function(doc){return doc||(doc=document),doc.head||doc.getElementsByTagName(\"head\")[0]||doc.documentElement},exports.createElement=function(tag,ns){return document.createElementNS?document.createElementNS(ns||XHTML_NS,tag):document.createElement(tag)},exports.hasCssClass=function(el,name){var classes=el.className.split(/\\s+/g);return-1!==classes.indexOf(name)},exports.addCssClass=function(el,name){exports.hasCssClass(el,name)||(el.className+=\" \"+name)},exports.removeCssClass=function(el,name){for(var classes=el.className.split(/\\s+/g);;){var index=classes.indexOf(name);if(-1==index)break;classes.splice(index,1)}el.className=classes.join(\" \")},exports.toggleCssClass=function(el,name){for(var classes=el.className.split(/\\s+/g),add=!0;;){var index=classes.indexOf(name);if(-1==index)break;add=!1,classes.splice(index,1)}return add&&classes.push(name),el.className=classes.join(\" \"),add},exports.setCssClass=function(node,className,include){include?exports.addCssClass(node,className):exports.removeCssClass(node,className)},exports.hasCssString=function(id,doc){var sheets,index=0;if(doc=doc||document,doc.createStyleSheet&&(sheets=doc.styleSheets)){for(;sheets.length>index;)if(sheets[index++].owningElement.id===id)return!0}else if(sheets=doc.getElementsByTagName(\"style\"))for(;sheets.length>index;)if(sheets[index++].id===id)return!0;return!1},exports.importCssString=function(cssText,id,doc){if(doc=doc||document,id&&exports.hasCssString(id,doc))return null;var style;doc.createStyleSheet?(style=doc.createStyleSheet(),style.cssText=cssText,id&&(style.owningElement.id=id)):(style=doc.createElementNS?doc.createElementNS(XHTML_NS,\"style\"):doc.createElement(\"style\"),style.appendChild(doc.createTextNode(cssText)),id&&(style.id=id),exports.getDocumentHead(doc).appendChild(style))},exports.importCssStylsheet=function(uri,doc){if(doc.createStyleSheet)doc.createStyleSheet(uri);else{var link=exports.createElement(\"link\");link.rel=\"stylesheet\",link.href=uri,exports.getDocumentHead(doc).appendChild(link)}},exports.getInnerWidth=function(element){return parseInt(exports.computedStyle(element,\"paddingLeft\"),10)+parseInt(exports.computedStyle(element,\"paddingRight\"),10)+element.clientWidth},exports.getInnerHeight=function(element){return parseInt(exports.computedStyle(element,\"paddingTop\"),10)+parseInt(exports.computedStyle(element,\"paddingBottom\"),10)+element.clientHeight},void 0!==window.pageYOffset?(exports.getPageScrollTop=function(){return window.pageYOffset},exports.getPageScrollLeft=function(){return window.pageXOffset}):(exports.getPageScrollTop=function(){return document.body.scrollTop},exports.getPageScrollLeft=function(){return document.body.scrollLeft}),exports.computedStyle=window.getComputedStyle?function(element,style){return style?(window.getComputedStyle(element,\"\")||{})[style]||\"\":window.getComputedStyle(element,\"\")||{}}:function(element,style){return style?element.currentStyle[style]:element.currentStyle},exports.scrollbarWidth=function(document){var inner=exports.createElement(\"ace_inner\");inner.style.width=\"100%\",inner.style.minWidth=\"0px\",inner.style.height=\"200px\",inner.style.display=\"block\";var outer=exports.createElement(\"ace_outer\"),style=outer.style;style.position=\"absolute\",style.left=\"-10000px\",style.overflow=\"hidden\",style.width=\"200px\",style.minWidth=\"0px\",style.height=\"150px\",style.display=\"block\",outer.appendChild(inner);var body=document.documentElement;body.appendChild(outer);var noScrollbar=inner.offsetWidth;style.overflow=\"scroll\";var withScrollbar=inner.offsetWidth;return noScrollbar==withScrollbar&&(withScrollbar=outer.clientWidth),body.removeChild(outer),noScrollbar-withScrollbar},exports.setInnerHtml=function(el,innerHtml){var element=el.cloneNode(!1);return element.innerHTML=innerHtml,el.parentNode.replaceChild(element,el),element},\"textContent\"in document.documentElement?(exports.setInnerText=function(el,innerText){el.textContent=innerText},exports.getInnerText=function(el){return el.textContent}):(exports.setInnerText=function(el,innerText){el.innerText=innerText},exports.getInnerText=function(el){return el.innerText}),exports.getParentWindow=function(document){return document.defaultView||document.parentWindow}}}),ace.define(\"ace/lib/event\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\",\"ace/lib/dom\"],function(acequire,exports){function normalizeCommandKeys(callback,e,keyCode){var hashId=0;if(hashId=!useragent.isOpera||\"KeyboardEvent\"in window||!useragent.isMac?0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0):0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0),keyCode in keys.MODIFIER_KEYS){switch(keys.MODIFIER_KEYS[keyCode]){case\"Alt\":hashId=2;break;case\"Shift\":hashId=4;break;case\"Ctrl\":hashId=1;break;default:hashId=8}keyCode=0}return 8&hashId&&(91==keyCode||93==keyCode)&&(keyCode=0),hashId||keyCode in keys.FUNCTION_KEYS||keyCode in keys.PRINTABLE_KEYS?callback(e,hashId,keyCode):!1}var keys=acequire(\"./keys\"),useragent=acequire(\"./useragent\");if(acequire(\"./dom\"),exports.addListener=function(elem,type,callback){if(elem.addEventListener)return elem.addEventListener(type,callback,!1);if(elem.attachEvent){var wrapper=function(){callback(window.event)};callback._wrapper=wrapper,elem.attachEvent(\"on\"+type,wrapper)}},exports.removeListener=function(elem,type,callback){return elem.removeEventListener?elem.removeEventListener(type,callback,!1):(elem.detachEvent&&elem.detachEvent(\"on\"+type,callback._wrapper||callback),void 0)},exports.stopEvent=function(e){return exports.stopPropagation(e),exports.preventDefault(e),!1},exports.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},exports.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},exports.getButton=function(e){return\"dblclick\"==e.type?0:\"contextmenu\"==e.type||e.ctrlKey&&useragent.isMac?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},exports.capture=document.documentElement.setCapture?function(el,eventHandler,releaseCaptureHandler){function onReleaseCapture(e){eventHandler(e),called||(called=!0,releaseCaptureHandler(e)),exports.removeListener(el,\"mousemove\",eventHandler),exports.removeListener(el,\"mouseup\",onReleaseCapture),exports.removeListener(el,\"losecapture\",onReleaseCapture),el.releaseCapture()}var called=!1;exports.addListener(el,\"mousemove\",eventHandler),exports.addListener(el,\"mouseup\",onReleaseCapture),exports.addListener(el,\"losecapture\",onReleaseCapture),el.setCapture()}:function(el,eventHandler,releaseCaptureHandler){function onMouseUp(e){eventHandler&&eventHandler(e),releaseCaptureHandler&&releaseCaptureHandler(e),document.removeEventListener(\"mousemove\",eventHandler,!0),document.removeEventListener(\"mouseup\",onMouseUp,!0),e.stopPropagation()}document.addEventListener(\"mousemove\",eventHandler,!0),document.addEventListener(\"mouseup\",onMouseUp,!0)},exports.addMouseWheelListener=function(el,callback){var factor=8,listener=function(e){void 0!==e.wheelDelta?void 0!==e.wheelDeltaX?(e.wheelX=-e.wheelDeltaX/factor,e.wheelY=-e.wheelDeltaY/factor):(e.wheelX=0,e.wheelY=-e.wheelDelta/factor):e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=5*(e.detail||0),e.wheelY=0):(e.wheelX=0,e.wheelY=5*(e.detail||0)),callback(e)};exports.addListener(el,\"DOMMouseScroll\",listener),exports.addListener(el,\"mousewheel\",listener)},exports.addMultiMouseDownListener=function(el,timeouts,eventHandler,callbackName){var startX,startY,timer,clicks=0,eventNames={2:\"dblclick\",3:\"tripleclick\",4:\"quadclick\"};exports.addListener(el,\"mousedown\",function(e){if(0!=exports.getButton(e))clicks=0;else{var isNewClick=Math.abs(e.clientX-startX)>5||Math.abs(e.clientY-startY)>5;(!timer||isNewClick)&&(clicks=0),clicks+=1,timer&&clearTimeout(timer),timer=setTimeout(function(){timer=null},timeouts[clicks-1]||600)}if(1==clicks&&(startX=e.clientX,startY=e.clientY),eventHandler[callbackName](\"mousedown\",e),clicks>4)clicks=0;else if(clicks>1)return eventHandler[callbackName](eventNames[clicks],e)}),useragent.isOldIE&&exports.addListener(el,\"dblclick\",function(e){clicks=2,timer&&clearTimeout(timer),timer=setTimeout(function(){timer=null},timeouts[clicks-1]||600),eventHandler[callbackName](\"mousedown\",e),eventHandler[callbackName](eventNames[clicks],e)})},exports.addCommandKeyListener=function(el,callback){var addListener=exports.addListener;if(useragent.isOldGecko||useragent.isOpera&&!(\"KeyboardEvent\"in window)){var lastKeyDownKeyCode=null;addListener(el,\"keydown\",function(e){lastKeyDownKeyCode=e.keyCode}),addListener(el,\"keypress\",function(e){return normalizeCommandKeys(callback,e,lastKeyDownKeyCode)})}else{var lastDown=null;addListener(el,\"keydown\",function(e){return lastDown=e.keyIdentifier||e.keyCode,normalizeCommandKeys(callback,e,e.keyCode)})}},window.postMessage&&!useragent.isOldIE){var postMessageId=1;exports.nextTick=function(callback,win){win=win||window;var messageName=\"zero-timeout-message-\"+postMessageId;exports.addListener(win,\"message\",function listener(e){e.data==messageName&&(exports.stopPropagation(e),exports.removeListener(win,\"message\",listener),callback())}),win.postMessage(messageName,\"*\")}}exports.nextFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame,exports.nextFrame=exports.nextFrame?exports.nextFrame.bind(window):function(callback){setTimeout(callback,17)}}),ace.define(\"ace/lib/keys\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\"],function(acequire,exports){var oop=acequire(\"./oop\"),Keys=function(){var ret={MODIFIER_KEYS:{16:\"Shift\",17:\"Ctrl\",18:\"Alt\",224:\"Meta\"},KEY_MODS:{ctrl:1,alt:2,option:2,shift:4,meta:8,command:8,cmd:8},FUNCTION_KEYS:{8:\"Backspace\",9:\"Tab\",13:\"Return\",19:\"Pause\",27:\"Esc\",32:\"Space\",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"Left\",38:\"Up\",39:\"Right\",40:\"Down\",44:\"Print\",45:\"Insert\",46:\"Delete\",96:\"Numpad0\",97:\"Numpad1\",98:\"Numpad2\",99:\"Numpad3\",100:\"Numpad4\",101:\"Numpad5\",102:\"Numpad6\",103:\"Numpad7\",104:\"Numpad8\",105:\"Numpad9\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"Numlock\",145:\"Scrolllock\"},PRINTABLE_KEYS:{32:\" \",48:\"0\",49:\"1\",50:\"2\",51:\"3\",52:\"4\",53:\"5\",54:\"6\",55:\"7\",56:\"8\",57:\"9\",59:\";\",61:\"=\",65:\"a\",66:\"b\",67:\"c\",68:\"d\",69:\"e\",70:\"f\",71:\"g\",72:\"h\",73:\"i\",74:\"j\",75:\"k\",76:\"l\",77:\"m\",78:\"n\",79:\"o\",80:\"p\",81:\"q\",82:\"r\",83:\"s\",84:\"t\",85:\"u\",86:\"v\",87:\"w\",88:\"x\",89:\"y\",90:\"z\",107:\"+\",109:\"-\",110:\".\",188:\",\",190:\".\",191:\"/\",192:\"`\",219:\"[\",220:\"\\\\\",221:\"]\",222:\"'\"}};for(var i in ret.FUNCTION_KEYS){var name=ret.FUNCTION_KEYS[i].toLowerCase();ret[name]=parseInt(i,10)}return oop.mixin(ret,ret.MODIFIER_KEYS),oop.mixin(ret,ret.PRINTABLE_KEYS),oop.mixin(ret,ret.FUNCTION_KEYS),ret.enter=ret[\"return\"],ret.escape=ret.esc,ret.del=ret[\"delete\"],ret[173]=\"-\",ret}();oop.mixin(exports,Keys),exports.keyCodeToString=function(keyCode){return(Keys[keyCode]||String.fromCharCode(keyCode)).toLowerCase()}}),ace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(acequire,exports){exports.inherits=function(){var tempCtor=function(){};\nreturn function(ctor,superCtor){tempCtor.prototype=superCtor.prototype,ctor.super_=superCtor.prototype,ctor.prototype=new tempCtor,ctor.prototype.constructor=ctor}}(),exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define(\"ace/lib/useragent\",[\"require\",\"exports\",\"module\"],function(acequire,exports){if(exports.OS={LINUX:\"LINUX\",MAC:\"MAC\",WINDOWS:\"WINDOWS\"},exports.getOS=function(){return exports.isMac?exports.OS.MAC:exports.isLinux?exports.OS.LINUX:exports.OS.WINDOWS},\"object\"==typeof navigator){var os=(navigator.platform.match(/mac|win|linux/i)||[\"other\"])[0].toLowerCase(),ua=navigator.userAgent;exports.isWin=\"win\"==os,exports.isMac=\"mac\"==os,exports.isLinux=\"linux\"==os,exports.isIE=(\"Microsoft Internet Explorer\"==navigator.appName||navigator.appName.indexOf(\"MSAppHost\")>=0)&&parseFloat(navigator.userAgent.match(/MSIE ([0-9]+[\\.0-9]+)/)[1]),exports.isOldIE=exports.isIE&&9>exports.isIE,exports.isGecko=exports.isMozilla=window.controllers&&\"Gecko\"===window.navigator.product,exports.isOldGecko=exports.isGecko&&4>parseInt((navigator.userAgent.match(/rv\\:(\\d+)/)||[])[1],10),exports.isOpera=window.opera&&\"[object Opera]\"==Object.prototype.toString.call(window.opera),exports.isWebKit=parseFloat(ua.split(\"WebKit/\")[1])||void 0,exports.isChrome=parseFloat(ua.split(\" Chrome/\")[1])||void 0,exports.isAIR=ua.indexOf(\"AdobeAIR\")>=0,exports.isIPad=ua.indexOf(\"iPad\")>=0,exports.isTouchPad=ua.indexOf(\"TouchPad\")>=0}}),ace.define(\"ace/editor\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/keyboard/textinput\",\"ace/mouse/mouse_handler\",\"ace/mouse/fold_handler\",\"ace/keyboard/keybinding\",\"ace/edit_session\",\"ace/search\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/commands/command_manager\",\"ace/commands/default_commands\",\"ace/config\"],function(acequire,exports){acequire(\"./lib/fixoldbrowsers\");var oop=acequire(\"./lib/oop\"),lang=acequire(\"./lib/lang\"),useragent=acequire(\"./lib/useragent\"),TextInput=acequire(\"./keyboard/textinput\").TextInput,MouseHandler=acequire(\"./mouse/mouse_handler\").MouseHandler,FoldHandler=acequire(\"./mouse/fold_handler\").FoldHandler,KeyBinding=acequire(\"./keyboard/keybinding\").KeyBinding,EditSession=acequire(\"./edit_session\").EditSession,Search=acequire(\"./search\").Search,Range=acequire(\"./range\").Range,EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,CommandManager=acequire(\"./commands/command_manager\").CommandManager,defaultCommands=acequire(\"./commands/default_commands\").commands,config=acequire(\"./config\"),Editor=function(renderer,session){var container=renderer.getContainerElement();this.container=container,this.renderer=renderer,this.commands=new CommandManager(useragent.isMac?\"mac\":\"win\",defaultCommands),this.textInput=new TextInput(renderer.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.keyBinding=new KeyBinding(this),this.$mouseHandler=new MouseHandler(this),new FoldHandler(this),this.$blockScrolling=0,this.$search=(new Search).set({wrap:!0}),this.setSession(session||new EditSession(\"\")),config.resetOptions(this),config._emit(\"editor\",this)};(function(){oop.implement(this,EventEmitter),this.setKeyboardHandler=function(keyboardHandler){if(keyboardHandler)if(\"string\"==typeof keyboardHandler){this.$keybindingId=keyboardHandler;var _self=this;config.loadModule([\"keybinding\",keyboardHandler],function(module){_self.$keybindingId==keyboardHandler&&_self.keyBinding.setKeyboardHandler(module&&module.handler)})}else delete this.$keybindingId,this.keyBinding.setKeyboardHandler(keyboardHandler);else this.keyBinding.setKeyboardHandler(null)},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(session){if(this.session!=session){if(this.session){var oldSession=this.session;this.session.removeEventListener(\"change\",this.$onDocumentChange),this.session.removeEventListener(\"changeMode\",this.$onChangeMode),this.session.removeEventListener(\"tokenizerUpdate\",this.$onTokenizerUpdate),this.session.removeEventListener(\"changeTabSize\",this.$onChangeTabSize),this.session.removeEventListener(\"changeWrapLimit\",this.$onChangeWrapLimit),this.session.removeEventListener(\"changeWrapMode\",this.$onChangeWrapMode),this.session.removeEventListener(\"onChangeFold\",this.$onChangeFold),this.session.removeEventListener(\"changeFrontMarker\",this.$onChangeFrontMarker),this.session.removeEventListener(\"changeBackMarker\",this.$onChangeBackMarker),this.session.removeEventListener(\"changeBreakpoint\",this.$onChangeBreakpoint),this.session.removeEventListener(\"changeAnnotation\",this.$onChangeAnnotation),this.session.removeEventListener(\"changeOverwrite\",this.$onCursorChange),this.session.removeEventListener(\"changeScrollTop\",this.$onScrollTopChange),this.session.removeEventListener(\"changeScrollLeft\",this.$onScrollLeftChange);var selection=this.session.getSelection();selection.removeEventListener(\"changeCursor\",this.$onCursorChange),selection.removeEventListener(\"changeSelection\",this.$onSelectionChange)}this.session=session,this.$onDocumentChange=this.onDocumentChange.bind(this),session.addEventListener(\"change\",this.$onDocumentChange),this.renderer.setSession(session),this.$onChangeMode=this.onChangeMode.bind(this),session.addEventListener(\"changeMode\",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),session.addEventListener(\"tokenizerUpdate\",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),session.addEventListener(\"changeTabSize\",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),session.addEventListener(\"changeWrapLimit\",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),session.addEventListener(\"changeWrapMode\",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),session.addEventListener(\"changeFold\",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.addEventListener(\"changeFrontMarker\",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.addEventListener(\"changeBackMarker\",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.addEventListener(\"changeBreakpoint\",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.addEventListener(\"changeAnnotation\",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.addEventListener(\"changeOverwrite\",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.addEventListener(\"changeScrollTop\",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.addEventListener(\"changeScrollLeft\",this.$onScrollLeftChange),this.selection=session.getSelection(),this.selection.addEventListener(\"changeCursor\",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.addEventListener(\"changeSelection\",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull(),this._emit(\"changeSession\",{session:session,oldSession:oldSession})}},this.getSession=function(){return this.session},this.setValue=function(val,cursorPos){return this.session.doc.setValue(val),cursorPos?1==cursorPos?this.navigateFileEnd():-1==cursorPos&&this.navigateFileStart():this.selectAll(),val},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(force){this.renderer.onResize(force)},this.setTheme=function(theme){this.renderer.setTheme(theme)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(style){this.renderer.setStyle(style)},this.unsetStyle=function(style){this.renderer.unsetStyle(style)},this.setFontSize=function(size){this.setOption(\"fontSize\",size)},this.$highlightBrackets=function(){if(this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null),!this.$highlightPending){var self=this;this.$highlightPending=!0,setTimeout(function(){self.$highlightPending=!1;var pos=self.session.findMatchingBracket(self.getCursorPosition());if(pos)var range=new Range(pos.row,pos.column,pos.row,pos.column+1);else if(self.session.$mode.getMatching)var range=self.session.$mode.getMatching(self.session);range&&(self.session.$bracketHighlight=self.session.addMarker(range,\"ace_bracket\",\"text\"))},50)}},this.focus=function(){var _self=this;setTimeout(function(){_self.textInput.focus()}),this.textInput.focus()},this.isFocused=function(){return this.textInput.isFocused()},this.blur=function(){this.textInput.blur()},this.onFocus=function(){this.$isFocused||(this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit(\"focus\"))},this.onBlur=function(){this.$isFocused&&(this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit(\"blur\"))},this.$cursorChange=function(){this.renderer.updateCursor()},this.onDocumentChange=function(e){var lastRow,delta=e.data,range=delta.range;lastRow=range.start.row==range.end.row&&\"insertLines\"!=delta.action&&\"removeLines\"!=delta.action?range.end.row:1/0,this.renderer.updateLines(range.start.row,lastRow),this._emit(\"change\",e),this.$cursorChange()},this.onTokenizerUpdate=function(e){var rows=e.data;this.renderer.updateLines(rows.first,rows.last)},this.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},this.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},this.onCursorChange=function(){this.$cursorChange(),this.$blockScrolling||this.renderer.scrollCursorIntoView(),this.$highlightBrackets(),this.$updateHighlightActiveLine(),this._emit(\"changeSelection\")},this.$updateHighlightActiveLine=function(){var highlight,session=this.getSession();if(this.$highlightActiveLine&&(\"line\"==this.$selectionStyle&&this.selection.isMultiLine()||(highlight=this.getCursorPosition())),session.$highlightLineMarker&&!highlight)session.removeMarker(session.$highlightLineMarker.id),session.$highlightLineMarker=null;else if(!session.$highlightLineMarker&&highlight){var range=new Range(highlight.row,highlight.column,highlight.row,1/0);range.id=session.addMarker(range,\"ace_active-line\",\"screenLine\"),session.$highlightLineMarker=range}else highlight&&(session.$highlightLineMarker.start.row=highlight.row,session.$highlightLineMarker.end.row=highlight.row,session.$highlightLineMarker.start.column=highlight.column,session._emit(\"changeBackMarker\"))},this.onSelectionChange=function(){var session=this.session;if(session.$selectionMarker&&session.removeMarker(session.$selectionMarker),session.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var range=this.selection.getRange(),style=this.getSelectionStyle();session.$selectionMarker=session.addMarker(range,\"ace_selection\",style)}var re=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(re),this._emit(\"changeSelection\")},this.$getSelectionHighLightRegexp=function(){var session=this.session,selection=this.getSelectionRange();if(!selection.isEmpty()&&!selection.isMultiLine()){var startOuter=selection.start.column-1,endOuter=selection.end.column+1,line=session.getLine(selection.start.row),lineCols=line.length,needle=line.substring(Math.max(startOuter,0),Math.min(endOuter,lineCols));if(!(startOuter>=0&&/^[\\w\\d]/.test(needle)||lineCols>=endOuter&&/[\\w\\d]$/.test(needle))&&(needle=line.substring(selection.start.column,selection.end.column),/^[\\w\\d]+$/.test(needle))){var re=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:needle});return re}}},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit(\"changeMode\",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getCopyText=function(){var text=\"\";return this.selection.isEmpty()||(text=this.session.getTextRange(this.getSelectionRange())),this._emit(\"copy\",text),text},this.onCopy=function(){this.commands.exec(\"copy\",this)},this.onCut=function(){this.commands.exec(\"cut\",this)},this.onPaste=function(text){this.$readOnly||(this._emit(\"paste\",text),this.insert(text))},this.execCommand=function(command,args){this.commands.exec(command,this,args)},this.insert=function(text){var session=this.session,mode=session.getMode(),cursor=this.getCursorPosition();if(this.getBehavioursEnabled()){var transform=mode.transformAction(session.getState(cursor.row),\"insertion\",this,session,text);transform&&(text=transform.text)}if(text=text.replace(\"\t\",this.session.getTabString()),this.selection.isEmpty()){if(this.session.getOverwrite()){var range=new Range.fromPoints(cursor,cursor);range.end.column+=text.length,this.session.remove(range)}}else cursor=this.session.remove(this.getSelectionRange()),this.clearSelection();this.clearSelection();var start=cursor.column,lineState=session.getState(cursor.row),line=session.getLine(cursor.row),shouldOutdent=mode.checkOutdent(lineState,line,text),end=session.insert(cursor,text);if(transform&&transform.selection&&(2==transform.selection.length?this.selection.setSelectionRange(new Range(cursor.row,start+transform.selection[0],cursor.row,start+transform.selection[1])):this.selection.setSelectionRange(new Range(cursor.row+transform.selection[0],transform.selection[1],cursor.row+transform.selection[2],transform.selection[3]))),session.getDocument().isNewLine(text)){var lineIndent=mode.getNextLineIndent(lineState,line.slice(0,cursor.column),session.getTabString());this.moveCursorTo(cursor.row+1,0);for(var size=session.getTabSize(),minIndent=Number.MAX_VALUE,row=cursor.row+1;end.row>=row;++row){var indent=0;line=session.getLine(row);for(var i=0;line.length>i;++i)if(\"\t\"==line.charAt(i))indent+=size;else{if(\" \"!=line.charAt(i))break;indent+=1}/[^\\s]/.test(line)&&(minIndent=Math.min(indent,minIndent))}for(var row=cursor.row+1;end.row>=row;++row){var outdent=minIndent;line=session.getLine(row);for(var i=0;line.length>i&&outdent>0;++i)\"\t\"==line.charAt(i)?outdent-=size:\" \"==line.charAt(i)&&(outdent-=1);session.remove(new Range(row,0,row,i))}session.indentRows(cursor.row+1,end.row,lineIndent)}shouldOutdent&&mode.autoOutdent(lineState,session,cursor.row)},this.onTextInput=function(text){this.keyBinding.onTextInput(text)},this.onCommandKey=function(e,hashId,keyCode){this.keyBinding.onCommandKey(e,hashId,keyCode)},this.setOverwrite=function(overwrite){this.session.setOverwrite(overwrite)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(speed){this.setOption(\"scrollSpeed\",speed)},this.getScrollSpeed=function(){return this.getOption(\"scrollSpeed\")},this.setDragDelay=function(dragDelay){this.setOption(\"dragDelay\",dragDelay)},this.getDragDelay=function(){return this.getOption(\"dragDelay\")},this.setSelectionStyle=function(val){this.setOption(\"selectionStyle\",val)},this.getSelectionStyle=function(){return this.getOption(\"selectionStyle\")},this.setHighlightActiveLine=function(shouldHighlight){this.setOption(\"highlightActiveLine\",shouldHighlight)},this.getHighlightActiveLine=function(){return this.getOption(\"highlightActiveLine\")},this.setHighlightGutterLine=function(shouldHighlight){this.setOption(\"highlightGutterLine\",shouldHighlight)},this.getHighlightGutterLine=function(){return this.getOption(\"highlightGutterLine\")},this.setHighlightSelectedWord=function(shouldHighlight){this.setOption(\"highlightSelectedWord\",shouldHighlight)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(shouldAnimate){this.renderer.setAnimatedScroll(shouldAnimate)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(showInvisibles){this.renderer.setShowInvisibles(showInvisibles)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(display){this.renderer.setDisplayIndentGuides(display)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(showPrintMargin){this.renderer.setShowPrintMargin(showPrintMargin)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(showPrintMargin){this.renderer.setPrintMarginColumn(showPrintMargin)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(readOnly){this.setOption(\"readOnly\",readOnly)},this.getReadOnly=function(){return this.getOption(\"readOnly\")},this.setBehavioursEnabled=function(enabled){this.setOption(\"behavioursEnabled\",enabled)},this.getBehavioursEnabled=function(){return this.getOption(\"behavioursEnabled\")},this.setWrapBehavioursEnabled=function(enabled){this.setOption(\"wrapBehavioursEnabled\",enabled)},this.getWrapBehavioursEnabled=function(){return this.getOption(\"wrapBehavioursEnabled\")},this.setShowFoldWidgets=function(show){this.setOption(\"showFoldWidgets\",show)},this.getShowFoldWidgets=function(){return this.getOption(\"showFoldWidgets\")},this.setFadeFoldWidgets=function(fade){this.setOption(\"fadeFoldWidgets\",fade)},this.getFadeFoldWidgets=function(){return this.getOption(\"fadeFoldWidgets\")},this.remove=function(dir){this.selection.isEmpty()&&(\"left\"==dir?this.selection.selectLeft():this.selection.selectRight());var range=this.getSelectionRange();if(this.getBehavioursEnabled()){var session=this.session,state=session.getState(range.start.row),new_range=session.getMode().transformAction(state,\"deletion\",this,session,range);new_range&&(range=new_range)}this.session.remove(range),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var range=this.getSelectionRange();range.start.column==range.end.column&&range.start.row==range.end.row&&(range.end.column=0,range.end.row++),this.session.remove(range),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var cursor=this.getCursorPosition();this.insert(\"\\n\"),this.moveCursorToPosition(cursor)},this.transposeLetters=function(){if(this.selection.isEmpty()){var cursor=this.getCursorPosition(),column=cursor.column;if(0!==column){var swap,range,line=this.session.getLine(cursor.row);line.length>column?(swap=line.charAt(column)+line.charAt(column-1),range=new Range(cursor.row,column-1,cursor.row,column+1)):(swap=line.charAt(column-1)+line.charAt(column-2),range=new Range(cursor.row,column-2,cursor.row,column)),this.session.replace(range,swap)}}},this.toLowerCase=function(){var originalRange=this.getSelectionRange();this.selection.isEmpty()&&this.selection.selectWord();var range=this.getSelectionRange(),text=this.session.getTextRange(range);this.session.replace(range,text.toLowerCase()),this.selection.setSelectionRange(originalRange)},this.toUpperCase=function(){var originalRange=this.getSelectionRange();this.selection.isEmpty()&&this.selection.selectWord();var range=this.getSelectionRange(),text=this.session.getTextRange(range);this.session.replace(range,text.toUpperCase()),this.selection.setSelectionRange(originalRange)},this.indent=function(){var session=this.session,range=this.getSelectionRange();if(!(range.start.row\u003Crange.end.row||range.start.column\u003Crange.end.column)){var indentString;if(this.session.getUseSoftTabs()){var size=session.getTabSize(),position=this.getCursorPosition(),column=session.documentToScreenColumn(position.row,position.column),count=size-column%size;indentString=lang.stringRepeat(\" \",count)}else indentString=\"\t\";return this.insert(indentString)}var rows=this.$getSelectedRows();session.indentRows(rows.first,rows.last,\"\t\")},this.blockIndent=function(){var rows=this.$getSelectedRows();this.session.indentRows(rows.first,rows.last,\"\t\")},this.blockOutdent=function(){var selection=this.session.getSelection();this.session.outdentRows(selection.getRange())},this.sortLines=function(){var rows=this.$getSelectedRows(),session=this.session,lines=[];for(i=rows.first;rows.last>=i;i++)lines.push(session.getLine(i));lines.sort(function(a,b){return a.toLowerCase()\u003Cb.toLowerCase()?-1:a.toLowerCase()>b.toLowerCase()?1:0});for(var deleteRange=new Range(0,0,0,0),i=rows.first;rows.last>=i;i++){var line=session.getLine(i);deleteRange.start.row=i,deleteRange.end.row=i,deleteRange.end.column=line.length,session.replace(deleteRange,lines[i-rows.first])}},this.toggleCommentLines=function(){var state=this.session.getState(this.getCursorPosition().row),rows=this.$getSelectedRows();this.session.getMode().toggleCommentLines(state,this.session,rows.first,rows.last)},this.getNumberAt=function(row,column){var _numberRx=/[\\-]?[0-9]+(?:\\.[0-9]+)?/g;_numberRx.lastIndex=0;for(var s=this.session.getLine(row);column>_numberRx.lastIndex;){var m=_numberRx.exec(s);if(column>=m.index&&m.index+m[0].length>=column){var number={value:m[0],start:m.index,end:m.index+m[0].length};return number}}return null},this.modifyNumber=function(amount){var row=this.selection.getCursor().row,column=this.selection.getCursor().column,charRange=new Range(row,column-1,row,column),c=this.session.getTextRange(charRange);if(!isNaN(parseFloat(c))&&isFinite(c)){var nr=this.getNumberAt(row,column);if(nr){var fp=nr.value.indexOf(\".\")>=0?nr.start+nr.value.indexOf(\".\")+1:nr.end,decimals=nr.start+nr.value.length-fp,t=parseFloat(nr.value);t*=Math.pow(10,decimals),amount*=fp!==nr.end&&fp>column?Math.pow(10,nr.end-column-1):Math.pow(10,nr.end-column),t+=amount,t/=Math.pow(10,decimals);var nnr=t.toFixed(decimals),replaceRange=new Range(row,nr.start,row,nr.end);this.session.replace(replaceRange,nnr),this.moveCursorTo(row,Math.max(nr.start+1,column+nnr.length-nr.value.length))}}},this.removeLines=function(){var range,rows=this.$getSelectedRows();range=0===rows.first||rows.last+1\u003Cthis.session.getLength()?new Range(rows.first,0,rows.last+1,0):new Range(rows.first-1,this.session.getLine(rows.first-1).length,rows.last,this.session.getLine(rows.last).length),this.session.remove(range),this.clearSelection()},this.duplicateSelection=function(){var sel=this.selection,doc=this.session,range=sel.getRange(),reverse=sel.isBackwards();if(range.isEmpty()){var row=range.start.row;doc.duplicateLines(row,row)}else{var point=reverse?range.start:range.end,endPoint=doc.insert(point,doc.getTextRange(range),!1);range.start=point,range.end=endPoint,sel.setSelectionRange(range,reverse)}},this.moveLinesDown=function(){this.$moveLines(function(firstRow,lastRow){return this.session.moveLinesDown(firstRow,lastRow)})},this.moveLinesUp=function(){this.$moveLines(function(firstRow,lastRow){return this.session.moveLinesUp(firstRow,lastRow)})},this.moveText=function(range,toPosition){return this.session.moveText(range,toPosition)},this.copyLinesUp=function(){this.$moveLines(function(firstRow,lastRow){return this.session.duplicateLines(firstRow,lastRow),0})},this.copyLinesDown=function(){this.$moveLines(function(firstRow,lastRow){return this.session.duplicateLines(firstRow,lastRow)})},this.$moveLines=function(mover){var selection=this.selection;if(!selection.inMultiSelectMode||this.inVirtualSelectionMode){var range=selection.toOrientedRange(),rows=this.$getSelectedRows(range),linesMoved=mover.call(this,rows.first,rows.last);range.moveBy(linesMoved,0),selection.fromOrientedRange(range)}else{var ranges=selection.rangeList.ranges;selection.rangeList.detach(this.session);for(var i=ranges.length;i--;){for(var rangeIndex=i,rows=ranges[i].collapseRows(),last=rows.end.row,first=rows.start.row;i--;){var rows=ranges[i].collapseRows();if(!(1>=first-rows.end.row))break;first=rows.end.row}i++;for(var linesMoved=mover.call(this,first,last);rangeIndex>=i;)ranges[rangeIndex].moveBy(linesMoved,0),rangeIndex--}selection.fromOrientedRange(selection.ranges[0]),selection.rangeList.attach(this.session)}},this.$getSelectedRows=function(){var range=this.getSelectionRange().collapseRows();return{first:range.start.row,last:range.end.row}},this.onCompositionStart=function(){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(text){this.renderer.setCompositionText(text)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(row){return row>=this.getFirstVisibleRow()&&this.getLastVisibleRow()>=row},this.isRowFullyVisible=function(row){return row>=this.renderer.getFirstFullyVisibleRow()&&this.renderer.getLastFullyVisibleRow()>=row},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(dir,select){var renderer=this.renderer,config=this.renderer.layerConfig,rows=dir*Math.floor(config.height/config.lineHeight);this.$blockScrolling++,1==select?this.selection.$moveSelection(function(){this.moveCursorBy(rows,0)}):0==select&&(this.selection.moveCursorBy(rows,0),this.selection.clearSelection()),this.$blockScrolling--;var scrollTop=renderer.scrollTop;renderer.scrollBy(0,rows*config.lineHeight),null!=select&&renderer.scrollCursorIntoView(null,.5),renderer.animateScrolling(scrollTop)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(row){this.renderer.scrollToRow(row)},this.scrollToLine=function(line,center,animate,callback){this.renderer.scrollToLine(line,center,animate,callback)},this.centerSelection=function(){var range=this.getSelectionRange(),pos={row:Math.floor(range.start.row+(range.end.row-range.start.row)/2),column:Math.floor(range.start.column+(range.end.column-range.start.column)/2)};this.renderer.alignCursor(pos,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(row,column){this.selection.moveCursorTo(row,column)},this.moveCursorToPosition=function(pos){this.selection.moveCursorToPosition(pos)},this.jumpToMatching=function(select){var cursor=this.getCursorPosition(),range=this.session.getBracketRange(cursor);if(!range){if(range=this.find({needle:/[{}()\\[\\]]/g,preventScroll:!0,start:{row:cursor.row,column:cursor.column-1}}),!range)return;var pos=range.start;pos.row==cursor.row&&2>Math.abs(pos.column-cursor.column)&&(range=this.session.getBracketRange(pos))}pos=range&&range.cursor||pos,pos&&(select?range&&range.isEqual(this.getSelectionRange())?this.clearSelection():this.selection.selectTo(pos.row,pos.column):(this.clearSelection(),this.moveCursorTo(pos.row,pos.column)))},this.gotoLine=function(lineNumber,column,animate){this.selection.clearSelection(),this.session.unfold({row:lineNumber-1,column:column||0}),this.$blockScrolling+=1,this.moveCursorTo(lineNumber-1,column||0),this.$blockScrolling-=1,this.isRowFullyVisible(lineNumber-1)||this.scrollToLine(lineNumber-1,!0,animate)},this.navigateTo=function(row,column){this.clearSelection(),this.moveCursorTo(row,column)},this.navigateUp=function(times){if(this.selection.isMultiLine()&&!this.selection.isBackwards()){var selectionStart=this.selection.anchor.getPosition();return this.moveCursorToPosition(selectionStart)}this.selection.clearSelection(),times=times||1,this.selection.moveCursorBy(-times,0)},this.navigateDown=function(times){if(this.selection.isMultiLine()&&this.selection.isBackwards()){var selectionEnd=this.selection.anchor.getPosition();return this.moveCursorToPosition(selectionEnd)}this.selection.clearSelection(),times=times||1,this.selection.moveCursorBy(times,0)},this.navigateLeft=function(times){if(this.selection.isEmpty())for(times=times||1;times--;)this.selection.moveCursorLeft();else{var selectionStart=this.getSelectionRange().start;this.moveCursorToPosition(selectionStart)}this.clearSelection()},this.navigateRight=function(times){if(this.selection.isEmpty())for(times=times||1;times--;)this.selection.moveCursorRight();else{var selectionEnd=this.getSelectionRange().end;this.moveCursorToPosition(selectionEnd)}this.clearSelection()},this.navigateLineStart=function(){this.selection.moveCursorLineStart(),this.clearSelection()},this.navigateLineEnd=function(){this.selection.moveCursorLineEnd(),this.clearSelection()},this.navigateFileEnd=function(){var scrollTop=this.renderer.scrollTop;this.selection.moveCursorFileEnd(),this.clearSelection(),this.renderer.animateScrolling(scrollTop)},this.navigateFileStart=function(){var scrollTop=this.renderer.scrollTop;this.selection.moveCursorFileStart(),this.clearSelection(),this.renderer.animateScrolling(scrollTop)},this.navigateWordRight=function(){this.selection.moveCursorWordRight(),this.clearSelection()},this.navigateWordLeft=function(){this.selection.moveCursorWordLeft(),this.clearSelection()},this.replace=function(replacement,options){options&&this.$search.set(options);var range=this.$search.find(this.session),replaced=0;return range?(this.$tryReplace(range,replacement)&&(replaced=1),null!==range&&(this.selection.setSelectionRange(range),this.renderer.scrollSelectionIntoView(range.start,range.end)),replaced):replaced},this.replaceAll=function(replacement,options){options&&this.$search.set(options);var ranges=this.$search.findAll(this.session),replaced=0;if(!ranges.length)return replaced;this.$blockScrolling+=1;var selection=this.getSelectionRange();this.clearSelection(),this.selection.moveCursorTo(0,0);for(var i=ranges.length-1;i>=0;--i)this.$tryReplace(ranges[i],replacement)&&replaced++;return this.selection.setSelectionRange(selection),this.$blockScrolling-=1,replaced},this.$tryReplace=function(range,replacement){var input=this.session.getTextRange(range);return replacement=this.$search.replace(input,replacement),null!==replacement?(range.end=this.session.replace(range,replacement),range):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(needle,options,animate){options||(options={}),\"string\"==typeof needle||needle instanceof RegExp?options.needle=needle:\"object\"==typeof needle&&oop.mixin(options,needle);\nvar range=this.selection.getRange();null==options.needle&&(needle=this.session.getTextRange(range)||this.$search.$options.needle,needle||(range=this.session.getWordRange(range.start.row,range.start.column),needle=this.session.getTextRange(range)),this.$search.set({needle:needle})),this.$search.set(options),options.start||this.$search.set({start:range});var newRange=this.$search.find(this.session);return options.preventScroll?newRange:newRange?(this.revealRange(newRange,animate),newRange):(options.backwards?range.start=range.end:range.end=range.start,this.selection.setRange(range),void 0)},this.findNext=function(options,animate){this.find({skipCurrent:!0,backwards:!1},options,animate)},this.findPrevious=function(options,animate){this.find(options,{skipCurrent:!0,backwards:!0},animate)},this.revealRange=function(range,animate){this.$blockScrolling+=1,this.session.unfold(range),this.selection.setSelectionRange(range),this.$blockScrolling-=1;var scrollTop=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(range.start,range.end,.5),0!=animate&&this.renderer.animateScrolling(scrollTop)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._emit(\"destroy\",this)},this.setAutoScrollEditorIntoView=function(enable){if(enable!==!1){var rect,self=this,shouldScroll=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement(\"div\"));var scrollAnchor=this.$scrollAnchor;scrollAnchor.style.cssText=\"position:absolute\",this.container.insertBefore(scrollAnchor,this.container.firstChild);var onChangeSelection=this.on(\"changeSelection\",function(){shouldScroll=!0}),onBeforeRender=this.renderer.on(\"beforeRender\",function(){shouldScroll&&(rect=self.renderer.container.getBoundingClientRect())}),onAfterRender=this.renderer.on(\"afterRender\",function(){if(shouldScroll&&rect&&self.isFocused()){var renderer=self.renderer,pos=renderer.$cursorLayer.$pixelPos,config=renderer.layerConfig,top=pos.top-config.offset;shouldScroll=pos.top>=0&&0>top+rect.top?!0:pos.top\u003Cconfig.height&&pos.top+rect.top+config.lineHeight>window.innerHeight?!1:null,null!=shouldScroll&&(scrollAnchor.style.top=top+\"px\",scrollAnchor.style.left=pos.left+\"px\",scrollAnchor.style.height=config.lineHeight+\"px\",scrollAnchor.scrollIntoView(shouldScroll)),shouldScroll=rect=null}});this.setAutoScrollEditorIntoView=function(enable){enable!==!0&&(delete this.setAutoScrollEditorIntoView,this.removeEventListener(\"changeSelection\",onChangeSelection),this.renderer.removeEventListener(\"afterRender\",onAfterRender),this.renderer.removeEventListener(\"beforeRender\",onBeforeRender))}}}}).call(Editor.prototype),config.defineOptions(Editor.prototype,\"editor\",{selectionStyle:{set:function(style){this.onSelectionChange(),this._emit(\"changeSelectionStyle\",{data:style})},initialValue:\"line\"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(readOnly){this.textInput.setReadOnly(readOnly);var cursorLayer=this.renderer.$cursorLayer;cursorLayer&&cursorLayer.setBlinking(!readOnly)},initialValue:!1},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},hScrollBarAlwaysVisible:\"renderer\",highlightGutterLine:\"renderer\",animatedScroll:\"renderer\",showInvisibles:\"renderer\",showPrintMargin:\"renderer\",printMarginColumn:\"renderer\",printMargin:\"renderer\",fadeFoldWidgets:\"renderer\",showFoldWidgets:\"renderer\",showGutter:\"renderer\",displayIndentGuides:\"renderer\",fontSize:\"renderer\",fontFamily:\"renderer\",scrollSpeed:\"$mouseHandler\",dragDelay:\"$mouseHandler\",focusTimout:\"$mouseHandler\",firstLineNumber:\"session\",overwrite:\"session\",newLineMode:\"session\",useWorker:\"session\",useSoftTabs:\"session\",tabSize:\"session\",wrap:\"session\",foldStyle:\"session\"}),exports.Editor=Editor}),ace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(acequire,exports){exports.stringReverse=function(string){return string.split(\"\").reverse().join(\"\")},exports.stringRepeat=function(string,count){for(var result=\"\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,\"\")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,\"\")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\"object\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function(obj){if(\"object\"!=typeof obj)return obj;var copy=obj.constructor();for(var key in obj)copy[key]=\"object\"==typeof obj[key]?this.deepCopy(obj[key]):obj[key];return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,\"\\\\$1\")},exports.escapeHTML=function(str){return str.replace(/&/g,\"&\").replace(/\"/g,\""\").replace(/'/g,\"'\").replace(/\u003C/g,\"<\")},exports.getMatchOffsets=function(string,regExp){var matches=[];return string.replace(regExp,function(str){matches.push({offset:arguments[arguments.length-2],length:str.length})}),matches},exports.deferredCall=function(fcn){var timer=null,callback=function(){timer=null,fcn()},deferred=function(timeout){return deferred.cancel(),timer=setTimeout(callback,timeout||0),deferred};return deferred.schedule=deferred,deferred.call=function(){return this.cancel(),fcn(),deferred},deferred.cancel=function(){return clearTimeout(timer),timer=null,deferred},deferred},exports.delayedCall=function(fcn,defaultTimeout){var timer=null,callback=function(){timer=null,fcn()},_self=function(timeout){timer&&clearTimeout(timer),timer=setTimeout(callback,timeout||defaultTimeout)};return _self.delay=_self,_self.schedule=function(timeout){null==timer&&(timer=setTimeout(callback,timeout||0))},_self.call=function(){this.cancel(),fcn()},_self.cancel=function(){timer&&clearTimeout(timer),timer=null},_self.isPending=function(){return timer},_self}}),ace.define(\"ace/keyboard/textinput\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/dom\",\"ace/lib/lang\"],function(acequire,exports){var event=acequire(\"../lib/event\"),useragent=acequire(\"../lib/useragent\"),dom=acequire(\"../lib/dom\"),lang=acequire(\"../lib/lang\"),BROKEN_SETDATA=18>useragent.isChrome,TextInput=function(parentNode,host){function resetSelection(isEmpty){if(!inComposition){if(inputHandler)selectionStart=0,selectionEnd=isEmpty?0:text.value.length-1;else var selectionStart=isEmpty?2:1,selectionEnd=2;try{text.setSelectionRange(selectionStart,selectionEnd)}catch(e){}}}function resetValue(){inComposition||(text.value=PLACEHOLDER,useragent.isWebKit&&syncValue.schedule())}function onContextMenuClose(){setTimeout(function(){tempStyle&&(text.style.cssText=tempStyle,tempStyle=\"\"),null==host.renderer.$keepTextAreaAtCursor&&(host.renderer.$keepTextAreaAtCursor=!0,host.renderer.$moveTextAreaToCursor())},0)}var text=dom.createElement(\"textarea\");text.className=\"ace_text-input\",useragent.isTouchPad&&text.setAttribute(\"x-palm-disable-auto-cap\",!0),text.wrap=\"off\",text.autocorrect=\"off\",text.autocapitalize=\"off\",text.spellcheck=!1,text.style.bottom=\"2000em\",parentNode.insertBefore(text,parentNode.firstChild);var PLACEHOLDER=\"\u0001\u0001\",cut=!1,copied=!1,pasted=!1,inComposition=!1,tempStyle=\"\",isSelectionEmpty=!0;try{var isFocused=document.activeElement===text}catch(e){}event.addListener(text,\"blur\",function(){host.onBlur(),isFocused=!1}),event.addListener(text,\"focus\",function(){isFocused=!0,host.onFocus(),resetSelection()}),this.focus=function(){text.focus()},this.blur=function(){text.blur()},this.isFocused=function(){return isFocused};var syncSelection=lang.delayedCall(function(){isFocused&&resetSelection(isSelectionEmpty)}),syncValue=lang.delayedCall(function(){inComposition||(text.value=PLACEHOLDER,isFocused&&resetSelection())});useragent.isWebKit||host.addEventListener(\"changeSelection\",function(){host.selection.isEmpty()!=isSelectionEmpty&&(isSelectionEmpty=!isSelectionEmpty,syncSelection.schedule())}),resetValue(),isFocused&&host.onFocus();var isAllSelected=function(text){return 0===text.selectionStart&&text.selectionEnd===text.value.length};if(!text.setSelectionRange&&text.createTextRange&&(text.setSelectionRange=function(selectionStart,selectionEnd){var range=this.createTextRange();range.collapse(!0),range.moveStart(\"character\",selectionStart),range.moveEnd(\"character\",selectionEnd),range.select()},isAllSelected=function(text){try{var range=text.ownerDocument.selection.createRange()}catch(e){}return range&&range.parentElement()==text?range.text==text.value:!1}),useragent.isOldIE){var inPropertyChange=!1,onPropertyChange=function(e){if(!inPropertyChange){var data=text.value;if(!inComposition&&data&&data!=PLACEHOLDER){if(e&&data==PLACEHOLDER[0])return syncProperty.schedule();sendText(data),inPropertyChange=!0,resetValue(),inPropertyChange=!1}}},syncProperty=lang.delayedCall(onPropertyChange);event.addListener(text,\"propertychange\",onPropertyChange);var keytable={13:1,27:1};event.addListener(text,\"keyup\",function(e){!inComposition||text.value&&!keytable[e.keyCode]||setTimeout(onCompositionEnd,0),129>(text.value.charCodeAt(0)||0)||(inComposition?onCompositionUpdate():onCompositionStart())})}var onSelect=function(){cut?cut=!1:copied?copied=!1:isAllSelected(text)?(host.selectAll(),resetSelection()):inputHandler&&resetSelection(host.selection.isEmpty())},inputHandler=null;this.setInputHandler=function(cb){inputHandler=cb},this.getInputHandler=function(){return inputHandler};var afterContextMenu=!1,sendText=function(data){inputHandler&&(data=inputHandler(data),inputHandler=null),pasted?(resetSelection(),data&&host.onPaste(data),pasted=!1):data==PLACEHOLDER[0]?afterContextMenu&&host.execCommand(\"del\",{source:\"ace\"}):(data.substring(0,2)==PLACEHOLDER?data=data.substr(2):data[0]==PLACEHOLDER[0]?data=data.substr(1):data[data.length-1]==PLACEHOLDER[0]&&(data=data.slice(0,-1)),data[data.length-1]==PLACEHOLDER[0]&&(data=data.slice(0,-1)),data&&host.onTextInput(data)),afterContextMenu&&(afterContextMenu=!1)},onInput=function(){if(!inComposition){var data=text.value;sendText(data),resetValue()}},onCut=function(e){var data=host.getCopyText();if(!data)return event.preventDefault(e),void 0;var clipboardData=e.clipboardData||window.clipboardData;if(clipboardData&&!BROKEN_SETDATA){var supported=clipboardData.setData(\"Text\",data);supported&&(host.onCut(),event.preventDefault(e))}supported||(cut=!0,text.value=data,text.select(),setTimeout(function(){cut=!1,resetValue(),resetSelection(),host.onCut()}))},onCopy=function(e){var data=host.getCopyText();if(!data)return event.preventDefault(e),void 0;var clipboardData=e.clipboardData||window.clipboardData;if(clipboardData&&!BROKEN_SETDATA){var supported=clipboardData.setData(\"Text\",data);supported&&(host.onCopy(),event.preventDefault(e))}supported||(copied=!0,text.value=data,text.select(),setTimeout(function(){copied=!1,resetValue(),resetSelection(),host.onCopy()}))},onPaste=function(e){var clipboardData=e.clipboardData||window.clipboardData;if(clipboardData){var data=clipboardData.getData(\"Text\");data&&host.onPaste(data),useragent.isIE&&setTimeout(resetSelection),event.preventDefault(e)}else text.value=\"\",pasted=!0};event.addCommandKeyListener(text,host.onCommandKey.bind(host)),event.addListener(text,\"select\",onSelect),event.addListener(text,\"input\",onInput),event.addListener(text,\"cut\",onCut),event.addListener(text,\"copy\",onCopy),event.addListener(text,\"paste\",onPaste),\"oncut\"in text&&\"oncopy\"in text&&\"onpaste\"in text||event.addListener(parentNode,\"keydown\",function(e){if((!useragent.isMac||e.metaKey)&&e.ctrlKey)switch(e.keyCode){case 67:onCopy(e);break;case 86:onPaste(e);break;case 88:onCut(e)}});var onCompositionStart=function(){inComposition={},host.onCompositionStart(),setTimeout(onCompositionUpdate,0),host.on(\"mousedown\",onCompositionEnd),host.selection.isEmpty()||(host.insert(\"\"),host.session.markUndoGroup(),host.selection.clearSelection()),host.session.markUndoGroup()},onCompositionUpdate=function(){if(inComposition&&(host.onCompositionUpdate(text.value),inComposition.lastValue&&host.undo(),inComposition.lastValue=text.value.replace(/\\x01/g,\"\"),inComposition.lastValue)){var r=host.selection.getRange();host.insert(inComposition.lastValue),host.session.markUndoGroup(),inComposition.range=host.selection.getRange(),host.selection.setRange(r),host.selection.clearSelection()}},onCompositionEnd=function(e){var c=inComposition;inComposition=!1;var timer=setTimeout(function(){var str=text.value.replace(/\\x01/g,\"\");inComposition||str!=c.lastValue||resetValue()});inputHandler=function(str){return clearTimeout(timer),str=str.replace(/\\x01/g,\"\"),str==c.lastValue?\"\":(str||c.lastValue&&host.undo(),str)},host.onCompositionEnd(),host.removeListener(\"mousedown\",onCompositionEnd),\"compositionend\"==e.type&&host.selection.setRange(c.range)},syncComposition=lang.delayedCall(onCompositionUpdate,50);event.addListener(text,\"compositionstart\",onCompositionStart),event.addListener(text,useragent.isGecko?\"text\":\"keyup\",function(){syncComposition.schedule()}),event.addListener(text,\"compositionend\",onCompositionEnd),this.getElement=function(){return text},this.setReadOnly=function(readOnly){text.readOnly=readOnly},this.onContextMenu=function(e){afterContextMenu=!0,tempStyle||(tempStyle=text.style.cssText),text.style.cssText=\"z-index:100000;\"+(useragent.isIE?\"opacity:0.1;\":\"\"),resetSelection(host.selection.isEmpty()),host._emit(\"nativecontextmenu\",{target:host});var rect=host.container.getBoundingClientRect(),style=dom.computedStyle(host.container),top=rect.top+(parseInt(style.borderTopWidth)||0),left=rect.left+(parseInt(rect.borderLeftWidth)||0),maxTop=rect.bottom-top-text.clientHeight,move=function(e){text.style.left=e.clientX-left-2+\"px\",text.style.top=Math.min(e.clientY-top-2,maxTop)+\"px\"};move(e),\"mousedown\"==e.type&&(host.renderer.$keepTextAreaAtCursor&&(host.renderer.$keepTextAreaAtCursor=null),useragent.isWin&&event.capture(host.container,move,onContextMenuClose))},this.onContextMenuClose=onContextMenuClose,useragent.isGecko||event.addListener(text,\"contextmenu\",function(e){host.textInput.onContextMenu(e),onContextMenuClose()})};exports.TextInput=TextInput}),ace.define(\"ace/mouse/mouse_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/mouse/default_handlers\",\"ace/mouse/default_gutter_handler\",\"ace/mouse/mouse_event\",\"ace/mouse/dragdrop\",\"ace/config\"],function(acequire,exports){var event=acequire(\"../lib/event\"),useragent=acequire(\"../lib/useragent\"),DefaultHandlers=acequire(\"./default_handlers\").DefaultHandlers,DefaultGutterHandler=acequire(\"./default_gutter_handler\").GutterHandler,MouseEvent=acequire(\"./mouse_event\").MouseEvent,DragdropHandler=acequire(\"./dragdrop\").DragdropHandler,config=acequire(\"../config\"),MouseHandler=function(editor){this.editor=editor,new DefaultHandlers(this),new DefaultGutterHandler(this),new DragdropHandler(this),event.addListener(editor.container,\"mousedown\",function(e){return editor.focus(),event.preventDefault(e)});var mouseTarget=editor.renderer.getMouseEventTarget();event.addListener(mouseTarget,\"click\",this.onMouseEvent.bind(this,\"click\")),event.addListener(mouseTarget,\"mousemove\",this.onMouseMove.bind(this,\"mousemove\")),event.addMultiMouseDownListener(mouseTarget,[300,300,250],this,\"onMouseEvent\"),event.addMouseWheelListener(editor.container,this.onMouseWheel.bind(this,\"mousewheel\"));var gutterEl=editor.renderer.$gutter;event.addListener(gutterEl,\"mousedown\",this.onMouseEvent.bind(this,\"guttermousedown\")),event.addListener(gutterEl,\"click\",this.onMouseEvent.bind(this,\"gutterclick\")),event.addListener(gutterEl,\"dblclick\",this.onMouseEvent.bind(this,\"gutterdblclick\")),event.addListener(gutterEl,\"mousemove\",this.onMouseEvent.bind(this,\"guttermousemove\"))};(function(){this.onMouseEvent=function(name,e){this.editor._emit(name,new MouseEvent(e,this.editor))},this.onMouseMove=function(name,e){var listeners=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;listeners&&listeners.length&&this.editor._emit(name,new MouseEvent(e,this.editor))},this.onMouseWheel=function(name,e){var mouseEvent=new MouseEvent(e,this.editor);mouseEvent.speed=2*this.$scrollSpeed,mouseEvent.wheelX=e.wheelX,mouseEvent.wheelY=e.wheelY,this.editor._emit(name,mouseEvent)},this.setState=function(state){this.state=state},this.captureMouse=function(ev,state){state&&this.setState(state),this.x=ev.x,this.y=ev.y,this.isMousePressed=!0;var renderer=this.editor.renderer;renderer.$keepTextAreaAtCursor&&(renderer.$keepTextAreaAtCursor=null);var self=this,onMouseMove=function(e){self.x=e.clientX,self.y=e.clientY},onCaptureEnd=function(e){clearInterval(timerId),onCaptureInterval(),self[self.state+\"End\"]&&self[self.state+\"End\"](e),self.$clickSelection=null,null==renderer.$keepTextAreaAtCursor&&(renderer.$keepTextAreaAtCursor=!0,renderer.$moveTextAreaToCursor()),self.isMousePressed=!1,self.onMouseEvent(\"mouseup\",e)},onCaptureInterval=function(){self[self.state]&&self[self.state]()};if(useragent.isOldIE&&\"dblclick\"==ev.domEvent.type)return setTimeout(function(){onCaptureEnd(ev.domEvent)});event.capture(this.editor.container,onMouseMove,onCaptureEnd);var timerId=setInterval(onCaptureInterval,20)}}).call(MouseHandler.prototype),config.defineOptions(MouseHandler.prototype,\"mouseHandler\",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:150},focusTimout:{initialValue:0}}),exports.MouseHandler=MouseHandler}),ace.define(\"ace/mouse/default_handlers\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/useragent\"],function(acequire,exports){function DefaultHandlers(mouseHandler){mouseHandler.$clickSelection=null;var editor=mouseHandler.editor;editor.setDefaultHandler(\"mousedown\",this.onMouseDown.bind(mouseHandler)),editor.setDefaultHandler(\"dblclick\",this.onDoubleClick.bind(mouseHandler)),editor.setDefaultHandler(\"tripleclick\",this.onTripleClick.bind(mouseHandler)),editor.setDefaultHandler(\"quadclick\",this.onQuadClick.bind(mouseHandler)),editor.setDefaultHandler(\"mousewheel\",this.onMouseWheel.bind(mouseHandler));var exports=[\"select\",\"startSelect\",\"drag\",\"dragEnd\",\"dragWait\",\"dragWaitEnd\",\"startDrag\",\"focusWait\"];exports.forEach(function(x){mouseHandler[x]=this[x]},this),mouseHandler.selectByLines=this.extendSelectionBy.bind(mouseHandler,\"getLineRange\"),mouseHandler.selectByWords=this.extendSelectionBy.bind(mouseHandler,\"getWordRange\")}function calcDistance(ax,ay,bx,by){return Math.sqrt(Math.pow(bx-ax,2)+Math.pow(by-ay,2))}function calcRangeOrientation(range,cursor){if(range.start.row==range.end.row)var cmp=2*cursor.column-range.start.column-range.end.column;else var cmp=2*cursor.row-range.start.row-range.end.row;return 0>cmp?{cursor:range.start,anchor:range.end}:{cursor:range.end,anchor:range.start}}var dom=acequire(\"../lib/dom\");acequire(\"../lib/useragent\");var DRAG_OFFSET=0;(function(){this.onMouseDown=function(ev){var inSelection=ev.inSelection(),pos=ev.getDocumentPosition();this.mousedownEvent=ev;var editor=this.editor,button=ev.getButton();if(0!==button){var selectionRange=editor.getSelectionRange(),selectionEmpty=selectionRange.isEmpty();return selectionEmpty&&(editor.moveCursorToPosition(pos),editor.selection.clearSelection()),editor.textInput.onContextMenu(ev.domEvent),void 0}return!inSelection||editor.isFocused()||(editor.focus(),!this.$focusTimout||this.$clickSelection||editor.inMultiSelectMode)?(!inSelection||this.$clickSelection||ev.getShiftKey()||editor.inMultiSelectMode?this.startSelect(pos):inSelection&&(this.mousedownEvent.time=(new Date).getTime(),this.setState(\"dragWait\")),this.captureMouse(ev),ev.preventDefault()):(this.setState(\"focusWait\"),this.captureMouse(ev),ev.preventDefault())},this.startSelect=function(pos){pos=pos||this.editor.renderer.screenToTextCoordinates(this.x,this.y),this.mousedownEvent.getShiftKey()?this.editor.selection.selectToPosition(pos):this.$clickSelection||(this.editor.moveCursorToPosition(pos),this.editor.selection.clearSelection()),this.setState(\"select\")},this.select=function(){var anchor,editor=this.editor,cursor=editor.renderer.screenToTextCoordinates(this.x,this.y);if(this.$clickSelection){var cmp=this.$clickSelection.comparePoint(cursor);if(-1==cmp)anchor=this.$clickSelection.end;else if(1==cmp)anchor=this.$clickSelection.start;else{var orientedRange=calcRangeOrientation(this.$clickSelection,cursor);cursor=orientedRange.cursor,anchor=orientedRange.anchor}editor.selection.setSelectionAnchor(anchor.row,anchor.column)}editor.selection.selectToPosition(cursor),editor.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(unitName){var anchor,editor=this.editor,cursor=editor.renderer.screenToTextCoordinates(this.x,this.y),range=editor.selection[unitName](cursor.row,cursor.column);if(this.$clickSelection){var cmpStart=this.$clickSelection.comparePoint(range.start),cmpEnd=this.$clickSelection.comparePoint(range.end);if(-1==cmpStart&&0>=cmpEnd)anchor=this.$clickSelection.end,(range.end.row!=cursor.row||range.end.column!=cursor.column)&&(cursor=range.start);else if(1==cmpEnd&&cmpStart>=0)anchor=this.$clickSelection.start,(range.start.row!=cursor.row||range.start.column!=cursor.column)&&(cursor=range.end);else if(-1==cmpStart&&1==cmpEnd)cursor=range.end,anchor=range.start;else{var orientedRange=calcRangeOrientation(this.$clickSelection,cursor);cursor=orientedRange.cursor,anchor=orientedRange.anchor}editor.selection.setSelectionAnchor(anchor.row,anchor.column)}editor.selection.selectToPosition(cursor),editor.renderer.scrollCursorIntoView()},this.startDrag=function(){var editor=this.editor;this.setState(\"drag\"),this.dragRange=editor.getSelectionRange();var style=editor.getSelectionStyle();this.dragSelectionMarker=editor.session.addMarker(this.dragRange,\"ace_selection\",style),editor.clearSelection(),dom.addCssClass(editor.container,\"ace_dragging\"),this.$dragKeybinding||(this.$dragKeybinding={handleKeyboard:function(data,hashId,keyString){return\"esc\"==keyString?{command:this.command}:void 0},command:{exec:function(editor){var self=editor.$mouseHandler;self.dragCursor=null,self.dragEnd(),self.startSelect()}}}),editor.keyBinding.addKeyboardHandler(this.$dragKeybinding)},this.focusWait=function(){var distance=calcDistance(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),time=(new Date).getTime();(distance>DRAG_OFFSET||time-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.dragWait=function(){var distance=calcDistance(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),time=(new Date).getTime(),editor=this.editor;distance>DRAG_OFFSET?this.startSelect(this.mousedownEvent.getDocumentPosition()):time-this.mousedownEvent.time>editor.$mouseHandler.$dragDelay&&this.startDrag()},this.dragWaitEnd=function(e){this.mousedownEvent.domEvent=e,this.startSelect()},this.drag=function(){var editor=this.editor;this.dragCursor=editor.renderer.screenToTextCoordinates(this.x,this.y),editor.moveCursorToPosition(this.dragCursor),editor.renderer.scrollCursorIntoView()},this.dragEnd=function(e){var editor=this.editor,dragCursor=this.dragCursor,dragRange=this.dragRange;if(dom.removeCssClass(editor.container,\"ace_dragging\"),editor.session.removeMarker(this.dragSelectionMarker),editor.keyBinding.removeKeyboardHandler(this.$dragKeybinding),dragCursor){if(editor.clearSelection(),e&&(e.ctrlKey||e.altKey)){var session=editor.session,newRange=dragRange;newRange.end=session.insert(dragCursor,session.getTextRange(dragRange)),newRange.start=dragCursor}else{if(dragRange.contains(dragCursor.row,dragCursor.column))return;var newRange=editor.moveText(dragRange,dragCursor)}newRange&&editor.selection.setSelectionRange(newRange)}},this.onDoubleClick=function(ev){var pos=ev.getDocumentPosition(),editor=this.editor,session=editor.session,range=session.getBracketRange(pos);return range?(range.isEmpty()&&(range.start.column--,range.end.column++),this.$clickSelection=range,this.setState(\"select\"),void 0):(this.$clickSelection=editor.selection.getWordRange(pos.row,pos.column),this.setState(\"selectByWords\"),void 0)},this.onTripleClick=function(ev){var pos=ev.getDocumentPosition(),editor=this.editor;this.setState(\"selectByLines\"),this.$clickSelection=editor.selection.getLineRange(pos.row)},this.onQuadClick=function(){var editor=this.editor;editor.selectAll(),this.$clickSelection=editor.getSelectionRange(),this.setState(\"null\")},this.onMouseWheel=function(ev){if(!ev.getShiftKey()&&!ev.getAccelKey()){var t=ev.domEvent.timeStamp,dt=t-(this.$lastScrollTime||0),editor=this.editor,isScrolable=editor.renderer.isScrollableBy(ev.wheelX*ev.speed,ev.wheelY*ev.speed);return isScrolable||200>dt?(this.$lastScrollTime=t,editor.renderer.scrollBy(ev.wheelX*ev.speed,ev.wheelY*ev.speed),ev.stop()):void 0}}}).call(DefaultHandlers.prototype),exports.DefaultHandlers=DefaultHandlers}),ace.define(\"ace/mouse/default_gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\"],function(acequire,exports){function GutterHandler(mouseHandler){function createTooltip(){tooltip=dom.createElement(\"div\"),tooltip.className=\"ace_gutter-tooltip\",tooltip.style.display=\"none\",editor.container.appendChild(tooltip)}function showTooltip(){tooltip||createTooltip();var row=mouseEvent.getDocumentPosition().row,annotation=gutter.$annotations[row];if(!annotation)return hideTooltip();var maxRow=editor.session.getLength();if(row==maxRow){var screenRow=editor.renderer.pixelToScreenCoordinates(0,mouseEvent.y).row,pos=mouseEvent.$pos;if(screenRow>editor.session.documentToScreenRow(pos.row,pos.column))return hideTooltip()}tooltipAnnotation!=annotation&&(tooltipAnnotation=annotation.text.join(\"\u003Cbr/>\"),tooltip.style.display=\"block\",tooltip.innerHTML=tooltipAnnotation,editor.on(\"mousewheel\",hideTooltip),moveTooltip(mouseEvent))}function hideTooltip(){tooltipTimeout&&(tooltipTimeout=clearTimeout(tooltipTimeout)),tooltipAnnotation&&(tooltip.style.display=\"none\",tooltipAnnotation=null,editor.removeEventListener(\"mousewheel\",hideTooltip))}function moveTooltip(e){var rect=editor.renderer.$gutter.getBoundingClientRect();tooltip.style.left=e.x+15+\"px\",e.y+3*editor.renderer.lineHeight+15\u003Crect.bottom?(tooltip.style.bottom=\"\",tooltip.style.top=e.y+15+\"px\"):(tooltip.style.top=\"\",tooltip.style.bottom=rect.bottom-e.y+5+\"px\")}var editor=mouseHandler.editor,gutter=editor.renderer.$gutterLayer;mouseHandler.editor.setDefaultHandler(\"guttermousedown\",function(e){if(editor.isFocused()){var gutterRegion=gutter.getRegion(e);if(\"foldWidgets\"!=gutterRegion){var row=e.getDocumentPosition().row,selection=editor.session.selection;if(e.getShiftKey())selection.selectTo(row,0);else{if(2==e.domEvent.detail)return editor.selectAll(),e.preventDefault();mouseHandler.$clickSelection=editor.selection.getLineRange(row)}return mouseHandler.captureMouse(e,\"selectByLines\"),e.preventDefault()}}});var tooltipTimeout,mouseEvent,tooltip,tooltipAnnotation;mouseHandler.editor.setDefaultHandler(\"guttermousemove\",function(e){var target=e.domEvent.target||e.domEvent.srcElement;return dom.hasCssClass(target,\"ace_fold-widget\")?hideTooltip():(tooltipAnnotation&&moveTooltip(e),mouseEvent=e,tooltipTimeout||(tooltipTimeout=setTimeout(function(){tooltipTimeout=null,mouseEvent&&!mouseHandler.isMousePressed?showTooltip():hideTooltip()},50)),void 0)}),event.addListener(editor.renderer.$gutter,\"mouseout\",function(){mouseEvent=null,tooltipAnnotation&&!tooltipTimeout&&(tooltipTimeout=setTimeout(function(){tooltipTimeout=null,hideTooltip()},50))})}var dom=acequire(\"../lib/dom\"),event=acequire(\"../lib/event\");exports.GutterHandler=GutterHandler}),ace.define(\"ace/mouse/mouse_event\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"],function(acequire,exports){var event=acequire(\"../lib/event\"),useragent=acequire(\"../lib/useragent\"),MouseEvent=exports.MouseEvent=function(domEvent,editor){this.domEvent=domEvent,this.editor=editor,this.x=this.clientX=domEvent.clientX,this.y=this.clientY=domEvent.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){event.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){event.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var editor=this.editor;if(editor.getReadOnly())this.$inSelection=!1;else{var selectionRange=editor.getSelectionRange();if(selectionRange.isEmpty())this.$inSelection=!1;else{var pos=this.getDocumentPosition();this.$inSelection=selectionRange.contains(pos.row,pos.column)}}return this.$inSelection},this.getButton=function(){return event.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=useragent.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(MouseEvent.prototype)}),ace.define(\"ace/mouse/dragdrop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"],function(acequire,exports){var event=acequire(\"../lib/event\"),DragdropHandler=function(mouseHandler){function addDragMarker(){range=editor.selection.toOrientedRange(),dragSelectionMarker=editor.session.addMarker(range,\"ace_selection\",editor.getSelectionStyle()),editor.clearSelection(),clearInterval(timerId),timerId=setInterval(onDragInterval,20),counter=0,event.addListener(document,\"mousemove\",onMouseMove)}function clearDragMarker(){clearInterval(timerId),editor.session.removeMarker(dragSelectionMarker),dragSelectionMarker=null,editor.selection.fromOrientedRange(range),counter=0,event.removeListener(document,\"mousemove\",onMouseMove)}function onMouseMove(){null==onMouseMoveTimer&&(onMouseMoveTimer=setTimeout(function(){null!=onMouseMoveTimer&&dragSelectionMarker&&clearDragMarker()},20))}var dragSelectionMarker,x,y,timerId,range,dragCursor,editor=mouseHandler.editor,counter=0,mouseTarget=editor.container;event.addListener(mouseTarget,\"dragenter\",function(e){if(!editor.getReadOnly()){var types=e.dataTransfer.types;if(!types||-1!==Array.prototype.indexOf.call(types,\"text/plain\"))return dragSelectionMarker||addDragMarker(),counter++,event.preventDefault(e)}}),event.addListener(mouseTarget,\"dragover\",function(e){if(!editor.getReadOnly()){var types=e.dataTransfer.types;if(!types||-1!==Array.prototype.indexOf.call(types,\"text/plain\"))return null!==onMouseMoveTimer&&(onMouseMoveTimer=null),x=e.clientX,y=e.clientY,event.preventDefault(e)}});var onDragInterval=function(){dragCursor=editor.renderer.screenToTextCoordinates(x,y),editor.moveCursorToPosition(dragCursor),editor.renderer.scrollCursorIntoView()};event.addListener(mouseTarget,\"dragleave\",function(e){return counter--,0>=counter&&dragSelectionMarker?(clearDragMarker(),event.preventDefault(e)):void 0}),event.addListener(mouseTarget,\"drop\",function(e){return dragSelectionMarker?(range.end=editor.session.insert(dragCursor,e.dataTransfer.getData(\"Text\")),range.start=dragCursor,clearDragMarker(),editor.focus(),event.preventDefault(e)):void 0});var onMouseMoveTimer=null};exports.DragdropHandler=DragdropHandler}),ace.define(\"ace/config\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/lib/net\",\"ace/lib/event_emitter\"],function(acequire,exports,module){\"no use strict\";\nfunction deHyphenate(str){return str.replace(/-(.)/g,function(m,m1){return m1.toUpperCase()})}var lang=acequire(\"./lib/lang\"),oop=acequire(\"./lib/oop\"),net=acequire(\"./lib/net\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,global=function(){return this}(),options={packaged:!1,workerPath:null,modePath:null,themePath:null,basePath:\"\",suffix:\".js\",$moduleUrls:{}};exports.get=function(key){if(!options.hasOwnProperty(key))throw Error(\"Unknown config key: \"+key);return options[key]},exports.set=function(key,value){if(!options.hasOwnProperty(key))throw Error(\"Unknown config key: \"+key);options[key]=value},exports.all=function(){return lang.copyObject(options)},oop.implement(exports,EventEmitter),exports.moduleUrl=function(name,component){if(options.$moduleUrls[name])return options.$moduleUrls[name];var parts=name.split(\"/\");component=component||parts[parts.length-2]||\"\";var base=parts[parts.length-1].replace(component,\"\").replace(/(^[\\-_])|([\\-_]$)/,\"\");!base&&parts.length>1&&(base=parts[parts.length-2]);var path=options[component+\"Path\"];return null==path&&(path=options.basePath),path&&\"/\"!=path.slice(-1)&&(path+=\"/\"),path+component+\"-\"+base+this.get(\"suffix\")},exports.setModuleUrl=function(name,subst){return options.$moduleUrls[name]=subst},exports.$loading={},exports.loadModule=function(moduleName,onLoad){var module,moduleType;Array.isArray(moduleName)&&(moduleType=moduleName[0],moduleName=moduleName[1]);try{module=acequire(moduleName)}catch(e){}if(module&&!exports.$loading[moduleName])return onLoad&&onLoad(module);if(exports.$loading[moduleName]||(exports.$loading[moduleName]=[]),exports.$loading[moduleName].push(onLoad),!(exports.$loading[moduleName].length>1)){var afterLoad=function(){acequire([moduleName],function(module){exports._emit(\"load.module\",{name:moduleName,module:module});var listeners=exports.$loading[moduleName];exports.$loading[moduleName]=null,listeners.forEach(function(onLoad){onLoad&&onLoad(module)})})};return exports.get(\"packaged\")?(net.loadScript(exports.moduleUrl(moduleName,moduleType),afterLoad),void 0):afterLoad()}},exports.init=function(){if(options.packaged=acequire.packaged||module.packaged||global.define&&define.packaged,!global.document)return\"\";for(var scriptOptions={},scriptUrl=\"\",scripts=document.getElementsByTagName(\"script\"),i=0;scripts.length>i;i++){var script=scripts[i],src=script.src||script.getAttribute(\"src\");if(src){for(var attributes=script.attributes,j=0,l=attributes.length;l>j;j++){var attr=attributes[j];0===attr.name.indexOf(\"data-ace-\")&&(scriptOptions[deHyphenate(attr.name.replace(/^data-ace-/,\"\"))]=attr.value)}var m=src.match(/^(.*)\\/ace(\\-\\w+)?\\.js(\\?|$)/);m&&(scriptUrl=m[1])}}scriptUrl&&(scriptOptions.base=scriptOptions.base||scriptUrl,scriptOptions.packaged=!0),scriptOptions.basePath=scriptOptions.base,scriptOptions.workerPath=scriptOptions.workerPath||scriptOptions.base,scriptOptions.modePath=scriptOptions.modePath||scriptOptions.base,scriptOptions.themePath=scriptOptions.themePath||scriptOptions.base,delete scriptOptions.base;for(var key in scriptOptions)scriptOptions[key]!==void 0&&exports.set(key,scriptOptions[key])};var optionsProvider={setOptions:function(optList){Object.keys(optList).forEach(function(key){this.setOption(key,optList[key])},this)},getOptions:function(a){var b={};return Object.keys(a).forEach(function(key){b[key]=this.getOption(key)},this),b},setOption:function(name,value){if(this[\"$\"+name]!==value){var opt=this.$options[name];if(!opt)return void 0;if(opt.forwardTo)return this[opt.forwardTo]&&this[opt.forwardTo].setOption(name,value);opt.handlesSet||(this[\"$\"+name]=value),opt&&opt.set&&opt.set.call(this,value)}},getOption:function(name){var opt=this.$options[name];return opt?opt.forwardTo?this[opt.forwardTo]&&this[opt.forwardTo].getOption(name):opt&&opt.get?opt.get.call(this):this[\"$\"+name]:void 0}},defaultOptions={};exports.defineOptions=function(obj,path,options){return obj.$options||(defaultOptions[path]=obj.$options={}),Object.keys(options).forEach(function(key){var opt=options[key];\"string\"==typeof opt&&(opt={forwardTo:opt}),opt.name||(opt.name=key),obj.$options[opt.name]=opt,\"initialValue\"in opt&&(obj[\"$\"+opt.name]=opt.initialValue)}),oop.implement(obj,optionsProvider),this},exports.resetOptions=function(obj){Object.keys(obj.$options).forEach(function(key){var opt=obj.$options[key];\"value\"in opt&&obj.setOption(key,opt.value)})},exports.setDefaultValue=function(path,name,value){var opts=defaultOptions[path]||(defaultOptions[path]={});opts[name]&&(opts.forwardTo?exports.setDefaultValue(opts.forwardTo,name,value):opts[name].value=value)},exports.setDefaultValues=function(path,optionHash){Object.keys(optionHash).forEach(function(key){exports.setDefaultValue(path,key,optionHash[key])})}}),ace.define(\"ace/lib/net\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(acequire,exports){var dom=acequire(\"./dom\");exports.get=function(url,callback){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,!0),xhr.onreadystatechange=function(){4===xhr.readyState&&callback(xhr.responseText)},xhr.send(null)},exports.loadScript=function(path,callback){var head=dom.getDocumentHead(),s=document.createElement(\"script\");s.src=path,head.appendChild(s),s.onload=s.onreadystatechange=function(_,isAbort){(isAbort||!s.readyState||\"loaded\"==s.readyState||\"complete\"==s.readyState)&&(s=s.onload=s.onreadystatechange=null,isAbort||callback())}}}),ace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\"object\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault);for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners)for(var i=0;listeners.length>i;i++)listeners[i](e,this)},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){if(this._defaultHandlers=this._defaultHandlers||{},this._defaultHandlers[eventName])throw Error(\"The default handler for '\"+eventName+\"' is already set\");this._defaultHandlers[eventName]=callback},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\"unshift\":\"push\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\"ace/mouse/fold_handler\",[\"require\",\"exports\",\"module\"],function(acequire,exports){function FoldHandler(editor){editor.on(\"click\",function(e){var position=e.getDocumentPosition(),session=editor.session,fold=session.getFoldAt(position.row,position.column,1);fold&&(e.getAccelKey()?session.removeFold(fold):session.expandFold(fold),e.stop())}),editor.on(\"gutterclick\",function(e){var gutterRegion=editor.renderer.$gutterLayer.getRegion(e);if(\"foldWidgets\"==gutterRegion){var row=e.getDocumentPosition().row,session=editor.session;session.foldWidgets&&session.foldWidgets[row]&&editor.session.onFoldWidgetClick(row,e),editor.isFocused()||editor.focus(),e.stop()}}),editor.on(\"gutterdblclick\",function(e){var gutterRegion=editor.renderer.$gutterLayer.getRegion(e);if(\"foldWidgets\"==gutterRegion){var row=e.getDocumentPosition().row,session=editor.session,data=session.getParentFoldRangeData(row,!0),range=data.range||data.firstRange;if(range){var row=range.start.row,fold=session.getFoldAt(row,session.getLine(row).length,1);fold?session.removeFold(fold):(session.addFold(\"...\",range),editor.renderer.scrollCursorIntoView({row:range.start.row,column:0}))}e.stop()}})}exports.FoldHandler=FoldHandler}),ace.define(\"ace/keyboard/keybinding\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/event\"],function(acequire,exports){var keyUtil=acequire(\"../lib/keys\"),event=acequire(\"../lib/event\"),KeyBinding=function(editor){this.$editor=editor,this.$data={},this.$handlers=[],this.setDefaultHandler(editor.commands)};(function(){this.setDefaultHandler=function(kb){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=kb,this.addKeyboardHandler(kb,0),this.$data={editor:this.$editor}},this.setKeyboardHandler=function(kb){var h=this.$handlers;if(h[h.length-1]!=kb){for(;h[h.length-1]&&h[h.length-1]!=this.$defaultHandler;)this.removeKeyboardHandler(h[h.length-1]);this.addKeyboardHandler(kb,1)}},this.addKeyboardHandler=function(kb,pos){if(kb){var i=this.$handlers.indexOf(kb);-1!=i&&this.$handlers.splice(i,1),void 0==pos?this.$handlers.push(kb):this.$handlers.splice(pos,0,kb),-1==i&&kb.attach&&kb.attach(this.$editor)}},this.removeKeyboardHandler=function(kb){var i=this.$handlers.indexOf(kb);return-1==i?!1:(this.$handlers.splice(i,1),kb.detach&&kb.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.$callKeyboardHandlers=function(hashId,keyString,keyCode,e){for(var toExecute,success=!1,commands=this.$editor.commands,i=this.$handlers.length;i--&&(toExecute=this.$handlers[i].handleKeyboard(this.$data,hashId,keyString,keyCode,e),!(toExecute&&toExecute.command&&(success=\"null\"==toExecute.command?1!=toExecute.passEvent:commands.exec(toExecute.command,this.$editor,toExecute.args,e),success&&e&&-1!=hashId&&event.stopEvent(e),success))););return success},this.onCommandKey=function(e,hashId,keyCode){var keyString=keyUtil.keyCodeToString(keyCode);this.$callKeyboardHandlers(hashId,keyString,keyCode,e)},this.onTextInput=function(text){var success=this.$callKeyboardHandlers(-1,text);success||this.$editor.commands.exec(\"insertstring\",this.$editor,text)}}).call(KeyBinding.prototype),exports.KeyBinding=KeyBinding}),ace.define(\"ace/edit_session\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/config\",\"ace/lib/event_emitter\",\"ace/selection\",\"ace/mode/text\",\"ace/range\",\"ace/document\",\"ace/background_tokenizer\",\"ace/search_highlight\",\"ace/edit_session/folding\",\"ace/edit_session/bracket_match\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),lang=acequire(\"./lib/lang\"),config=acequire(\"./config\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Selection=acequire(\"./selection\").Selection,TextMode=acequire(\"./mode/text\").Mode,Range=acequire(\"./range\").Range,Document=acequire(\"./document\").Document,BackgroundTokenizer=acequire(\"./background_tokenizer\").BackgroundTokenizer,SearchHighlight=acequire(\"./search_highlight\").SearchHighlight,EditSession=function(text,mode){this.$breakpoints=[],this.$decorations=[],this.$frontMarkers={},this.$backMarkers={},this.$markerId=1,this.$undoSelect=!0,this.$foldData=[],this.$foldData.toString=function(){return this.join(\"\\n\")},this.on(\"changeFold\",this.onChangeFold.bind(this)),this.$onChange=this.onChange.bind(this),\"object\"==typeof text&&text.getLine||(text=new Document(text)),this.setDocument(text),this.selection=new Selection(this),this.setMode(mode),config.resetOptions(this),config._emit(\"session\",this)};(function(){function isFullWidth(c){return 4352>c?!1:c>=4352&&4447>=c||c>=4515&&4519>=c||c>=4602&&4607>=c||c>=9001&&9002>=c||c>=11904&&11929>=c||c>=11931&&12019>=c||c>=12032&&12245>=c||c>=12272&&12283>=c||c>=12288&&12350>=c||c>=12353&&12438>=c||c>=12441&&12543>=c||c>=12549&&12589>=c||c>=12593&&12686>=c||c>=12688&&12730>=c||c>=12736&&12771>=c||c>=12784&&12830>=c||c>=12832&&12871>=c||c>=12880&&13054>=c||c>=13056&&19903>=c||c>=19968&&42124>=c||c>=42128&&42182>=c||c>=43360&&43388>=c||c>=44032&&55203>=c||c>=55216&&55238>=c||c>=55243&&55291>=c||c>=63744&&64255>=c||c>=65040&&65049>=c||c>=65072&&65106>=c||c>=65108&&65126>=c||c>=65128&&65131>=c||c>=65281&&65376>=c||c>=65504&&65510>=c}oop.implement(this,EventEmitter),this.setDocument=function(doc){this.doc&&this.doc.removeListener(\"change\",this.$onChange),this.doc=doc,doc.on(\"change\",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(docRow){if(!docRow)return this.$docRowCache=[],this.$screenRowCache=[],void 0;var l=this.$docRowCache.length,i=this.$getRowCacheIndex(this.$docRowCache,docRow)+1;l>i&&(this.$docRowCache.splice(i,l),this.$screenRowCache.splice(i,l))},this.$getRowCacheIndex=function(cacheArray,val){for(var low=0,hi=cacheArray.length-1;hi>=low;){var mid=low+hi>>1,c=cacheArray[mid];if(val>c)low=mid+1;else{if(!(c>val))return mid;hi=mid-1}}return low-1},this.resetCaches=function(){this.$modified=!0,this.$wrapData=[],this.$rowLengthCache=[],this.$resetRowCache(0),this.bgTokenizer&&this.bgTokenizer.start(0)},this.onChangeFold=function(e){var fold=e.data;this.$resetRowCache(fold.start.row)},this.onChange=function(e){var delta=e.data;this.$modified=!0,this.$resetRowCache(delta.range.start.row);var removedFolds=this.$updateInternalDataOnChange(e);this.$fromUndo||!this.$undoManager||delta.ignore||(this.$deltasDoc.push(delta),removedFolds&&0!=removedFolds.length&&this.$deltasFold.push({action:\"removeFolds\",folds:removedFolds}),this.$informUndoManager.schedule()),this.bgTokenizer.$updateOnChange(delta),this._emit(\"change\",e)},this.setValue=function(text){this.doc.setValue(text),this.selection.moveCursorTo(0,0),this.selection.clearSelection(),this.$resetRowCache(0),this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.getUndoManager().reset()},this.getValue=this.toString=function(){return this.doc.getValue()},this.getSelection=function(){return this.selection},this.getState=function(row){return this.bgTokenizer.getState(row)},this.getTokens=function(row){return this.bgTokenizer.getTokens(row)},this.getTokenAt=function(row,column){var token,tokens=this.bgTokenizer.getTokens(row),c=0;if(null==column)i=tokens.length-1,c=this.getLine(row).length;else for(var i=0;tokens.length>i&&(c+=tokens[i].value.length,!(c>=column));i++);return(token=tokens[i])?(token.index=i,token.start=c-token.value.length,token):null},this.setUndoManager=function(undoManager){if(this.$undoManager=undoManager,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel(),undoManager){var self=this;this.$syncInformUndoManager=function(){self.$informUndoManager.cancel(),self.$deltasFold.length&&(self.$deltas.push({group:\"fold\",deltas:self.$deltasFold}),self.$deltasFold=[]),self.$deltasDoc.length&&(self.$deltas.push({group:\"doc\",deltas:self.$deltasDoc}),self.$deltasDoc=[]),self.$deltas.length>0&&undoManager.execute({action:\"aceupdate\",args:[self.$deltas,self]}),self.$deltas=[]},this.$informUndoManager=lang.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?lang.stringRepeat(\" \",this.getTabSize()):\"\t\"},this.setUseSoftTabs=function(val){this.setOption(\"useSoftTabs\",val)},this.getUseSoftTabs=function(){return this.$useSoftTabs},this.setTabSize=function(tabSize){this.setOption(\"tabSize\",tabSize)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(position){return this.$useSoftTabs&&0==position.column%this.$tabSize},this.$overwrite=!1,this.setOverwrite=function(overwrite){this.setOption(\"overwrite\",overwrite)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(row,className){this.$decorations[row]||(this.$decorations[row]=\"\"),this.$decorations[row]+=\" \"+className,this._emit(\"changeBreakpoint\",{})},this.removeGutterDecoration=function(row,className){this.$decorations[row]=(this.$decorations[row]||\"\").replace(\" \"+className,\"\"),this._emit(\"changeBreakpoint\",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(rows){this.$breakpoints=[];for(var i=0;rows.length>i;i++)this.$breakpoints[rows[i]]=\"ace_breakpoint\";this._emit(\"changeBreakpoint\",{})},this.clearBreakpoints=function(){this.$breakpoints=[],this._emit(\"changeBreakpoint\",{})},this.setBreakpoint=function(row,className){void 0===className&&(className=\"ace_breakpoint\"),className?this.$breakpoints[row]=className:delete this.$breakpoints[row],this._emit(\"changeBreakpoint\",{})},this.clearBreakpoint=function(row){delete this.$breakpoints[row],this._emit(\"changeBreakpoint\",{})},this.addMarker=function(range,clazz,type,inFront){var id=this.$markerId++,marker={range:range,type:type||\"line\",renderer:\"function\"==typeof type?type:null,clazz:clazz,inFront:!!inFront,id:id};return inFront?(this.$frontMarkers[id]=marker,this._emit(\"changeFrontMarker\")):(this.$backMarkers[id]=marker,this._emit(\"changeBackMarker\")),id},this.addDynamicMarker=function(marker,inFront){if(marker.update){var id=this.$markerId++;return marker.id=id,marker.inFront=!!inFront,inFront?(this.$frontMarkers[id]=marker,this._emit(\"changeFrontMarker\")):(this.$backMarkers[id]=marker,this._emit(\"changeBackMarker\")),marker}},this.removeMarker=function(markerId){var marker=this.$frontMarkers[markerId]||this.$backMarkers[markerId];if(marker){var markers=marker.inFront?this.$frontMarkers:this.$backMarkers;marker&&(delete markers[markerId],this._emit(marker.inFront?\"changeFrontMarker\":\"changeBackMarker\"))}},this.getMarkers=function(inFront){return inFront?this.$frontMarkers:this.$backMarkers},this.highlight=function(re){if(!this.$searchHighlight){var highlight=new SearchHighlight(null,\"ace_selected-word\",\"text\");this.$searchHighlight=this.addDynamicMarker(highlight)}this.$searchHighlight.setRegexp(re)},this.highlightLines=function(startRow,endRow,clazz,inFront){\"number\"!=typeof endRow&&(clazz=endRow,endRow=startRow),clazz||(clazz=\"ace_step\");var range=new Range(startRow,0,endRow,1/0);return range.id=this.addMarker(range,clazz,\"fullLine\",inFront),range},this.setAnnotations=function(annotations){this.$annotations=annotations,this._emit(\"changeAnnotation\",{})},this.getAnnotations=function(){return this.$annotations||[]},this.clearAnnotations=function(){this.setAnnotations([])},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r?\\n)/m);this.$autoNewLine=match?match[1]:\"\\n\"},this.getWordRange=function(row,column){var line=this.getLine(row),inToken=!1;if(column>0&&(inToken=!!line.charAt(column-1).match(this.tokenRe)),inToken||(inToken=!!line.charAt(column).match(this.tokenRe)),inToken)var re=this.tokenRe;else if(/^\\s+$/.test(line.slice(column-1,column+1)))var re=/\\s/;else var re=this.nonTokenRe;var start=column;if(start>0){do start--;while(start>=0&&line.charAt(start).match(re));start++}for(var end=column;line.length>end&&line.charAt(end).match(re);)end++;return new Range(row,start,row,end)},this.getAWordRange=function(row,column){for(var wordRange=this.getWordRange(row,column),line=this.getLine(wordRange.end.row);line.charAt(wordRange.end.column).match(/[ \\t]/);)wordRange.end.column+=1;return wordRange},this.setNewLineMode=function(newLineMode){this.doc.setNewLineMode(newLineMode)},this.getNewLineMode=function(){return this.doc.getNewLineMode()},this.setUseWorker=function(useWorker){this.setOption(\"useWorker\",useWorker)},this.getUseWorker=function(){return this.$useWorker},this.onReloadTokenizer=function(e){var rows=e.data;this.bgTokenizer.start(rows.first),this._emit(\"tokenizerUpdate\",e)},this.$modes={},this.$mode=null,this.$modeId=null,this.setMode=function(mode){if(mode&&\"object\"==typeof mode){if(mode.getTokenizer)return this.$onChangeMode(mode);var options=mode,path=options.path}else path=mode||\"ace/mode/text\";return this.$modes[\"ace/mode/text\"]||(this.$modes[\"ace/mode/text\"]=new TextMode),this.$modes[path]&&!options?this.$onChangeMode(this.$modes[path]):(this.$modeId=path,config.loadModule([\"mode\",path],function(m){return this.$modeId===path?this.$modes[path]&&!options?this.$onChangeMode(this.$modes[path]):(m&&m.Mode&&(m=new m.Mode(options),options||(this.$modes[path]=m,m.$id=path),this.$onChangeMode(m)),void 0):void 0}.bind(this)),this.$mode||this.$onChangeMode(this.$modes[\"ace/mode/text\"],!0),void 0)},this.$onChangeMode=function(mode,$isPlaceholder){if(this.$mode!==mode){this.$mode=mode,this.$stopWorker(),this.$useWorker&&this.$startWorker();var tokenizer=mode.getTokenizer();if(void 0!==tokenizer.addEventListener){var onReloadTokenizer=this.onReloadTokenizer.bind(this);tokenizer.addEventListener(\"update\",onReloadTokenizer)}if(this.bgTokenizer)this.bgTokenizer.setTokenizer(tokenizer);else{this.bgTokenizer=new BackgroundTokenizer(tokenizer);var _self=this;this.bgTokenizer.addEventListener(\"update\",function(e){_self._emit(\"tokenizerUpdate\",e)})}this.bgTokenizer.setDocument(this.getDocument()),this.tokenRe=mode.tokenRe,this.nonTokenRe=mode.nonTokenRe,$isPlaceholder||(this.$modeId=mode.$id,this.$setFolding(mode.foldingRules),this._emit(\"changeMode\"),this.bgTokenizer.start(0))}},this.$stopWorker=function(){this.$worker&&this.$worker.terminate(),this.$worker=null},this.$startWorker=function(){if(\"undefined\"==typeof Worker||acequire.noWorker)this.$worker=null;else try{this.$worker=this.$mode.createWorker(this)}catch(e){console.log(\"Could not load worker\"),console.log(e),this.$worker=null}},this.getMode=function(){return this.$mode},this.$scrollTop=0,this.setScrollTop=function(scrollTop){scrollTop=Math.round(Math.max(0,scrollTop)),this.$scrollTop===scrollTop||isNaN(scrollTop)||(this.$scrollTop=scrollTop,this._signal(\"changeScrollTop\",scrollTop))},this.getScrollTop=function(){return this.$scrollTop},this.$scrollLeft=0,this.setScrollLeft=function(scrollLeft){scrollLeft=Math.round(Math.max(0,scrollLeft)),this.$scrollLeft===scrollLeft||isNaN(scrollLeft)||(this.$scrollLeft=scrollLeft,this._signal(\"changeScrollLeft\",scrollLeft))},this.getScrollLeft=function(){return this.$scrollLeft},this.getScreenWidth=function(){return this.$computeWidth(),this.screenWidth},this.$computeWidth=function(force){if(this.$modified||force){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var lines=this.doc.getAllLines(),cache=this.$rowLengthCache,longestScreenLine=0,foldIndex=0,foldLine=this.$foldData[foldIndex],foldStart=foldLine?foldLine.start.row:1/0,len=lines.length,i=0;len>i;i++){if(i>foldStart){if(i=foldLine.end.row+1,i>=len)break;foldLine=this.$foldData[foldIndex++],foldStart=foldLine?foldLine.start.row:1/0}null==cache[i]&&(cache[i]=this.$getStringScreenWidth(lines[i])[0]),cache[i]>longestScreenLine&&(longestScreenLine=cache[i])}this.screenWidth=longestScreenLine}},this.getLine=function(row){return this.doc.getLine(row)},this.getLines=function(firstRow,lastRow){return this.doc.getLines(firstRow,lastRow)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(range){return this.doc.getTextRange(range||this.selection.getRange())},this.insert=function(position,text){return this.doc.insert(position,text)},this.remove=function(range){return this.doc.remove(range)},this.undoChanges=function(deltas,dontSelect){if(deltas.length){this.$fromUndo=!0;for(var lastUndoRange=null,i=deltas.length-1;-1!=i;i--){var delta=deltas[i];\"doc\"==delta.group?(this.doc.revertDeltas(delta.deltas),lastUndoRange=this.$getUndoSelection(delta.deltas,!0,lastUndoRange)):delta.deltas.forEach(function(foldDelta){this.addFolds(foldDelta.folds)},this)}return this.$fromUndo=!1,lastUndoRange&&this.$undoSelect&&!dontSelect&&this.selection.setSelectionRange(lastUndoRange),lastUndoRange}},this.redoChanges=function(deltas,dontSelect){if(deltas.length){this.$fromUndo=!0;for(var lastUndoRange=null,i=0;deltas.length>i;i++){var delta=deltas[i];\"doc\"==delta.group&&(this.doc.applyDeltas(delta.deltas),lastUndoRange=this.$getUndoSelection(delta.deltas,!1,lastUndoRange))}return this.$fromUndo=!1,lastUndoRange&&this.$undoSelect&&!dontSelect&&this.selection.setSelectionRange(lastUndoRange),lastUndoRange}},this.setUndoSelect=function(enable){this.$undoSelect=enable},this.$getUndoSelection=function(deltas,isUndo,lastUndoRange){function isInsert(delta){var insert=\"insertText\"===delta.action||\"insertLines\"===delta.action;return isUndo?!insert:insert}var range,point,delta=deltas[0],lastDeltaIsInsert=!1;isInsert(delta)?(range=delta.range.clone(),lastDeltaIsInsert=!0):(range=Range.fromPoints(delta.range.start,delta.range.start),lastDeltaIsInsert=!1);for(var i=1;deltas.length>i;i++)delta=deltas[i],isInsert(delta)?(point=delta.range.start,-1==range.compare(point.row,point.column)&&range.setStart(delta.range.start),point=delta.range.end,1==range.compare(point.row,point.column)&&range.setEnd(delta.range.end),lastDeltaIsInsert=!0):(point=delta.range.start,-1==range.compare(point.row,point.column)&&(range=Range.fromPoints(delta.range.start,delta.range.start)),lastDeltaIsInsert=!1);if(null!=lastUndoRange){var cmp=lastUndoRange.compareRange(range);1==cmp?range.setStart(lastUndoRange.start):-1==cmp&&range.setEnd(lastUndoRange.end)}return range},this.replace=function(range,text){return this.doc.replace(range,text)},this.moveText=function(fromRange,toPosition,copy){var text=this.getTextRange(fromRange),folds=this.getFoldsInRange(fromRange),toRange=Range.fromPoints(toPosition,toPosition);if(!copy){this.remove(fromRange);var rowDiff=fromRange.start.row-fromRange.end.row,collDiff=rowDiff?-fromRange.end.column:fromRange.start.column-fromRange.end.column;collDiff&&(toRange.start.row==fromRange.end.row&&toRange.start.column>fromRange.end.column&&(toRange.start.column+=collDiff),toRange.end.row==fromRange.end.row&&toRange.end.column>fromRange.end.column&&(toRange.end.column+=collDiff)),rowDiff&&toRange.start.row>=fromRange.end.row&&(toRange.start.row+=rowDiff,toRange.end.row+=rowDiff)}if(this.insert(toRange.start,text),folds.length){var oldStart=fromRange.start,newStart=toRange.start,rowDiff=newStart.row-oldStart.row,collDiff=newStart.column-oldStart.column;this.addFolds(folds.map(function(x){return x=x.clone(),x.start.row==oldStart.row&&(x.start.column+=collDiff),x.end.row==oldStart.row&&(x.end.column+=collDiff),x.start.row+=rowDiff,x.end.row+=rowDiff,x}))}return toRange},this.indentRows=function(startRow,endRow,indentString){indentString=indentString.replace(/\\t/g,this.getTabString());for(var row=startRow;endRow>=row;row++)this.insert({row:row,column:0},indentString)},this.outdentRows=function(range){for(var rowRange=range.collapseRows(),deleteRange=new Range(0,0,0,0),size=this.getTabSize(),i=rowRange.start.row;rowRange.end.row>=i;++i){var line=this.getLine(i);deleteRange.start.row=i,deleteRange.end.row=i;for(var j=0;size>j&&\" \"==line.charAt(j);++j);size>j&&\"\t\"==line.charAt(j)?(deleteRange.start.column=j,deleteRange.end.column=j+1):(deleteRange.start.column=0,deleteRange.end.column=j),this.remove(deleteRange)}},this.$moveLines=function(firstRow,lastRow,dir){if(firstRow=this.getRowFoldStart(firstRow),lastRow=this.getRowFoldEnd(lastRow),0>dir){var row=this.getRowFoldStart(firstRow+dir);if(0>row)return 0;var diff=row-firstRow}else if(dir>0){var row=this.getRowFoldEnd(lastRow+dir);if(row>this.doc.getLength()-1)return 0;var diff=row-lastRow}else{firstRow=this.$clipRowToDocument(firstRow),lastRow=this.$clipRowToDocument(lastRow);var diff=lastRow-firstRow+1}var range=new Range(firstRow,0,lastRow,Number.MAX_VALUE),folds=this.getFoldsInRange(range).map(function(x){return x=x.clone(),x.start.row+=diff,x.end.row+=diff,x}),lines=0==dir?this.doc.getLines(firstRow,lastRow):this.doc.removeLines(firstRow,lastRow);return this.doc.insertLines(firstRow+diff,lines),folds.length&&this.addFolds(folds),diff},this.moveLinesUp=function(firstRow,lastRow){return this.$moveLines(firstRow,lastRow,-1)},this.moveLinesDown=function(firstRow,lastRow){return this.$moveLines(firstRow,lastRow,1)},this.duplicateLines=function(firstRow,lastRow){return this.$moveLines(firstRow,lastRow,0)},this.$clipRowToDocument=function(row){return Math.max(0,Math.min(row,this.doc.getLength()-1))},this.$clipColumnToRow=function(row,column){return 0>column?0:Math.min(this.doc.getLine(row).length,column)},this.$clipPositionToDocument=function(row,column){if(column=Math.max(0,column),0>row)row=0,column=0;else{var len=this.doc.getLength();row>=len?(row=len-1,column=this.doc.getLine(len-1).length):column=Math.min(this.doc.getLine(row).length,column)}return{row:row,column:column}},this.$clipRangeToDocument=function(range){0>range.start.row?(range.start.row=0,range.start.column=0):range.start.column=this.$clipColumnToRow(range.start.row,range.start.column);var len=this.doc.getLength()-1;return range.end.row>len?(range.end.row=len,range.end.column=this.doc.getLine(len).length):range.end.column=this.$clipColumnToRow(range.end.row,range.end.column),range},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(useWrapMode){if(useWrapMode!=this.$useWrapMode){if(this.$useWrapMode=useWrapMode,this.$modified=!0,this.$resetRowCache(0),useWrapMode){var len=this.getLength();this.$wrapData=[];for(var i=0;len>i;i++)this.$wrapData.push([]);this.$updateWrapData(0,len-1)}this._emit(\"changeWrapMode\")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(min,max){(this.$wrapLimitRange.min!==min||this.$wrapLimitRange.max!==max)&&(this.$wrapLimitRange.min=min,this.$wrapLimitRange.max=max,this.$modified=!0,this._emit(\"changeWrapMode\"))},this.adjustWrapLimit=function(desiredLimit,$printMargin){var limits=this.$wrapLimitRange;0>limits.max&&(limits={min:$printMargin,max:$printMargin});var wrapLimit=this.$constrainWrapLimit(desiredLimit,limits.min,limits.max);return wrapLimit!=this.$wrapLimit&&wrapLimit>1?(this.$wrapLimit=wrapLimit,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._emit(\"changeWrapLimit\")),!0):!1},this.$constrainWrapLimit=function(wrapLimit,min,max){return min&&(wrapLimit=Math.max(min,wrapLimit)),max&&(wrapLimit=Math.min(max,wrapLimit)),wrapLimit},this.getWrapLimit=function(){return this.$wrapLimit},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var len,useWrapMode=this.$useWrapMode,action=e.data.action,firstRow=e.data.range.start.row,lastRow=e.data.range.end.row,start=e.data.range.start,end=e.data.range.end,removedFolds=null;if(-1!=action.indexOf(\"Lines\")?(lastRow=\"insertLines\"==action?firstRow+e.data.lines.length:firstRow,len=e.data.lines?e.data.lines.length:lastRow-firstRow):len=lastRow-firstRow,this.$updating=!0,0!=len)if(-1!=action.indexOf(\"remove\")){this[useWrapMode?\"$wrapData\":\"$rowLengthCache\"].splice(firstRow,len);var foldLines=this.$foldData;removedFolds=this.getFoldsInRange(e.data.range),this.removeFolds(removedFolds);var foldLine=this.getFoldLine(end.row),idx=0;if(foldLine){foldLine.addRemoveChars(end.row,end.column,start.column-end.column),foldLine.shiftRow(-len);var foldLineBefore=this.getFoldLine(firstRow);foldLineBefore&&foldLineBefore!==foldLine&&(foldLineBefore.merge(foldLine),foldLine=foldLineBefore),idx=foldLines.indexOf(foldLine)+1\n}for(idx;foldLines.length>idx;idx++){var foldLine=foldLines[idx];foldLine.start.row>=end.row&&foldLine.shiftRow(-len)}lastRow=firstRow}else{var args;if(useWrapMode){args=[firstRow,0];for(var i=0;len>i;i++)args.push([]);this.$wrapData.splice.apply(this.$wrapData,args)}else args=Array(len),args.unshift(firstRow,0),this.$rowLengthCache.splice.apply(this.$rowLengthCache,args);var foldLines=this.$foldData,foldLine=this.getFoldLine(firstRow),idx=0;if(foldLine){var cmp=foldLine.range.compareInside(start.row,start.column);0==cmp?(foldLine=foldLine.split(start.row,start.column),foldLine.shiftRow(len),foldLine.addRemoveChars(lastRow,0,end.column-start.column)):-1==cmp&&(foldLine.addRemoveChars(firstRow,0,end.column-start.column),foldLine.shiftRow(len)),idx=foldLines.indexOf(foldLine)+1}for(idx;foldLines.length>idx;idx++){var foldLine=foldLines[idx];foldLine.start.row>=firstRow&&foldLine.shiftRow(len)}}else{len=Math.abs(e.data.range.start.column-e.data.range.end.column),-1!=action.indexOf(\"remove\")&&(removedFolds=this.getFoldsInRange(e.data.range),this.removeFolds(removedFolds),len=-len);var foldLine=this.getFoldLine(firstRow);foldLine&&foldLine.addRemoveChars(firstRow,start.column,len)}return useWrapMode&&this.$wrapData.length!=this.doc.getLength()&&console.error(\"doc.getLength() and $wrapData.length have to be the same!\"),this.$updating=!1,useWrapMode?this.$updateWrapData(firstRow,lastRow):this.$updateRowLengthCache(firstRow,lastRow),removedFolds},this.$updateRowLengthCache=function(firstRow,lastRow){this.$rowLengthCache[firstRow]=null,this.$rowLengthCache[lastRow]=null},this.$updateWrapData=function(firstRow,lastRow){var tokens,foldLine,lines=this.doc.getAllLines(),tabSize=this.getTabSize(),wrapData=this.$wrapData,wrapLimit=this.$wrapLimit,row=firstRow;for(lastRow=Math.min(lastRow,lines.length-1);lastRow>=row;)if(foldLine=this.getFoldLine(row,foldLine)){for(tokens=[],foldLine.walk(function(placeholder,row,column,lastColumn){var walkTokens;if(null!=placeholder){walkTokens=this.$getDisplayTokens(placeholder,tokens.length),walkTokens[0]=PLACEHOLDER_START;for(var i=1;walkTokens.length>i;i++)walkTokens[i]=PLACEHOLDER_BODY}else walkTokens=this.$getDisplayTokens(lines[row].substring(lastColumn,column),tokens.length);tokens=tokens.concat(walkTokens)}.bind(this),foldLine.end.row,lines[foldLine.end.row].length+1);0!=tokens.length&&tokens[tokens.length-1]>=SPACE;)tokens.pop();wrapData[foldLine.start.row]=this.$computeWrapSplits(tokens,wrapLimit,tabSize),row=foldLine.end.row+1}else tokens=this.$getDisplayTokens(lang.stringTrimRight(lines[row])),wrapData[row]=this.$computeWrapSplits(tokens,wrapLimit,tabSize),row++};var CHAR=1,CHAR_EXT=2,PLACEHOLDER_START=3,PLACEHOLDER_BODY=4,PUNCTUATION=9,SPACE=10,TAB=11,TAB_SPACE=12;this.$computeWrapSplits=function(tokens,wrapLimit){function addSplit(screenPos){var displayed=tokens.slice(lastSplit,screenPos),len=displayed.length;displayed.join(\"\").replace(/12/g,function(){len-=1}).replace(/2/g,function(){len-=1}),lastDocSplit+=len,splits.push(lastDocSplit),lastSplit=screenPos}if(0==tokens.length)return[];for(var splits=[],displayLength=tokens.length,lastSplit=0,lastDocSplit=0;displayLength-lastSplit>wrapLimit;){var split=lastSplit+wrapLimit;if(tokens[split]>=SPACE){for(;tokens[split]>=SPACE;)split++;addSplit(split)}else if(tokens[split]!=PLACEHOLDER_START&&tokens[split]!=PLACEHOLDER_BODY){for(var minSplit=Math.max(split-10,lastSplit-1);split>minSplit&&PLACEHOLDER_START>tokens[split];)split--;for(;split>minSplit&&tokens[split]==PUNCTUATION;)split--;split>minSplit?addSplit(++split):(split=lastSplit+wrapLimit,addSplit(split))}else{for(split;split!=lastSplit-1&&tokens[split]!=PLACEHOLDER_START;split--);if(split>lastSplit){addSplit(split);continue}for(split=lastSplit+wrapLimit;tokens.length>split&&tokens[split]==PLACEHOLDER_BODY;split++);if(split==tokens.length)break;addSplit(split)}}return splits},this.$getDisplayTokens=function(str,offset){var tabSize,arr=[];offset=offset||0;for(var i=0;str.length>i;i++){var c=str.charCodeAt(i);if(9==c){tabSize=this.getScreenTabSize(arr.length+offset),arr.push(TAB);for(var n=1;tabSize>n;n++)arr.push(TAB_SPACE)}else 32==c?arr.push(SPACE):c>39&&48>c||c>57&&64>c?arr.push(PUNCTUATION):c>=4352&&isFullWidth(c)?arr.push(CHAR,CHAR_EXT):arr.push(CHAR)}return arr},this.$getStringScreenWidth=function(str,maxScreenColumn,screenColumn){if(0==maxScreenColumn)return[0,0];null==maxScreenColumn&&(maxScreenColumn=1/0),screenColumn=screenColumn||0;var c,column;for(column=0;str.length>column&&(c=str.charCodeAt(column),screenColumn+=9==c?this.getScreenTabSize(screenColumn):c>=4352&&isFullWidth(c)?2:1,!(screenColumn>maxScreenColumn));column++);return[screenColumn,column]},this.getRowLength=function(row){return this.$useWrapMode&&this.$wrapData[row]?this.$wrapData[row].length+1:1},this.getScreenLastRowColumn=function(screenRow){var pos=this.screenToDocumentPosition(screenRow,Number.MAX_VALUE);return this.documentToScreenColumn(pos.row,pos.column)},this.getDocumentLastRowColumn=function(docRow,docColumn){var screenRow=this.documentToScreenRow(docRow,docColumn);return this.getScreenLastRowColumn(screenRow)},this.getDocumentLastRowColumnPosition=function(docRow,docColumn){var screenRow=this.documentToScreenRow(docRow,docColumn);return this.screenToDocumentPosition(screenRow,Number.MAX_VALUE/10)},this.getRowSplitData=function(row){return this.$useWrapMode?this.$wrapData[row]:void 0},this.getScreenTabSize=function(screenColumn){return this.$tabSize-screenColumn%this.$tabSize},this.screenToDocumentRow=function(screenRow,screenColumn){return this.screenToDocumentPosition(screenRow,screenColumn).row},this.screenToDocumentColumn=function(screenRow,screenColumn){return this.screenToDocumentPosition(screenRow,screenColumn).column},this.screenToDocumentPosition=function(screenRow,screenColumn){if(0>screenRow)return{row:0,column:0};var line,column,docRow=0,docColumn=0,row=0,rowLength=0,rowCache=this.$screenRowCache,i=this.$getRowCacheIndex(rowCache,screenRow),l=rowCache.length;if(l&&i>=0)var row=rowCache[i],docRow=this.$docRowCache[i],doCache=screenRow>rowCache[l-1];else var doCache=!l;for(var maxRow=this.getLength()-1,foldLine=this.getNextFoldLine(docRow),foldStart=foldLine?foldLine.start.row:1/0;screenRow>=row&&(rowLength=this.getRowLength(docRow),!(row+rowLength-1>=screenRow||docRow>=maxRow));)row+=rowLength,docRow++,docRow>foldStart&&(docRow=foldLine.end.row+1,foldLine=this.getNextFoldLine(docRow,foldLine),foldStart=foldLine?foldLine.start.row:1/0),doCache&&(this.$docRowCache.push(docRow),this.$screenRowCache.push(row));if(foldLine&&docRow>=foldLine.start.row)line=this.getFoldDisplayLine(foldLine),docRow=foldLine.start.row;else{if(screenRow>=row+rowLength||docRow>maxRow)return{row:maxRow,column:this.getLine(maxRow).length};line=this.getLine(docRow),foldLine=null}if(this.$useWrapMode){var splits=this.$wrapData[docRow];splits&&(column=splits[screenRow-row],screenRow>row&&splits.length&&(docColumn=splits[screenRow-row-1]||splits[splits.length-1],line=line.substring(docColumn)))}return docColumn+=this.$getStringScreenWidth(line,screenColumn)[1],this.$useWrapMode&&docColumn>=column&&(docColumn=column-1),foldLine?foldLine.idxToPosition(docColumn):{row:docRow,column:docColumn}},this.documentToScreenPosition=function(docRow,docColumn){if(docColumn===void 0)var pos=this.$clipPositionToDocument(docRow.row,docRow.column);else pos=this.$clipPositionToDocument(docRow,docColumn);docRow=pos.row,docColumn=pos.column;var screenRow=0,foldStartRow=null,fold=null;fold=this.getFoldAt(docRow,docColumn,1),fold&&(docRow=fold.start.row,docColumn=fold.start.column);var rowEnd,row=0,rowCache=this.$docRowCache,i=this.$getRowCacheIndex(rowCache,docRow),l=rowCache.length;if(l&&i>=0)var row=rowCache[i],screenRow=this.$screenRowCache[i],doCache=docRow>rowCache[l-1];else var doCache=!l;for(var foldLine=this.getNextFoldLine(row),foldStart=foldLine?foldLine.start.row:1/0;docRow>row;){if(row>=foldStart){if(rowEnd=foldLine.end.row+1,rowEnd>docRow)break;foldLine=this.getNextFoldLine(rowEnd,foldLine),foldStart=foldLine?foldLine.start.row:1/0}else rowEnd=row+1;screenRow+=this.getRowLength(row),row=rowEnd,doCache&&(this.$docRowCache.push(row),this.$screenRowCache.push(screenRow))}var textLine=\"\";if(foldLine&&row>=foldStart?(textLine=this.getFoldDisplayLine(foldLine,docRow,docColumn),foldStartRow=foldLine.start.row):(textLine=this.getLine(docRow).substring(0,docColumn),foldStartRow=docRow),this.$useWrapMode){for(var wrapRow=this.$wrapData[foldStartRow],screenRowOffset=0;textLine.length>=wrapRow[screenRowOffset];)screenRow++,screenRowOffset++;textLine=textLine.substring(wrapRow[screenRowOffset-1]||0,textLine.length)}return{row:screenRow,column:this.$getStringScreenWidth(textLine)[0]}},this.documentToScreenColumn=function(row,docColumn){return this.documentToScreenPosition(row,docColumn).column},this.documentToScreenRow=function(docRow,docColumn){return this.documentToScreenPosition(docRow,docColumn).row},this.getScreenLength=function(){var screenRows=0,fold=null;if(this.$useWrapMode)for(var lastRow=this.$wrapData.length,row=0,i=0,fold=this.$foldData[i++],foldStart=fold?fold.start.row:1/0;lastRow>row;)screenRows+=this.$wrapData[row].length+1,row++,row>foldStart&&(row=fold.end.row+1,fold=this.$foldData[i++],foldStart=fold?fold.start.row:1/0);else{screenRows=this.getLength();for(var foldData=this.$foldData,i=0;foldData.length>i;i++)fold=foldData[i],screenRows-=fold.end.row-fold.start.row}return screenRows}}).call(EditSession.prototype),acequire(\"./edit_session/folding\").Folding.call(EditSession.prototype),acequire(\"./edit_session/bracket_match\").BracketMatch.call(EditSession.prototype),config.defineOptions(EditSession.prototype,\"session\",{wrap:{set:function(value){if(value&&\"off\"!=value?\"free\"==value?value=!0:\"printMargin\"==value?value=-1:\"string\"==typeof value&&(value=parseInt(value,10)||!1):value=!1,this.$wrap!=value){if(value){var col=\"number\"==typeof value?value:null;this.setWrapLimitRange(col,col),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1);this.$wrap=value}},get:function(){return this.getUseWrapMode()?this.getWrapLimitRange().min||\"free\":\"off\"},handlesSet:!0},firstLineNumber:{set:function(){this._emit(\"changeBreakpoint\")},initialValue:1},useWorker:{set:function(useWorker){this.$useWorker=useWorker,this.$stopWorker(),useWorker&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(tabSize){isNaN(tabSize)||this.$tabSize===tabSize||(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=tabSize,this._emit(\"changeTabSize\"))},initialValue:4,handlesSet:!0},overwrite:{set:function(){this._emit(\"changeOverwrite\")},initialValue:!1},newLineMode:{set:function(val){this.doc.setNewLineMode(val)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0}}),exports.EditSession=EditSession}),ace.define(\"ace/selection\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/range\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),lang=acequire(\"./lib/lang\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Selection=function(session){this.session=session,this.doc=session.getDocument(),this.clearSelection(),this.lead=this.selectionLead=this.doc.createAnchor(0,0),this.anchor=this.selectionAnchor=this.doc.createAnchor(0,0);var self=this;this.lead.on(\"change\",function(e){self._emit(\"changeCursor\"),self.$isEmpty||self._emit(\"changeSelection\"),self.$keepDesiredColumnOnChange||e.old.column==e.value.column||(self.$desiredColumn=null)}),this.selectionAnchor.on(\"change\",function(){self.$isEmpty||self._emit(\"changeSelection\")})};(function(){oop.implement(this,EventEmitter),this.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},this.isMultiLine=function(){return this.isEmpty()?!1:this.getRange().isMultiLine()},this.getCursor=function(){return this.lead.getPosition()},this.setSelectionAnchor=function(row,column){this.anchor.setPosition(row,column),this.$isEmpty&&(this.$isEmpty=!1,this._emit(\"changeSelection\"))},this.getSelectionAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},this.getSelectionLead=function(){return this.lead.getPosition()},this.shiftSelection=function(columns){if(this.$isEmpty)return this.moveCursorTo(this.lead.row,this.lead.column+columns),void 0;var anchor=this.getSelectionAnchor(),lead=this.getSelectionLead(),isBackwards=this.isBackwards();isBackwards&&0===anchor.column||this.setSelectionAnchor(anchor.row,anchor.column+columns),(isBackwards||0!==lead.column)&&this.$moveSelection(function(){this.moveCursorTo(lead.row,lead.column+columns)})},this.isBackwards=function(){var anchor=this.anchor,lead=this.lead;return anchor.row>lead.row||anchor.row==lead.row&&anchor.column>lead.column},this.getRange=function(){var anchor=this.anchor,lead=this.lead;return this.isEmpty()?Range.fromPoints(lead,lead):this.isBackwards()?Range.fromPoints(lead,anchor):Range.fromPoints(anchor,lead)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit(\"changeSelection\"))},this.selectAll=function(){var lastRow=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(lastRow,this.doc.getLine(lastRow).length)},this.setRange=this.setSelectionRange=function(range,reverse){reverse?(this.setSelectionAnchor(range.end.row,range.end.column),this.selectTo(range.start.row,range.start.column)):(this.setSelectionAnchor(range.start.row,range.start.column),this.selectTo(range.end.row,range.end.column)),this.$desiredColumn=null},this.$moveSelection=function(mover){var lead=this.lead;this.$isEmpty&&this.setSelectionAnchor(lead.row,lead.column),mover.call(this)},this.selectTo=function(row,column){this.$moveSelection(function(){this.moveCursorTo(row,column)})},this.selectToPosition=function(pos){this.$moveSelection(function(){this.moveCursorToPosition(pos)})},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(row,column){if(column===void 0){var cursor=row||this.lead;row=cursor.row,column=cursor.column}return this.session.getWordRange(row,column)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var cursor=this.getCursor(),range=this.session.getAWordRange(cursor.row,cursor.column);this.setSelectionRange(range)},this.getLineRange=function(row,excludeLastChar){var rowEnd,rowStart=\"number\"==typeof row?row:this.lead.row,foldLine=this.session.getFoldLine(rowStart);return foldLine?(rowStart=foldLine.start.row,rowEnd=foldLine.end.row):rowEnd=rowStart,excludeLastChar?new Range(rowStart,0,rowEnd,this.session.getLine(rowEnd).length):new Range(rowStart,0,rowEnd+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var fold,cursor=this.lead.getPosition();if(fold=this.session.getFoldAt(cursor.row,cursor.column,-1))this.moveCursorTo(fold.start.row,fold.start.column);else if(0==cursor.column)cursor.row>0&&this.moveCursorTo(cursor.row-1,this.doc.getLine(cursor.row-1).length);else{var tabSize=this.session.getTabSize();this.session.isTabStop(cursor)&&this.doc.getLine(cursor.row).slice(cursor.column-tabSize,cursor.column).split(\" \").length-1==tabSize?this.moveCursorBy(0,-tabSize):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var fold,cursor=this.lead.getPosition();if(fold=this.session.getFoldAt(cursor.row,cursor.column,1))this.moveCursorTo(fold.end.row,fold.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row\u003Cthis.doc.getLength()-1&&this.moveCursorTo(this.lead.row+1,0);else{var tabSize=this.session.getTabSize(),cursor=this.lead;this.session.isTabStop(cursor)&&this.doc.getLine(cursor.row).slice(cursor.column,cursor.column+tabSize).split(\" \").length-1==tabSize?this.moveCursorBy(0,tabSize):this.moveCursorBy(0,1)}},this.moveCursorLineStart=function(){var row=this.lead.row,column=this.lead.column,screenRow=this.session.documentToScreenRow(row,column),firstColumnPosition=this.session.screenToDocumentPosition(screenRow,0),beforeCursor=this.session.getDisplayLine(row,null,firstColumnPosition.row,firstColumnPosition.column),leadingSpace=beforeCursor.match(/^\\s*/);leadingSpace[0].length==column||this.session.$useEmacsStyleLineStart||(firstColumnPosition.column+=leadingSpace[0].length),this.moveCursorToPosition(firstColumnPosition)},this.moveCursorLineEnd=function(){var lead=this.lead,lineEnd=this.session.getDocumentLastRowColumnPosition(lead.row,lead.column);if(this.lead.column==lineEnd.column){var line=this.session.getLine(lineEnd.row);if(lineEnd.column==line.length){var textEnd=line.search(/\\s+$/);textEnd>0&&(lineEnd.column=textEnd)}}this.moveCursorTo(lineEnd.row,lineEnd.column)},this.moveCursorFileEnd=function(){var row=this.doc.getLength()-1,column=this.doc.getLine(row).length;this.moveCursorTo(row,column)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var match,row=this.lead.row,column=this.lead.column,line=this.doc.getLine(row),rightOfCursor=line.substring(column);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var fold=this.session.getFoldAt(row,column,1);return fold?(this.moveCursorTo(fold.end.row,fold.end.column),void 0):((match=this.session.nonTokenRe.exec(rightOfCursor))&&(column+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,rightOfCursor=line.substring(column)),column>=line.length?(this.moveCursorTo(row,line.length),this.moveCursorRight(),this.doc.getLength()-1>row&&this.moveCursorWordRight(),void 0):((match=this.session.tokenRe.exec(rightOfCursor))&&(column+=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(row,column),void 0))},this.moveCursorLongWordLeft=function(){var fold,row=this.lead.row,column=this.lead.column;if(fold=this.session.getFoldAt(row,column,-1))return this.moveCursorTo(fold.start.row,fold.start.column),void 0;var str=this.session.getFoldStringAt(row,column,-1);null==str&&(str=this.doc.getLine(row).substring(0,column));var match,leftOfCursor=lang.stringReverse(str);return this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0,(match=this.session.nonTokenRe.exec(leftOfCursor))&&(column-=this.session.nonTokenRe.lastIndex,leftOfCursor=leftOfCursor.slice(this.session.nonTokenRe.lastIndex),this.session.nonTokenRe.lastIndex=0),0>=column?(this.moveCursorTo(row,0),this.moveCursorLeft(),row>0&&this.moveCursorWordLeft(),void 0):((match=this.session.tokenRe.exec(leftOfCursor))&&(column-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(row,column),void 0)},this.$shortWordEndIndex=function(rightOfCursor){var match,ch,index=0,whitespaceRe=/\\s/,tokenRe=this.session.tokenRe;if(tokenRe.lastIndex=0,match=this.session.tokenRe.exec(rightOfCursor))index=this.session.tokenRe.lastIndex;else{for(;(ch=rightOfCursor[index])&&whitespaceRe.test(ch);)index++;if(1>=index)for(tokenRe.lastIndex=0;(ch=rightOfCursor[index])&&!tokenRe.test(ch);)if(tokenRe.lastIndex=0,index++,whitespaceRe.test(ch)){if(index>2){index--;break}for(;(ch=rightOfCursor[index])&&whitespaceRe.test(ch);)index++;if(index>2)break}}return tokenRe.lastIndex=0,index},this.moveCursorShortWordRight=function(){var row=this.lead.row,column=this.lead.column,line=this.doc.getLine(row),rightOfCursor=line.substring(column),fold=this.session.getFoldAt(row,column,1);if(fold)return this.moveCursorTo(fold.end.row,fold.end.column);if(column==line.length){var l=this.doc.getLength();do row++,rightOfCursor=this.doc.getLine(row);while(l>row&&/^\\s*$/.test(rightOfCursor));/^\\s+/.test(rightOfCursor)||(rightOfCursor=\"\"),column=0}var index=this.$shortWordEndIndex(rightOfCursor);this.moveCursorTo(row,column+index)},this.moveCursorShortWordLeft=function(){var fold,row=this.lead.row,column=this.lead.column;if(fold=this.session.getFoldAt(row,column,-1))return this.moveCursorTo(fold.start.row,fold.start.column);var line=this.session.getLine(row).substring(0,column);if(0==column){do row--,line=this.doc.getLine(row);while(row>0&&/^\\s*$/.test(line));column=line.length,/\\s+$/.test(line)||(line=\"\")}var leftOfCursor=lang.stringReverse(line),index=this.$shortWordEndIndex(leftOfCursor);return this.moveCursorTo(row,column-index)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(rows,chars){var screenPos=this.session.documentToScreenPosition(this.lead.row,this.lead.column);0===chars&&(this.$desiredColumn?screenPos.column=this.$desiredColumn:this.$desiredColumn=screenPos.column);var docPos=this.session.screenToDocumentPosition(screenPos.row+rows,screenPos.column);this.moveCursorTo(docPos.row,docPos.column+chars,0===chars)},this.moveCursorToPosition=function(position){this.moveCursorTo(position.row,position.column)},this.moveCursorTo=function(row,column,keepDesiredColumn){var fold=this.session.getFoldAt(row,column,1);fold&&(row=fold.start.row,column=fold.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(row,column),this.$keepDesiredColumnOnChange=!1,keepDesiredColumn||(this.$desiredColumn=null)},this.moveCursorToScreen=function(row,column,keepDesiredColumn){var pos=this.session.screenToDocumentPosition(row,column);this.moveCursorTo(pos.row,pos.column,keepDesiredColumn)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(range){this.setSelectionRange(range,range.cursor==range.start),this.$desiredColumn=range.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(range){var r=this.getRange();return range?(range.start.column=r.start.column,range.start.row=r.start.row,range.end.column=r.end.column,range.end.row=r.end.row):range=r,range.cursor=this.isBackwards()?range.start:range.end,range.desiredColumn=this.$desiredColumn,range}}).call(Selection.prototype),exports.Selection=Selection}),ace.define(\"ace/range\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return\"Range: [\"+this.start.row+\"/\"+this.start.column+\"] -> [\"+this.end.row+\"/\"+this.end.column+\"]\"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){\"object\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){\"object\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define(\"ace/mode/text\",[\"require\",\"exports\",\"module\",\"ace/tokenizer\",\"ace/mode/text_highlight_rules\",\"ace/mode/behaviour\",\"ace/unicode\",\"ace/lib/lang\"],function(acequire,exports){var Tokenizer=acequire(\"../tokenizer\").Tokenizer,TextHighlightRules=acequire(\"./text_highlight_rules\").TextHighlightRules,Behaviour=acequire(\"./behaviour\").Behaviour,unicode=acequire(\"../unicode\"),lang=acequire(\"../lib/lang\"),Mode=function(){this.$tokenizer=new Tokenizer((new TextHighlightRules).getRules()),this.$behaviour=new Behaviour};(function(){this.tokenRe=RegExp(\"^[\"+unicode.packages.L+unicode.packages.Mn+unicode.packages.Mc+unicode.packages.Nd+unicode.packages.Pc+\"\\\\$_]+\",\"g\"),this.nonTokenRe=RegExp(\"^(?:[^\"+unicode.packages.L+unicode.packages.Mn+unicode.packages.Mc+unicode.packages.Nd+unicode.packages.Pc+\"\\\\$_]|s])+\",\"g\"),this.getTokenizer=function(){return this.$tokenizer},this.toggleCommentLines=function(state,session,startRow,endRow){var regexpStart,lineCommentStart,doc=session.doc;if(!this.lineCommentStart)return!1;Array.isArray(this.lineCommentStart)?(regexpStart=this.lineCommentStart.map(lang.escapeRegExp).join(\"|\"),lineCommentStart=this.lineCommentStart[0]):(regexpStart=lang.escapeRegExp(this.lineCommentStart),lineCommentStart=this.lineCommentStart),regexpStart=RegExp(\"^\\\\s*(?:\"+regexpStart+\") ?\");for(var removeComment=!0,minSpace=1/0,indentations=[],i=startRow;endRow>=i;i++){var line=doc.getLine(i),indent=line.search(/\\S|$/);indentations[i]=indent,minSpace>indent&&(minSpace=indent),removeComment&&!regexpStart.test(line)&&(removeComment=!1)}if(removeComment)for(var i=startRow;endRow>=i;i++){var line=doc.getLine(i),m=line.match(regexpStart);doc.removeInLine(i,indentations[i],m[0].length)}else{lineCommentStart+=\" \";for(var i=startRow;endRow>=i;i++)doc.insertInLine({row:i,column:minSpace},lineCommentStart)}},this.getNextLineIndent=function(state,line){return this.$getIndent(line)},this.checkOutdent=function(){return!1},this.autoOutdent=function(){},this.$getIndent=function(line){return line.match(/^\\s*/)[0]},this.createWorker=function(){return null},this.createModeDelegates=function(mapping){if(this.$embeds){this.$modes={};for(var i=0;this.$embeds.length>i;i++)mapping[this.$embeds[i]]&&(this.$modes[this.$embeds[i]]=new mapping[this.$embeds[i]]);for(var delegations=[\"toggleCommentLines\",\"getNextLineIndent\",\"checkOutdent\",\"autoOutdent\",\"transformAction\"],i=0;delegations.length>i;i++)(function(scope){var functionName=delegations[i],defaultHandler=scope[functionName];scope[delegations[i]]=function(){return this.$delegator(functionName,arguments,defaultHandler)}})(this)}},this.$delegator=function(method,args,defaultHandler){for(var state=args[0],i=0;this.$embeds.length>i;i++)if(this.$modes[this.$embeds[i]]){var split=state.split(this.$embeds[i]);if(!split[0]&&split[1]){args[0]=split[1];var mode=this.$modes[this.$embeds[i]];return mode[method].apply(mode,args)}}var ret=defaultHandler.apply(this,args);return defaultHandler?ret:void 0},this.transformAction=function(state,action){if(this.$behaviour){var behaviours=this.$behaviour.getBehaviours();for(var key in behaviours)if(behaviours[key][action]){var ret=behaviours[key][action].apply(this,arguments);if(ret)return ret}}}}).call(Mode.prototype),exports.Mode=Mode}),ace.define(\"ace/tokenizer\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var MAX_TOKEN_COUNT=1e3,Tokenizer=function(rules){this.states=rules,this.regExps={},this.matchMappings={};for(var key in this.states){for(var state=this.states[key],ruleRegExps=[],matchTotal=0,mapping=this.matchMappings[key]={defaultToken:\"text\"},flag=\"g\",i=0;state.length>i;i++){var rule=state[i];if(rule.defaultToken&&(mapping.defaultToken=rule.defaultToken),rule.caseInsensitive&&(flag=\"gi\"),null!=rule.regex){rule.regex instanceof RegExp&&(rule.regex=(\"\"+rule.regex).slice(1,-1));var adjustedregex=rule.regex,matchcount=RegExp(\"(?:(\"+adjustedregex+\")|(.))\").exec(\"a\").length-2;if(Array.isArray(rule.token))if(1==rule.token.length||1==matchcount)rule.token=rule.token[0];else{if(matchcount-1!=rule.token.length)throw Error(\"number of classes and regexp groups in '\"+rule.token+\"'\\n'\"+rule.regex+\"' doesn't match\\n\"+(matchcount-1)+\"!=\"+rule.token.length);rule.tokenArray=rule.token,rule.onMatch=this.$arrayTokens}else\"function\"!=typeof rule.token||rule.onMatch||(rule.onMatch=matchcount>1?this.$applyToken:rule.token);matchcount>1&&(/\\\\\\d/.test(rule.regex)?adjustedregex=rule.regex.replace(/\\\\([0-9]+)/g,function(match,digit){return\"\\\\\"+(parseInt(digit,10)+matchTotal+1)}):(matchcount=1,adjustedregex=this.removeCapturingGroups(rule.regex)),rule.splitRegex||\"string\"==typeof rule.token||(rule.splitRegex=this.createSplitterRegexp(rule.regex,flag))),mapping[matchTotal]=i,matchTotal+=matchcount,ruleRegExps.push(adjustedregex),rule.onMatch||(rule.onMatch=null),rule.__proto__=null\n}}this.regExps[key]=RegExp(\"(\"+ruleRegExps.join(\")|(\")+\")|($)\",flag)}};(function(){this.$applyToken=function(str){var values=this.splitRegex.exec(str).slice(1),types=this.token.apply(this,values);if(\"string\"==typeof types)return[{type:types,value:str}];for(var tokens=[],i=0,l=types.length;l>i;i++)values[i]&&(tokens[tokens.length]={type:types[i],value:values[i]});return tokens},this.$arrayTokens=function(str){if(!str)return[];for(var values=this.splitRegex.exec(str),tokens=[],types=this.tokenArray,i=0,l=types.length;l>i;i++)values[i+1]&&(tokens[tokens.length]={type:types[i],value:values[i+1]});return tokens},this.removeCapturingGroups=function(src){var r=src.replace(/\\[(?:\\\\.|[^\\]])*?\\]|\\\\.|\\(\\?[:=!]|(\\()/g,function(x,y){return y?\"(?:\":x});return r},this.createSplitterRegexp=function(src,flag){if(-1!=src.indexOf(\"(?=\")){var stack=0,inChClass=!1,lastCapture={};src.replace(/(\\\\.)|(\\((?:\\?[=!])?)|(\\))|([\\[\\]])/g,function(m,esc,parenOpen,parenClose,square,index){return inChClass?inChClass=\"]\"!=square:square?inChClass=!0:parenClose?(stack==lastCapture.stack&&(lastCapture.end=index+1,lastCapture.stack=-1),stack--):parenOpen&&(stack++,1!=parenOpen.length&&(lastCapture.stack=stack,lastCapture.start=index)),m}),null!=lastCapture.end&&/^\\)*$/.test(src.substr(lastCapture.end))&&(src=src.substring(0,lastCapture.start)+src.substr(lastCapture.end))}return RegExp(src,(flag||\"\").replace(\"g\",\"\"))},this.getLineTokens=function(line,startState){if(startState&&\"string\"!=typeof startState){var stack=startState.slice(0);startState=stack[0]}else var stack=[];var currentState=startState||\"start\",state=this.states[currentState],mapping=this.matchMappings[currentState],re=this.regExps[currentState];re.lastIndex=0;for(var match,tokens=[],lastIndex=0,token={type:null,value:\"\"};match=re.exec(line);){var type=mapping.defaultToken,rule=null,value=match[0],index=re.lastIndex;if(index-value.length>lastIndex){var skipped=line.substring(lastIndex,index-value.length);token.type==type?token.value+=skipped:(token.type&&tokens.push(token),token={type:type,value:skipped})}for(var i=0;match.length-2>i;i++)if(void 0!==match[i+1]){rule=state[mapping[i]],type=rule.onMatch?rule.onMatch(value,currentState,stack):rule.token,rule.next&&(currentState=\"string\"==typeof rule.next?rule.next:rule.next(currentState,stack),state=this.states[currentState],state||(window.console&&console.error&&console.error(currentState,\"doesn't exist\"),currentState=\"start\",state=this.states[currentState]),mapping=this.matchMappings[currentState],lastIndex=index,re=this.regExps[currentState],re.lastIndex=index);break}if(value)if(\"string\"==typeof type)rule&&rule.merge===!1||token.type!==type?(token.type&&tokens.push(token),token={type:type,value:value}):token.value+=value;else if(type){token.type&&tokens.push(token),token={type:null,value:\"\"};for(var i=0;type.length>i;i++)tokens.push(type[i])}if(lastIndex==line.length)break;if(lastIndex=index,tokens.length>MAX_TOKEN_COUNT){token.value+=line.substr(lastIndex),currentState=\"start\";break}}return token.type&&tokens.push(token),{tokens:tokens,state:stack.length?stack:currentState}}}).call(Tokenizer.prototype),exports.Tokenizer=Tokenizer}),ace.define(\"ace/mode/text_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\"],function(acequire,exports){var lang=acequire(\"../lib/lang\"),TextHighlightRules=function(){this.$rules={start:[{token:\"empty_line\",regex:\"^$\"},{defaultToken:\"text\"}]}};(function(){this.addRules=function(rules,prefix){for(var key in rules){for(var state=rules[key],i=0;state.length>i;i++){var rule=state[i];rule.next&&(rule.next=prefix+rule.next)}this.$rules[prefix+key]=state}},this.getRules=function(){return this.$rules},this.embedRules=function(HighlightRules,prefix,escapeRules,states,append){var embedRules=(new HighlightRules).getRules();if(states)for(var i=0;states.length>i;i++)states[i]=prefix+states[i];else{states=[];for(var key in embedRules)states.push(prefix+key)}if(this.addRules(embedRules,prefix),escapeRules)for(var addRules=Array.prototype[append?\"push\":\"unshift\"],i=0;states.length>i;i++)addRules.apply(this.$rules[states[i]],lang.deepCopy(escapeRules));this.$embeds||(this.$embeds=[]),this.$embeds.push(prefix)},this.getEmbeds=function(){return this.$embeds};var pushState=function(currentState,stack){return\"start\"!=currentState&&stack.unshift(this.nextState,currentState),this.nextState},popState=function(currentState,stack){return stack[0]!==currentState?\"start\":(stack.shift(),stack.shift())};this.normalizeRules=function(){function processState(key){var state=rules[key];state.processed=!0;for(var i=0;state.length>i;i++){var rule=state[i];!rule.regex&&rule.start&&(rule.regex=rule.start,rule.next||(rule.next=[]),rule.next.push({defaultToken:rule.token},{token:rule.token+\".end\",regex:rule.end||rule.start,next:\"pop\"}),rule.token=rule.token+\".start\",rule.push=!0);var next=rule.next||rule.push;if(next&&Array.isArray(next)){var stateName=rule.stateName||rule.token+id++;rules[stateName]=next,rule.next=stateName,processState(stateName)}else\"pop\"==next&&(rule.next=popState);if(rule.push&&(rule.nextState=rule.next||rule.push,rule.next=pushState,delete rule.push),rule.rules)for(var r in rule.rules)rules[r]?rules[r].push&&rules[r].push.apply(rules[r],rule.rules[r]):rules[r]=rule.rules[r];if(rule.include||\"string\"==typeof rule)var includeName=rule.include||rule,toInsert=rules[includeName];else Array.isArray(rule)&&(toInsert=rule);if(toInsert){var args=[i,1].concat(toInsert);rule.noEscape&&(args=args.filter(function(x){return!x.next})),state.splice.apply(state,args),i--,toInsert=null}}}var id=0,rules=this.$rules;Object.keys(rules).forEach(processState)},this.createKeywordMapper=function(map,defaultToken,ignoreCase,splitChar){var keywords=Object.create(null);return Object.keys(map).forEach(function(className){var a=map[className];ignoreCase&&(a=a.toLowerCase());for(var list=a.split(splitChar||\"|\"),i=list.length;i--;)keywords[list[i]]=className}),map=null,ignoreCase?function(value){return keywords[value.toLowerCase()]||defaultToken}:function(value){return keywords[value]||defaultToken}},this.getKeywords=function(){return this.$keywords}}).call(TextHighlightRules.prototype),exports.TextHighlightRules=TextHighlightRules}),ace.define(\"ace/mode/behaviour\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var Behaviour=function(){this.$behaviours={}};(function(){this.add=function(name,action,callback){switch(void 0){case this.$behaviours:this.$behaviours={};case this.$behaviours[name]:this.$behaviours[name]={}}this.$behaviours[name][action]=callback},this.addBehaviours=function(behaviours){for(var key in behaviours)for(var action in behaviours[key])this.add(key,action,behaviours[key][action])},this.remove=function(name){this.$behaviours&&this.$behaviours[name]&&delete this.$behaviours[name]},this.inherit=function(mode,filter){if(\"function\"==typeof mode)var behaviours=(new mode).getBehaviours(filter);else var behaviours=mode.getBehaviours(filter);this.addBehaviours(behaviours)},this.getBehaviours=function(filter){if(filter){for(var ret={},i=0;filter.length>i;i++)this.$behaviours[filter[i]]&&(ret[filter[i]]=this.$behaviours[filter[i]]);return ret}return this.$behaviours}}).call(Behaviour.prototype),exports.Behaviour=Behaviour}),ace.define(\"ace/unicode\",[\"require\",\"exports\",\"module\"],function(acequire,exports){function addUnicodePackage(pack){var codePoint=/\\w{4}/g;for(var name in pack)exports.packages[name]=pack[name].replace(codePoint,\"\\\\u$&\")}exports.packages={},addUnicodePackage({L:\"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC\",Ll:\"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A\",Lu:\"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A\",Lt:\"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC\",Lm:\"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F\",Lo:\"01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC\",M:\"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26\",Mn:\"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26\",Mc:\"0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC\",Me:\"0488048906DE20DD-20E020E2-20E4A670-A672\",N:\"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19\",Nd:\"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19\",Nl:\"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF\",No:\"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835\",P:\"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65\",Pd:\"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D\",Ps:\"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62\",Pe:\"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63\",Pi:\"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20\",Pf:\"00BB2019201D203A2E032E052E0A2E0D2E1D2E21\",Pc:\"005F203F20402054FE33FE34FE4D-FE4FFF3F\",Po:\"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65\",S:\"0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD\",Sm:\"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC\",Sc:\"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6\",Sk:\"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3\",So:\"00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD\",Z:\"002000A01680180E2000-200A20282029202F205F3000\",Zs:\"002000A01680180E2000-200A202F205F3000\",Zl:\"2028\",Zp:\"2029\",C:\"0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF\",Cc:\"0000-001F007F-009F\",Cf:\"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB\",Co:\"E000-F8FF\",Cs:\"D800-DFFF\",Cn:\"03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF\"})\n}),ace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Anchor=acequire(\"./anchor\").Anchor,Document=function(text){this.$lines=[],0==text.length?this.$lines=[\"\"]:Array.isArray(text)?this.insertLines(0,text):this.insert({row:0,column:0},text)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength();this.remove(new Range(0,0,len,this.getLine(len-1).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0==\"aaa\".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,\"\\n\").split(\"\\n\")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:\"\\n\"},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\"windows\":return\"\\r\\n\";case\"unix\":return\"\\n\";default:return this.$autoNewLine}},this.$autoNewLine=\"\\n\",this.$newLineMode=\"auto\",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode)},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\"\\r\\n\"==text||\"\\r\"==text||\"\\n\"==text},this.getLine=function(row){return this.$lines[row]||\"\"},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){if(range.start.row==range.end.row)return this.$lines[range.start.row].substring(range.start.column,range.end.column);var lines=this.getLines(range.start.row+1,range.end.row-1);return lines.unshift((this.$lines[range.start.row]||\"\").substring(range.start.column)),lines.push((this.$lines[range.end.row]||\"\").substring(0,range.end.column)),lines.join(this.getNewLineCharacter())},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):0>position.row&&(position.row=0),position},this.insert=function(position,text){if(!text||0===text.length)return position;position=this.$clipPosition(position),1>=this.getLength()&&this.$detectNewLine(text);var lines=this.$split(text),firstLine=lines.splice(0,1)[0],lastLine=0==lines.length?null:lines.splice(lines.length-1,1)[0];return position=this.insertInLine(position,firstLine),null!==lastLine&&(position=this.insertNewLine(position),position=this.insertLines(position.row,lines),position=this.insertInLine(position,lastLine||\"\")),position},this.insertLines=function(row,lines){if(0==lines.length)return{row:row,column:0};if(lines.length>65535){var end=this.insertLines(row,lines.slice(65535));lines=lines.slice(0,65535)}var args=[row,0];args.push.apply(args,lines),this.$lines.splice.apply(this.$lines,args);var range=new Range(row,0,row+lines.length,0),delta={action:\"insertLines\",range:range,lines:lines};return this._emit(\"change\",{data:delta}),end||range.end},this.insertNewLine=function(position){position=this.$clipPosition(position);var line=this.$lines[position.row]||\"\";this.$lines[position.row]=line.substring(0,position.column),this.$lines.splice(position.row+1,0,line.substring(position.column,line.length));var end={row:position.row+1,column:0},delta={action:\"insertText\",range:Range.fromPoints(position,end),text:this.getNewLineCharacter()};return this._emit(\"change\",{data:delta}),end},this.insertInLine=function(position,text){if(0==text.length)return position;var line=this.$lines[position.row]||\"\";this.$lines[position.row]=line.substring(0,position.column)+text+line.substring(position.column);var end={row:position.row,column:position.column+text.length},delta={action:\"insertText\",range:Range.fromPoints(position,end),text:text};return this._emit(\"change\",{data:delta}),end},this.remove=function(range){if(range.start=this.$clipPosition(range.start),range.end=this.$clipPosition(range.end),range.isEmpty())return range.start;var firstRow=range.start.row,lastRow=range.end.row;if(range.isMultiLine()){var firstFullRow=0==range.start.column?firstRow:firstRow+1,lastFullRow=lastRow-1;range.end.column>0&&this.removeInLine(lastRow,0,range.end.column),lastFullRow>=firstFullRow&&this.removeLines(firstFullRow,lastFullRow),firstFullRow!=firstRow&&(this.removeInLine(firstRow,range.start.column,this.getLine(firstRow).length),this.removeNewLine(range.start.row))}else this.removeInLine(firstRow,range.start.column,range.end.column);return range.start},this.removeInLine=function(row,startColumn,endColumn){if(startColumn!=endColumn){var range=new Range(row,startColumn,row,endColumn),line=this.getLine(row),removed=line.substring(startColumn,endColumn),newLine=line.substring(0,startColumn)+line.substring(endColumn,line.length);this.$lines.splice(row,1,newLine);var delta={action:\"removeText\",range:range,text:removed};return this._emit(\"change\",{data:delta}),range.start}},this.removeLines=function(firstRow,lastRow){var range=new Range(firstRow,0,lastRow+1,0),removed=this.$lines.splice(firstRow,lastRow-firstRow+1),delta={action:\"removeLines\",range:range,nl:this.getNewLineCharacter(),lines:removed};return this._emit(\"change\",{data:delta}),removed},this.removeNewLine=function(row){var firstLine=this.getLine(row),secondLine=this.getLine(row+1),range=new Range(row,firstLine.length,row+1,0),line=firstLine+secondLine;this.$lines.splice(row,2,line);var delta={action:\"removeText\",range:range,text:this.getNewLineCharacter()};this._emit(\"change\",{data:delta})},this.replace=function(range,text){if(0==text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;if(this.remove(range),text)var end=this.insert(range.start,text);else end=range.start;return end},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++){var delta=deltas[i],range=Range.fromPoints(delta.range.start,delta.range.end);\"insertLines\"==delta.action?this.insertLines(range.start.row,delta.lines):\"insertText\"==delta.action?this.insert(range.start,delta.text):\"removeLines\"==delta.action?this.removeLines(range.start.row,range.end.row-1):\"removeText\"==delta.action&&this.remove(range)}},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--){var delta=deltas[i],range=Range.fromPoints(delta.range.start,delta.range.end);\"insertLines\"==delta.action?this.removeLines(range.start.row,range.end.row-1):\"insertText\"==delta.action?this.remove(range):\"removeLines\"==delta.action?this.insertLines(range.start.row,delta.lines):\"removeText\"==delta.action&&this.insert(range.start,delta.text)}},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length;return index+newlineLength*i+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.document=doc,column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column),this.$onChange=this.onChange.bind(this),doc.on(\"change\",this.$onChange)};(function(){oop.implement(this,EventEmitter),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.onChange=function(e){var delta=e.data,range=delta.range;if(!(range.start.row==range.end.row&&range.start.row!=this.row||range.start.row>this.row||range.start.row==this.row&&range.start.column>this.column)){var row=this.row,column=this.column,start=range.start,end=range.end;\"insertText\"===delta.action?start.row===row&&column>=start.column?start.row===end.row?column+=end.column-start.column:(column-=start.column,row+=end.row-start.row):start.row!==end.row&&row>start.row&&(row+=end.row-start.row):\"insertLines\"===delta.action?row>=start.row&&(row+=end.row-start.row):\"removeText\"===delta.action?start.row===row&&column>start.column?column=end.column>=column?start.column:Math.max(0,column-(end.column-start.column)):start.row!==end.row&&row>start.row?(end.row===row&&(column=Math.max(0,column-end.column)+start.column),row-=end.row-start.row):end.row===row&&(row-=end.row-start.row,column=Math.max(0,column-end.column)+start.column):\"removeLines\"==delta.action&&row>=start.row&&(row>=end.row?row-=end.row-start.row:(row=start.row,column=0)),this.setPosition(row,column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._emit(\"change\",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener(\"change\",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define(\"ace/background_tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,BackgroundTokenizer=function(tokenizer){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.tokenizer=tokenizer;var self=this;this.$worker=function(){if(self.running){for(var workerStart=new Date,startLine=self.currentLine,doc=self.doc,processedLines=0,len=doc.getLength();len>self.currentLine;){for(self.$tokenizeRow(self.currentLine);self.lines[self.currentLine];)self.currentLine++;if(processedLines++,0==processedLines%5&&new Date-workerStart>20)return self.fireUpdateEvent(startLine,self.currentLine-1),self.running=setTimeout(self.$worker,20),void 0}self.running=!1,self.fireUpdateEvent(startLine,len-1)}}};(function(){oop.implement(this,EventEmitter),this.setTokenizer=function(tokenizer){this.tokenizer=tokenizer,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(doc){this.doc=doc,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(firstRow,lastRow){var data={first:firstRow,last:lastRow};this._emit(\"update\",{data:data})},this.start=function(startRow){this.currentLine=Math.min(startRow||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.$updateOnChange=function(delta){var range=delta.range,startRow=range.start.row,len=range.end.row-startRow;if(0===len)this.lines[startRow]=null;else if(\"removeText\"==delta.action||\"removeLines\"==delta.action)this.lines.splice(startRow,len+1,null),this.states.splice(startRow,len+1,null);else{var args=Array(len+1);args.unshift(startRow,1),this.lines.splice.apply(this.lines,args),this.states.splice.apply(this.states,args)}this.currentLine=Math.min(startRow,this.currentLine,this.doc.getLength()),this.stop(),this.running=setTimeout(this.$worker,700)},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(row){return this.lines[row]||this.$tokenizeRow(row)},this.getState=function(row){return this.currentLine==row&&this.$tokenizeRow(row),this.states[row]||\"start\"},this.$tokenizeRow=function(row){var line=this.doc.getLine(row),state=this.states[row-1],data=this.tokenizer.getLineTokens(line,state,row);return this.states[row]+\"\"!=data.state+\"\"?(this.states[row]=data.state,this.lines[row+1]=null,this.currentLine>row+1&&(this.currentLine=row+1)):this.currentLine==row&&(this.currentLine=row+1),this.lines[row]=data.tokens}}).call(BackgroundTokenizer.prototype),exports.BackgroundTokenizer=BackgroundTokenizer}),ace.define(\"ace/search_highlight\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"],function(acequire,exports){var lang=acequire(\"./lib/lang\");acequire(\"./lib/oop\");var Range=acequire(\"./range\").Range,SearchHighlight=function(regExp,clazz,type){this.setRegexp(regExp),this.clazz=clazz,this.type=type||\"text\"};(function(){this.MAX_RANGES=500,this.setRegexp=function(regExp){this.regExp+\"\"!=regExp+\"\"&&(this.regExp=regExp,this.cache=[])},this.update=function(html,markerLayer,session,config){if(this.regExp)for(var start=config.firstRow,end=config.lastRow,i=start;end>=i;i++){var ranges=this.cache[i];null==ranges&&(ranges=lang.getMatchOffsets(session.getLine(i),this.regExp),ranges.length>this.MAX_RANGES&&(ranges=ranges.slice(0,this.MAX_RANGES)),ranges=ranges.map(function(match){return new Range(i,match.offset,i,match.offset+match.length)}),this.cache[i]=ranges.length?ranges:\"\");for(var j=ranges.length;j--;)markerLayer.drawSingleLineMarker(html,ranges[j].toScreenRange(session),this.clazz,config,null,this.type)}}}).call(SearchHighlight.prototype),exports.SearchHighlight=SearchHighlight}),ace.define(\"ace/edit_session/folding\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/edit_session/fold_line\",\"ace/edit_session/fold\",\"ace/token_iterator\"],function(acequire,exports){function Folding(){this.getFoldAt=function(row,column,side){var foldLine=this.getFoldLine(row);if(!foldLine)return null;for(var folds=foldLine.folds,i=0;folds.length>i;i++){var fold=folds[i];if(fold.range.contains(row,column)){if(1==side&&fold.range.isEnd(row,column))continue;if(-1==side&&fold.range.isStart(row,column))continue;return fold}}},this.getFoldsInRange=function(range){var start=range.start,end=range.end,foldLines=this.$foldData,foundFolds=[];start.column+=1,end.column-=1;for(var i=0;foldLines.length>i;i++){var cmp=foldLines[i].range.compareRange(range);if(2!=cmp){if(-2==cmp)break;for(var folds=foldLines[i].folds,j=0;folds.length>j;j++){var fold=folds[j];if(cmp=fold.range.compareRange(range),-2==cmp)break;if(2!=cmp){if(42==cmp)break;foundFolds.push(fold)}}}}return start.column-=1,end.column+=1,foundFolds},this.getAllFolds=function(){function addFold(fold){folds.push(fold)}for(var folds=[],foldLines=this.$foldData,i=0;foldLines.length>i;i++)for(var j=0;foldLines[i].folds.length>j;j++)addFold(foldLines[i].folds[j]);return folds},this.getFoldStringAt=function(row,column,trim,foldLine){if(foldLine=foldLine||this.getFoldLine(row),!foldLine)return null;for(var str,fold,lastFold={end:{column:0}},i=0;foldLine.folds.length>i;i++){fold=foldLine.folds[i];var cmp=fold.range.compareEnd(row,column);if(-1==cmp){str=this.getLine(fold.start.row).substring(lastFold.end.column,fold.start.column);break}if(0===cmp)return null;lastFold=fold}return str||(str=this.getLine(fold.start.row).substring(lastFold.end.column)),-1==trim?str.substring(0,column-lastFold.end.column):1==trim?str.substring(column-lastFold.end.column):str},this.getFoldLine=function(docRow,startFoldLine){var foldData=this.$foldData,i=0;for(startFoldLine&&(i=foldData.indexOf(startFoldLine)),-1==i&&(i=0),i;foldData.length>i;i++){var foldLine=foldData[i];if(docRow>=foldLine.start.row&&foldLine.end.row>=docRow)return foldLine;if(foldLine.end.row>docRow)return null}return null},this.getNextFoldLine=function(docRow,startFoldLine){var foldData=this.$foldData,i=0;for(startFoldLine&&(i=foldData.indexOf(startFoldLine)),-1==i&&(i=0),i;foldData.length>i;i++){var foldLine=foldData[i];if(foldLine.end.row>=docRow)return foldLine}return null},this.getFoldedRowCount=function(first,last){for(var foldData=this.$foldData,rowCount=last-first+1,i=0;foldData.length>i;i++){var foldLine=foldData[i],end=foldLine.end.row,start=foldLine.start.row;if(end>=last){last>start&&(start>=first?rowCount-=last-start:rowCount=0);break}end>=first&&(rowCount-=start>=first?end-start:end-first+1)}return rowCount},this.$addFoldLine=function(foldLine){return this.$foldData.push(foldLine),this.$foldData.sort(function(a,b){return a.start.row-b.start.row}),foldLine},this.addFold=function(placeholder,range){var fold,foldData=this.$foldData,added=!1;placeholder instanceof Fold?fold=placeholder:(fold=new Fold(range,placeholder),fold.collapseChildren=range.collapseChildren),this.$clipRangeToDocument(fold.range);var startRow=fold.start.row,startColumn=fold.start.column,endRow=fold.end.row,endColumn=fold.end.column;if(startRow==endRow&&2>endColumn-startColumn)throw\"The range has to be at least 2 characters width\";var startFold=this.getFoldAt(startRow,startColumn,1),endFold=this.getFoldAt(endRow,endColumn,-1);if(startFold&&endFold==startFold)return startFold.addSubFold(fold);if(startFold&&!startFold.range.isStart(startRow,startColumn)||endFold&&!endFold.range.isEnd(endRow,endColumn))throw\"A fold can't intersect already existing fold\"+fold.range+startFold.range;var folds=this.getFoldsInRange(fold.range);folds.length>0&&(this.removeFolds(folds),folds.forEach(function(subFold){fold.addSubFold(subFold)}));for(var i=0;foldData.length>i;i++){var foldLine=foldData[i];if(endRow==foldLine.start.row){foldLine.addFold(fold),added=!0;break}if(startRow==foldLine.end.row){if(foldLine.addFold(fold),added=!0,!fold.sameRow){var foldLineNext=foldData[i+1];if(foldLineNext&&foldLineNext.start.row==endRow){foldLine.merge(foldLineNext);break}}break}if(foldLine.start.row>=endRow)break}return added||(foldLine=this.$addFoldLine(new FoldLine(this.$foldData,fold))),this.$useWrapMode?this.$updateWrapData(foldLine.start.row,foldLine.start.row):this.$updateRowLengthCache(foldLine.start.row,foldLine.start.row),this.$modified=!0,this._emit(\"changeFold\",{data:fold}),fold},this.addFolds=function(folds){folds.forEach(function(fold){this.addFold(fold)},this)},this.removeFold=function(fold){var foldLine=fold.foldLine,startRow=foldLine.start.row,endRow=foldLine.end.row,foldLines=this.$foldData,folds=foldLine.folds;if(1==folds.length)foldLines.splice(foldLines.indexOf(foldLine),1);else if(foldLine.range.isEnd(fold.end.row,fold.end.column))folds.pop(),foldLine.end.row=folds[folds.length-1].end.row,foldLine.end.column=folds[folds.length-1].end.column;else if(foldLine.range.isStart(fold.start.row,fold.start.column))folds.shift(),foldLine.start.row=folds[0].start.row,foldLine.start.column=folds[0].start.column;else if(fold.sameRow)folds.splice(folds.indexOf(fold),1);else{var newFoldLine=foldLine.split(fold.start.row,fold.start.column);folds=newFoldLine.folds,folds.shift(),newFoldLine.start.row=folds[0].start.row,newFoldLine.start.column=folds[0].start.column}this.$updating||(this.$useWrapMode?this.$updateWrapData(startRow,endRow):this.$updateRowLengthCache(startRow,endRow)),this.$modified=!0,this._emit(\"changeFold\",{data:fold})},this.removeFolds=function(folds){for(var cloneFolds=[],i=0;folds.length>i;i++)cloneFolds.push(folds[i]);cloneFolds.forEach(function(fold){this.removeFold(fold)},this),this.$modified=!0},this.expandFold=function(fold){this.removeFold(fold),fold.subFolds.forEach(function(subFold){fold.restoreRange(subFold),this.addFold(subFold)},this),fold.collapseChildren>0&&this.foldAll(fold.start.row+1,fold.end.row,fold.collapseChildren-1),fold.subFolds=[]},this.expandFolds=function(folds){folds.forEach(function(fold){this.expandFold(fold)},this)},this.unfold=function(location,expandInner){var range,folds;if(null==location?(range=new Range(0,0,this.getLength(),0),expandInner=!0):range=\"number\"==typeof location?new Range(location,0,location,this.getLine(location).length):\"row\"in location?Range.fromPoints(location,location):location,folds=this.getFoldsInRange(range),expandInner)this.removeFolds(folds);else for(;folds.length;)this.expandFolds(folds),folds=this.getFoldsInRange(range)},this.isRowFolded=function(docRow,startFoldRow){return!!this.getFoldLine(docRow,startFoldRow)},this.getRowFoldEnd=function(docRow,startFoldRow){var foldLine=this.getFoldLine(docRow,startFoldRow);return foldLine?foldLine.end.row:docRow},this.getRowFoldStart=function(docRow,startFoldRow){var foldLine=this.getFoldLine(docRow,startFoldRow);return foldLine?foldLine.start.row:docRow},this.getFoldDisplayLine=function(foldLine,endRow,endColumn,startRow,startColumn){null==startRow&&(startRow=foldLine.start.row,startColumn=0),null==endRow&&(endRow=foldLine.end.row,endColumn=this.getLine(endRow).length);var doc=this.doc,textLine=\"\";return foldLine.walk(function(placeholder,row,column,lastColumn){if(!(startRow>row)){if(row==startRow){if(startColumn>column)return;lastColumn=Math.max(startColumn,lastColumn)}textLine+=null!=placeholder?placeholder:doc.getLine(row).substring(lastColumn,column)}},endRow,endColumn),textLine},this.getDisplayLine=function(row,endColumn,startRow,startColumn){var foldLine=this.getFoldLine(row);if(foldLine)return this.getFoldDisplayLine(foldLine,row,endColumn,startRow,startColumn);var line;return line=this.doc.getLine(row),line.substring(startColumn||0,endColumn||line.length)},this.$cloneFoldData=function(){var fd=[];return fd=this.$foldData.map(function(foldLine){var folds=foldLine.folds.map(function(fold){return fold.clone()});return new FoldLine(fd,folds)})},this.toggleFold=function(tryToUnfold){var fold,bracketPos,selection=this.selection,range=selection.getRange();if(range.isEmpty()){var cursor=range.start;if(fold=this.getFoldAt(cursor.row,cursor.column))return this.expandFold(fold),void 0;(bracketPos=this.findMatchingBracket(cursor))?1==range.comparePoint(bracketPos)?range.end=bracketPos:(range.start=bracketPos,range.start.column++,range.end.column--):(bracketPos=this.findMatchingBracket({row:cursor.row,column:cursor.column+1}))?(1==range.comparePoint(bracketPos)?range.end=bracketPos:range.start=bracketPos,range.start.column++):range=this.getCommentFoldRange(cursor.row,cursor.column)||range}else{var folds=this.getFoldsInRange(range);if(tryToUnfold&&folds.length)return this.expandFolds(folds),void 0;1==folds.length&&(fold=folds[0])}if(fold||(fold=this.getFoldAt(range.start.row,range.start.column)),fold&&\"\"+fold.range==\"\"+range)return this.expandFold(fold),void 0;var placeholder=\"...\";if(!range.isMultiLine()){if(placeholder=this.getTextRange(range),4>placeholder.length)return;placeholder=placeholder.trim().substring(0,2)+\"..\"}this.addFold(placeholder,range)},this.getCommentFoldRange=function(row,column,dir){var iterator=new TokenIterator(this,row,column),token=iterator.getCurrentToken();if(token&&/^comment|string/.test(token.type)){var range=new Range,re=RegExp(token.type.replace(/\\..*/,\"\\\\.\"));if(1!=dir){do token=iterator.stepBackward();while(token&&re.test(token.type));iterator.stepForward()}if(range.start.row=iterator.getCurrentTokenRow(),range.start.column=iterator.getCurrentTokenColumn()+2,iterator=new TokenIterator(this,row,column),-1!=dir){do token=iterator.stepForward();while(token&&re.test(token.type));token=iterator.stepBackward()}else token=iterator.getCurrentToken();return range.end.row=iterator.getCurrentTokenRow(),range.end.column=iterator.getCurrentTokenColumn()+token.value.length-2,range}},this.foldAll=function(startRow,endRow,depth){void 0==depth&&(depth=1e5);var foldWidgets=this.foldWidgets;endRow=endRow||this.getLength();for(var row=startRow||0;endRow>row;row++)if(null==foldWidgets[row]&&(foldWidgets[row]=this.getFoldWidget(row)),\"start\"==foldWidgets[row]){var range=this.getFoldWidgetRange(row);if(range&&endRow>=range.end.row)try{var fold=this.addFold(\"...\",range);fold.collapseChildren=depth}catch(e){}row=range.end.row}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle=\"markbegin\",this.setFoldStyle=function(style){if(!this.$foldStyles[style])throw Error(\"invalid fold style: \"+style+\"[\"+Object.keys(this.$foldStyles).join(\", \")+\"]\");if(this.$foldStyle!=style){this.$foldStyle=style,\"manual\"==style&&this.unfold();var mode=this.$foldMode;this.$setFolding(null),this.$setFolding(mode)}},this.$setFolding=function(foldMode){if(this.$foldMode!=foldMode){if(this.$foldMode=foldMode,this.removeListener(\"change\",this.$updateFoldWidgets),this._emit(\"changeAnnotation\"),!foldMode||\"manual\"==this.$foldStyle)return this.foldWidgets=null,void 0;this.foldWidgets=[],this.getFoldWidget=foldMode.getFoldWidget.bind(foldMode,this,this.$foldStyle),this.getFoldWidgetRange=foldMode.getFoldWidgetRange.bind(foldMode,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.on(\"change\",this.$updateFoldWidgets)}},this.getParentFoldRangeData=function(row,ignoreCurrent){var fw=this.foldWidgets;if(!fw||ignoreCurrent&&fw[row])return{};for(var firstRange,i=row-1;i>=0;){var c=fw[i];if(null==c&&(c=fw[i]=this.getFoldWidget(i)),\"start\"==c){var range=this.getFoldWidgetRange(i);if(firstRange||(firstRange=range),range&&range.end.row>=row)break}i--}return{range:-1!==i&&range,firstRange:firstRange}},this.onFoldWidgetClick=function(row,e){var type=this.getFoldWidget(row),line=this.getLine(row);e=e.domEvent;var children=e.shiftKey,all=e.ctrlKey||e.metaKey,siblings=e.altKey,dir=\"end\"===type?-1:1,fold=this.getFoldAt(row,-1===dir?0:line.length,dir);if(fold)return children||all?this.removeFold(fold):this.expandFold(fold),void 0;var range=this.getFoldWidgetRange(row);if(range&&!range.isMultiLine()&&(fold=this.getFoldAt(range.start.row,range.start.column,1),fold&&range.isEqual(fold.range)))return this.removeFold(fold),void 0;if(siblings){var data=this.getParentFoldRangeData(row);if(data.range)var startRow=data.range.start.row+1,endRow=data.range.end.row;this.foldAll(startRow,endRow,all?1e4:0)}else if(children){var endRow=range?range.end.row:this.getLength();this.foldAll(row+1,range.end.row,all?1e4:0)}else range&&(all&&(range.collapseChildren=1e4),this.addFold(\"...\",range));range||((e.target||e.srcElement).className+=\" ace_invalid\")},this.updateFoldWidgets=function(e){var delta=e.data,range=delta.range,firstRow=range.start.row,len=range.end.row-firstRow;if(0===len)this.foldWidgets[firstRow]=null;else if(\"removeText\"==delta.action||\"removeLines\"==delta.action)this.foldWidgets.splice(firstRow,len+1,null);else{var args=Array(len+1);args.unshift(firstRow,1),this.foldWidgets.splice.apply(this.foldWidgets,args)}}}var Range=acequire(\"../range\").Range,FoldLine=acequire(\"./fold_line\").FoldLine,Fold=acequire(\"./fold\").Fold,TokenIterator=acequire(\"../token_iterator\").TokenIterator;exports.Folding=Folding}),ace.define(\"ace/edit_session/fold_line\",[\"require\",\"exports\",\"module\",\"ace/range\"],function(acequire,exports){function FoldLine(foldData,folds){this.foldData=foldData,Array.isArray(folds)?this.folds=folds:folds=this.folds=[folds];var last=folds[folds.length-1];this.range=new Range(folds[0].start.row,folds[0].start.column,last.end.row,last.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(fold){fold.setFoldLine(this)},this)}var Range=acequire(\"../range\").Range;(function(){this.shiftRow=function(shift){this.start.row+=shift,this.end.row+=shift,this.folds.forEach(function(fold){fold.start.row+=shift,fold.end.row+=shift})},this.addFold=function(fold){if(fold.sameRow){if(fold.start.row\u003Cthis.startRow||fold.endRow>this.endRow)throw\"Can't add a fold to this FoldLine as it has no connection\";this.folds.push(fold),this.folds.sort(function(a,b){return-a.range.compareEnd(b.start.row,b.start.column)}),this.range.compareEnd(fold.start.row,fold.start.column)>0?(this.end.row=fold.end.row,this.end.column=fold.end.column):0>this.range.compareStart(fold.end.row,fold.end.column)&&(this.start.row=fold.start.row,this.start.column=fold.start.column)}else if(fold.start.row==this.end.row)this.folds.push(fold),this.end.row=fold.end.row,this.end.column=fold.end.column;else{if(fold.end.row!=this.start.row)throw\"Trying to add fold to FoldRow that doesn't have a matching row\";this.folds.unshift(fold),this.start.row=fold.start.row,this.start.column=fold.start.column}fold.foldLine=this},this.containsRow=function(row){return row>=this.start.row&&this.end.row>=row},this.walk=function(callback,endRow,endColumn){var fold,comp,stop,lastEnd=0,folds=this.folds,isNewRow=!0;null==endRow&&(endRow=this.end.row,endColumn=this.end.column);for(var i=0;folds.length>i;i++){if(fold=folds[i],comp=fold.range.compareStart(endRow,endColumn),-1==comp)return callback(null,endRow,endColumn,lastEnd,isNewRow),void 0;if(stop=callback(null,fold.start.row,fold.start.column,lastEnd,isNewRow),stop=!stop&&callback(fold.placeholder,fold.start.row,fold.start.column,lastEnd),stop||0==comp)return;isNewRow=!fold.sameRow,lastEnd=fold.end.column}callback(null,endRow,endColumn,lastEnd,isNewRow)},this.getNextFoldTo=function(row,column){for(var fold,cmp,i=0;this.folds.length>i;i++){if(fold=this.folds[i],cmp=fold.range.compareEnd(row,column),-1==cmp)return{fold:fold,kind:\"after\"};if(0==cmp)return{fold:fold,kind:\"inside\"}}return null},this.addRemoveChars=function(row,column,len){var fold,folds,ret=this.getNextFoldTo(row,column);if(ret)if(fold=ret.fold,\"inside\"==ret.kind&&fold.start.column!=column&&fold.start.row!=row)window.console&&window.console.log(row,column,fold);else if(fold.start.row==row){folds=this.folds;var i=folds.indexOf(fold);for(0==i&&(this.start.column+=len),i;folds.length>i;i++){if(fold=folds[i],fold.start.column+=len,!fold.sameRow)return;fold.end.column+=len}this.end.column+=len}},this.split=function(row,column){var fold=this.getNextFoldTo(row,column).fold,folds=this.folds,foldData=this.foldData;if(!fold)return null;var i=folds.indexOf(fold),foldBefore=folds[i-1];this.end.row=foldBefore.end.row,this.end.column=foldBefore.end.column,folds=folds.splice(i,folds.length-i);var newFoldLine=new FoldLine(foldData,folds);return foldData.splice(foldData.indexOf(this)+1,0,newFoldLine),newFoldLine},this.merge=function(foldLineNext){for(var folds=foldLineNext.folds,i=0;folds.length>i;i++)this.addFold(folds[i]);var foldData=this.foldData;foldData.splice(foldData.indexOf(foldLineNext),1)},this.toString=function(){var ret=[\"\"+this.range+\": [\"];return this.folds.forEach(function(fold){ret.push(\" \"+(\"\"+fold))}),ret.push(\"]\"),ret.join(\"\\n\")},this.idxToPosition=function(idx){for(var fold,lastFoldEndColumn=0,i=0;this.folds.length>i;i++){var fold=this.folds[i];if(idx-=fold.start.column-lastFoldEndColumn,0>idx)return{row:fold.start.row,column:fold.start.column+idx};if(idx-=fold.placeholder.length,0>idx)return fold.start;lastFoldEndColumn=fold.end.column}return{row:this.end.row,column:this.end.column+idx}}}).call(FoldLine.prototype),exports.FoldLine=FoldLine}),ace.define(\"ace/edit_session/fold\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/range_list\",\"ace/lib/oop\"],function(acequire,exports){function consumePoint(point,anchor){point.row-=anchor.row,0==point.row&&(point.column-=anchor.column)}function consumeRange(range,anchor){consumePoint(range.start,anchor),consumePoint(range.end,anchor)}function restorePoint(point,anchor){0==point.row&&(point.column+=anchor.column),point.row+=anchor.row}function restoreRange(range,anchor){restorePoint(range.start,anchor),restorePoint(range.end,anchor)}acequire(\"../range\").Range;var RangeList=acequire(\"../range_list\").RangeList,oop=acequire(\"../lib/oop\"),Fold=exports.Fold=function(range,placeholder){this.foldLine=null,this.placeholder=placeholder,this.range=range,this.start=range.start,this.end=range.end,this.sameRow=range.start.row==range.end.row,this.subFolds=this.ranges=[]};oop.inherits(Fold,RangeList),function(){this.toString=function(){return'\"'+this.placeholder+'\" '+(\"\"+this.range)\n},this.setFoldLine=function(foldLine){this.foldLine=foldLine,this.subFolds.forEach(function(fold){fold.setFoldLine(foldLine)})},this.clone=function(){var range=this.range.clone(),fold=new Fold(range,this.placeholder);return this.subFolds.forEach(function(subFold){fold.subFolds.push(subFold.clone())}),fold.collapseChildren=this.collapseChildren,fold},this.addSubFold=function(fold){if(!this.range.isEqual(fold)){if(!this.range.containsRange(fold))throw\"A fold can't intersect already existing fold\"+fold.range+this.range;consumeRange(fold,this.start);for(var row=fold.start.row,column=fold.start.column,i=0,cmp=-1;this.subFolds.length>i&&(cmp=this.subFolds[i].range.compare(row,column),1==cmp);i++);var afterStart=this.subFolds[i];if(0==cmp)return afterStart.addSubFold(fold);for(var row=fold.range.end.row,column=fold.range.end.column,j=i,cmp=-1;this.subFolds.length>j&&(cmp=this.subFolds[j].range.compare(row,column),1==cmp);j++);if(this.subFolds[j],0==cmp)throw\"A fold can't intersect already existing fold\"+fold.range+this.range;return this.subFolds.splice(i,j-i,fold),fold.setFoldLine(this.foldLine),fold}},this.restoreRange=function(range){return restoreRange(range,this.start)}}.call(Fold.prototype)}),ace.define(\"ace/range_list\",[\"require\",\"exports\",\"module\",\"ace/range\"],function(acequire,exports){var Range=acequire(\"./range\").Range,comparePoints=Range.comparePoints,RangeList=function(){this.ranges=[]};(function(){this.comparePoints=comparePoints,this.pointIndex=function(pos,excludeEdges,startIndex){for(var list=this.ranges,i=startIndex||0;list.length>i;i++){var range=list[i],cmpEnd=comparePoints(pos,range.end);if(!(cmpEnd>0)){var cmpStart=comparePoints(pos,range.start);return 0===cmpEnd?excludeEdges&&0!==cmpStart?-i-2:i:cmpStart>0||0===cmpStart&&!excludeEdges?i:-i-1}}return-i-1},this.add=function(range){var excludeEdges=!range.isEmpty(),startIndex=this.pointIndex(range.start,excludeEdges);0>startIndex&&(startIndex=-startIndex-1);var endIndex=this.pointIndex(range.end,excludeEdges,startIndex);return 0>endIndex?endIndex=-endIndex-1:endIndex++,this.ranges.splice(startIndex,endIndex-startIndex,range)},this.addList=function(list){for(var removed=[],i=list.length;i--;)removed.push.call(removed,this.add(list[i]));return removed},this.substractPoint=function(pos){var i=this.pointIndex(pos);return i>=0?this.ranges.splice(i,1):void 0},this.merge=function(){var removed=[],list=this.ranges;list=list.sort(function(a,b){return comparePoints(a.start,b.start)});for(var range,next=list[0],i=1;list.length>i;i++){range=next,next=list[i];var cmp=comparePoints(range.end,next.start);0>cmp||(0!=cmp||range.isEmpty()||next.isEmpty())&&(0>comparePoints(range.end,next.end)&&(range.end.row=next.end.row,range.end.column=next.end.column),list.splice(i,1),removed.push(next),next=range,i--)}return this.ranges=list,removed},this.contains=function(row,column){return this.pointIndex({row:row,column:column})>=0},this.containsPoint=function(pos){return this.pointIndex(pos)>=0},this.rangeAtPoint=function(pos){var i=this.pointIndex(pos);return i>=0?this.ranges[i]:void 0},this.clipRows=function(startRow,endRow){var list=this.ranges;if(list[0].start.row>endRow||startRow>list[list.length-1].start.row)return[];var startIndex=this.pointIndex({row:startRow,column:0});0>startIndex&&(startIndex=-startIndex-1);var endIndex=this.pointIndex({row:endRow,column:0},startIndex);0>endIndex&&(endIndex=-endIndex-1);for(var clipped=[],i=startIndex;endIndex>i;i++)clipped.push(list[i]);return clipped},this.removeAll=function(){return this.ranges.splice(0,this.ranges.length)},this.attach=function(session){this.session&&this.detach(),this.session=session,this.onChange=this.$onChange.bind(this),this.session.on(\"change\",this.onChange)},this.detach=function(){this.session&&(this.session.removeListener(\"change\",this.onChange),this.session=null)},this.$onChange=function(e){var changeRange=e.data.range;if(\"i\"==e.data.action[0])var start=changeRange.start,end=changeRange.end;else var end=changeRange.start,start=changeRange.end;for(var startRow=start.row,endRow=end.row,lineDif=endRow-startRow,colDiff=-start.column+end.column,ranges=this.ranges,i=0,n=ranges.length;n>i;i++){var r=ranges[i];if(!(startRow>r.end.row)){if(r.start.row>startRow)break;r.start.row==startRow&&r.start.column>=start.column&&(r.start.column+=colDiff,r.start.row+=lineDif),r.end.row==startRow&&r.end.column>=start.column&&(r.end.column==start.column&&colDiff>0&&n-1>i&&r.end.column>r.start.column&&r.end.column==ranges[i+1].start.column&&(r.end.column-=colDiff),r.end.column+=colDiff,r.end.row+=lineDif)}}if(0!=lineDif&&n>i)for(;n>i;i++){var r=ranges[i];r.start.row+=lineDif,r.end.row+=lineDif}}}).call(RangeList.prototype),exports.RangeList=RangeList}),ace.define(\"ace/token_iterator\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var TokenIterator=function(session,initialRow,initialColumn){this.$session=session,this.$row=initialRow,this.$rowTokens=session.getTokens(initialRow);var token=session.getTokenAt(initialRow,initialColumn);this.$tokenIndex=token?token.index:-1};(function(){this.stepBackward=function(){for(this.$tokenIndex-=1;0>this.$tokenIndex;){if(this.$row-=1,0>this.$row)return this.$row=0,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=this.$rowTokens.length-1}return this.$rowTokens[this.$tokenIndex]},this.stepForward=function(){this.$tokenIndex+=1;for(var rowCount;this.$tokenIndex>=this.$rowTokens.length;){if(this.$row+=1,rowCount||(rowCount=this.$session.getLength()),this.$row>=rowCount)return this.$row=rowCount-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var rowTokens=this.$rowTokens,tokenIndex=this.$tokenIndex,column=rowTokens[tokenIndex].start;if(void 0!==column)return column;for(column=0;tokenIndex>0;)tokenIndex-=1,column+=rowTokens[tokenIndex].value.length;return column}}).call(TokenIterator.prototype),exports.TokenIterator=TokenIterator}),ace.define(\"ace/edit_session/bracket_match\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\",\"ace/range\"],function(acequire,exports){function BracketMatch(){this.findMatchingBracket=function(position,chr){if(0==position.column)return null;var charBeforeCursor=chr||this.getLine(position.row).charAt(position.column-1);if(\"\"==charBeforeCursor)return null;var match=charBeforeCursor.match(/([\\(\\[\\{])|([\\)\\]\\}])/);return match?match[1]?this.$findClosingBracket(match[1],position):this.$findOpeningBracket(match[2],position):null},this.getBracketRange=function(pos){var range,line=this.getLine(pos.row),before=!0,chr=line.charAt(pos.column-1),match=chr&&chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);if(match||(chr=line.charAt(pos.column),pos={row:pos.row,column:pos.column+1},match=chr&&chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/),before=!1),!match)return null;if(match[1]){var bracketPos=this.$findClosingBracket(match[1],pos);if(!bracketPos)return null;range=Range.fromPoints(pos,bracketPos),before||(range.end.column++,range.start.column--),range.cursor=range.end}else{var bracketPos=this.$findOpeningBracket(match[2],pos);if(!bracketPos)return null;range=Range.fromPoints(bracketPos,pos),before||(range.start.column++,range.end.column--),range.cursor=range.start}return range},this.$brackets={\")\":\"(\",\"(\":\")\",\"]\":\"[\",\"[\":\"]\",\"{\":\"}\",\"}\":\"{\"},this.$findOpeningBracket=function(bracket,position,typeRe){var openBracket=this.$brackets[bracket],depth=1,iterator=new TokenIterator(this,position.row,position.column),token=iterator.getCurrentToken();if(token||(token=iterator.stepForward()),token){typeRe||(typeRe=RegExp(\"(\\\\.?\"+token.type.replace(\".\",\"\\\\.\").replace(\"rparen\",\".paren\")+\")+\"));for(var valueIndex=position.column-iterator.getCurrentTokenColumn()-2,value=token.value;;){for(;valueIndex>=0;){var chr=value.charAt(valueIndex);if(chr==openBracket){if(depth-=1,0==depth)return{row:iterator.getCurrentTokenRow(),column:valueIndex+iterator.getCurrentTokenColumn()}}else chr==bracket&&(depth+=1);valueIndex-=1}do token=iterator.stepBackward();while(token&&!typeRe.test(token.type));if(null==token)break;value=token.value,valueIndex=value.length-1}return null}},this.$findClosingBracket=function(bracket,position,typeRe){var closingBracket=this.$brackets[bracket],depth=1,iterator=new TokenIterator(this,position.row,position.column),token=iterator.getCurrentToken();if(token||(token=iterator.stepForward()),token){typeRe||(typeRe=RegExp(\"(\\\\.?\"+token.type.replace(\".\",\"\\\\.\").replace(\"lparen\",\".paren\")+\")+\"));for(var valueIndex=position.column-iterator.getCurrentTokenColumn();;){for(var value=token.value,valueLength=value.length;valueLength>valueIndex;){var chr=value.charAt(valueIndex);if(chr==closingBracket){if(depth-=1,0==depth)return{row:iterator.getCurrentTokenRow(),column:valueIndex+iterator.getCurrentTokenColumn()}}else chr==bracket&&(depth+=1);valueIndex+=1}do token=iterator.stepForward();while(token&&!typeRe.test(token.type));if(null==token)break;valueIndex=0}return null}}}var TokenIterator=acequire(\"../token_iterator\").TokenIterator,Range=acequire(\"../range\").Range;exports.BracketMatch=BracketMatch}),ace.define(\"ace/search\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"],function(acequire,exports){var lang=acequire(\"./lib/lang\"),oop=acequire(\"./lib/oop\"),Range=acequire(\"./range\").Range,Search=function(){this.$options={}};(function(){this.set=function(options){return oop.mixin(this.$options,options),this},this.getOptions=function(){return lang.copyObject(this.$options)},this.setOptions=function(options){this.$options=options},this.find=function(session){var iterator=this.$matchIterator(session,this.$options);if(!iterator)return!1;var firstRange=null;return iterator.forEach(function(range,row,offset){if(range.start)firstRange=range;else{var column=range.offset+(offset||0);firstRange=new Range(row,column,row,column+range.length)}return!0}),firstRange},this.findAll=function(session){var options=this.$options;if(!options.needle)return[];this.$assembleRegExp(options);var range=options.range,lines=range?session.getLines(range.start.row,range.end.row):session.doc.getAllLines(),ranges=[],re=options.re;if(options.$isMultiLine)for(var len=re.length,maxRow=lines.length-len,row=re.offset||0;maxRow>=row;row++){for(var j=0;len>j&&-1!=lines[row+j].search(re[j]);j++);var startLine=lines[row],line=lines[row+len-1],startIndex=startLine.match(re[0])[0].length,endIndex=line.match(re[len-1])[0].length;ranges.push(new Range(row,startLine.length-startIndex,row+len-1,endIndex))}else for(var i=0;lines.length>i;i++)for(var matches=lang.getMatchOffsets(lines[i],re),j=0;matches.length>j;j++){var match=matches[j];ranges.push(new Range(i,match.offset,i,match.offset+match.length))}if(range){for(var startColumn=range.start.column,endColumn=range.start.column,i=0,j=ranges.length-1;j>i&&startColumn>ranges[i].start.column&&ranges[i].start.row==range.start.row;)i++;for(;j>i&&ranges[j].end.column>endColumn&&ranges[j].end.row==range.end.row;)j--;return ranges.slice(i,j+1)}return ranges},this.replace=function(input,replacement){var options=this.$options,re=this.$assembleRegExp(options);if(options.$isMultiLine)return replacement;if(re){var match=re.exec(input);if(!match||match[0].length!=input.length)return null;if(replacement=input.replace(re,replacement),options.preserveCase){replacement=replacement.split(\"\");for(var i=Math.min(input.length,input.length);i--;){var ch=input[i];replacement[i]=ch&&ch.toLowerCase()!=ch?replacement[i].toUpperCase():replacement[i].toLowerCase()}replacement=replacement.join(\"\")}return replacement}},this.$matchIterator=function(session,options){var re=this.$assembleRegExp(options);if(!re)return!1;var callback,self=this,backwards=options.backwards;if(options.$isMultiLine)var len=re.length,matchIterator=function(line,row,offset){var startIndex=line.search(re[0]);if(-1!=startIndex){for(var i=1;len>i;i++)if(line=session.getLine(row+i),-1==line.search(re[i]))return;var endIndex=line.match(re[len-1])[0].length,range=new Range(row,startIndex,row+len-1,endIndex);return 1==re.offset?(range.start.row--,range.start.column=Number.MAX_VALUE):offset&&(range.start.column+=offset),callback(range)?!0:void 0}};else if(backwards)var matchIterator=function(line,row,startIndex){for(var matches=lang.getMatchOffsets(line,re),i=matches.length-1;i>=0;i--)if(callback(matches[i],row,startIndex))return!0};else var matchIterator=function(line,row,startIndex){for(var matches=lang.getMatchOffsets(line,re),i=0;matches.length>i;i++)if(callback(matches[i],row,startIndex))return!0};return{forEach:function(_callback){callback=_callback,self.$lineIterator(session,options).forEach(matchIterator)}}},this.$assembleRegExp=function(options){if(options.needle instanceof RegExp)return options.re=options.needle;var needle=options.needle;if(!options.needle)return options.re=!1;options.regExp||(needle=lang.escapeRegExp(needle)),options.wholeWord&&(needle=\"\\\\b\"+needle+\"\\\\b\");var modifier=options.caseSensitive?\"g\":\"gi\";if(options.$isMultiLine=/[\\n\\r]/.test(needle),options.$isMultiLine)return options.re=this.$assembleMultilineRegExp(needle,modifier);try{var re=RegExp(needle,modifier)}catch(e){re=!1}return options.re=re},this.$assembleMultilineRegExp=function(needle,modifier){for(var parts=needle.replace(/\\r\\n|\\r|\\n/g,\"$\\n^\").split(\"\\n\"),re=[],i=0;parts.length>i;i++)try{re.push(RegExp(parts[i],modifier))}catch(e){return!1}return\"\"==parts[0]?(re.shift(),re.offset=1):re.offset=0,re},this.$lineIterator=function(session,options){var backwards=1==options.backwards,skipCurrent=0!=options.skipCurrent,range=options.range,start=options.start;start||(start=range?range[backwards?\"end\":\"start\"]:session.selection.getRange()),start.start&&(start=start[skipCurrent!=backwards?\"end\":\"start\"]);var firstRow=range?range.start.row:0,lastRow=range?range.end.row:session.getLength()-1,forEach=backwards?function(callback){var row=start.row,line=session.getLine(row).substring(0,start.column);if(!callback(line,row)){for(row--;row>=firstRow;row--)if(callback(session.getLine(row),row))return;if(0!=options.wrap)for(row=lastRow,firstRow=start.row;row>=firstRow;row--)if(callback(session.getLine(row),row))return}}:function(callback){var row=start.row,line=session.getLine(row).substr(start.column);if(!callback(line,row,start.column)){for(row+=1;lastRow>=row;row++)if(callback(session.getLine(row),row))return;if(0!=options.wrap)for(row=firstRow,lastRow=start.row;lastRow>=row;row++)if(callback(session.getLine(row),row))return}};return{forEach:forEach}}}).call(Search.prototype),exports.Search=Search}),ace.define(\"ace/commands/command_manager\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/keyboard/hash_handler\",\"ace/lib/event_emitter\"],function(acequire,exports){var oop=acequire(\"../lib/oop\"),HashHandler=acequire(\"../keyboard/hash_handler\").HashHandler,EventEmitter=acequire(\"../lib/event_emitter\").EventEmitter,CommandManager=function(platform,commands){this.platform=platform,this.commands=this.byName={},this.commmandKeyBinding={},this.addCommands(commands),this.setDefaultHandler(\"exec\",function(e){return e.command.exec(e.editor,e.args||{})})};oop.inherits(CommandManager,HashHandler),function(){oop.implement(this,EventEmitter),this.exec=function(command,editor,args){if(\"string\"==typeof command&&(command=this.commands[command]),!command)return!1;if(editor&&editor.$readOnly&&!command.readOnly)return!1;var e={editor:editor,command:command,args:args},retvalue=this._emit(\"exec\",e);return this._signal(\"afterExec\",e),retvalue===!1?!1:!0},this.toggleRecording=function(editor){return this.$inReplay?void 0:(editor&&editor._emit(\"changeStatus\"),this.recording?(this.macro.pop(),this.removeEventListener(\"exec\",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on(\"exec\",this.$addCommandToMacro),this.recording=!0))},this.replay=function(editor){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(editor);try{this.$inReplay=!0,this.macro.forEach(function(x){\"string\"==typeof x?this.exec(x,editor):this.exec(x[0],editor,x[1])},this)}finally{this.$inReplay=!1}}},this.trimMacro=function(m){return m.map(function(x){return\"string\"!=typeof x[0]&&(x[0]=x[0].name),x[1]||(x=x[0]),x})}}.call(CommandManager.prototype),exports.CommandManager=CommandManager}),ace.define(\"ace/keyboard/hash_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"],function(acequire,exports){function HashHandler(config,platform){this.platform=platform||(useragent.isMac?\"mac\":\"win\"),this.commands={},this.commmandKeyBinding={},this.addCommands(config)}var keyUtil=acequire(\"../lib/keys\"),useragent=acequire(\"../lib/useragent\");(function(){this.addCommand=function(command){this.commands[command.name]&&this.removeCommand(command),this.commands[command.name]=command,command.bindKey&&this._buildKeyHash(command)},this.removeCommand=function(command){var name=\"string\"==typeof command?command:command.name;command=this.commands[name],delete this.commands[name];var ckb=this.commmandKeyBinding;for(var hashId in ckb)for(var key in ckb[hashId])ckb[hashId][key]==command&&delete ckb[hashId][key]},this.bindKey=function(key,command){if(key){if(\"function\"==typeof command)return this.addCommand({exec:command,bindKey:key,name:command.name||key}),void 0;var ckb=this.commmandKeyBinding;key.split(\"|\").forEach(function(keyPart){var binding=this.parseKeys(keyPart,command),hashId=binding.hashId;(ckb[hashId]||(ckb[hashId]={}))[binding.key]=command},this)}},this.addCommands=function(commands){commands&&Object.keys(commands).forEach(function(name){var command=commands[name];return\"string\"==typeof command?this.bindKey(command,name):(\"function\"==typeof command&&(command={exec:command}),command.name||(command.name=name),this.addCommand(command),void 0)},this)},this.removeCommands=function(commands){Object.keys(commands).forEach(function(name){this.removeCommand(commands[name])},this)},this.bindKeys=function(keyList){Object.keys(keyList).forEach(function(key){this.bindKey(key,keyList[key])},this)},this._buildKeyHash=function(command){var binding=command.bindKey;if(binding){var key=\"string\"==typeof binding?binding:binding[this.platform];this.bindKey(key,command)}},this.parseKeys=function(keys){-1!=keys.indexOf(\" \")&&(keys=keys.split(/\\s+/).pop());var parts=keys.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function(x){return x}),key=parts.pop(),keyCode=keyUtil[key];if(keyUtil.FUNCTION_KEYS[keyCode])key=keyUtil.FUNCTION_KEYS[keyCode].toLowerCase();else{if(!parts.length)return{key:key,hashId:-1};if(1==parts.length&&\"shift\"==parts[0])return{key:key.toUpperCase(),hashId:-1}}for(var hashId=0,i=parts.length;i--;){var modifier=keyUtil.KEY_MODS[parts[i]];if(null==modifier)return\"undefined\"!=typeof console&&console.error(\"invalid modifier \"+parts[i]+\" in \"+keys),!1;hashId|=modifier}return{key:key,hashId:hashId}},this.findKeyCommand=function(hashId,keyString){var ckbr=this.commmandKeyBinding;return ckbr[hashId]&&ckbr[hashId][keyString]},this.handleKeyboard=function(data,hashId,keyString){return{command:this.findKeyCommand(hashId,keyString)}}}).call(HashHandler.prototype),exports.HashHandler=HashHandler}),ace.define(\"ace/commands/default_commands\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/config\"],function(acequire,exports){function bindKey(win,mac){return{win:win,mac:mac}}var lang=acequire(\"../lib/lang\"),config=acequire(\"../config\");exports.commands=[{name:\"selectall\",bindKey:bindKey(\"Ctrl-A\",\"Command-A\"),exec:function(editor){editor.selectAll()},readOnly:!0},{name:\"centerselection\",bindKey:bindKey(null,\"Ctrl-L\"),exec:function(editor){editor.centerSelection()},readOnly:!0},{name:\"gotoline\",bindKey:bindKey(\"Ctrl-L\",\"Command-L\"),exec:function(editor){var line=parseInt(prompt(\"Enter line number:\"),10);isNaN(line)||editor.gotoLine(line)},readOnly:!0},{name:\"fold\",bindKey:bindKey(\"Alt-L|Ctrl-F1\",\"Command-Alt-L|Command-F1\"),exec:function(editor){editor.session.toggleFold(!1)},readOnly:!0},{name:\"unfold\",bindKey:bindKey(\"Alt-Shift-L|Ctrl-Shift-F1\",\"Command-Alt-Shift-L|Command-Shift-F1\"),exec:function(editor){editor.session.toggleFold(!0)},readOnly:!0},{name:\"foldall\",bindKey:bindKey(\"Alt-0\",\"Command-Option-0\"),exec:function(editor){editor.session.foldAll()},readOnly:!0},{name:\"unfoldall\",bindKey:bindKey(\"Alt-Shift-0\",\"Command-Option-Shift-0\"),exec:function(editor){editor.session.unfold()},readOnly:!0},{name:\"findnext\",bindKey:bindKey(\"Ctrl-K\",\"Command-G\"),exec:function(editor){editor.findNext()},readOnly:!0},{name:\"findprevious\",bindKey:bindKey(\"Ctrl-Shift-K\",\"Command-Shift-G\"),exec:function(editor){editor.findPrevious()},readOnly:!0},{name:\"find\",bindKey:bindKey(\"Ctrl-F\",\"Command-F\"),exec:function(editor){config.loadModule(\"ace/ext/searchbox\",function(e){e.Search(editor)})},readOnly:!0},{name:\"overwrite\",bindKey:\"Insert\",exec:function(editor){editor.toggleOverwrite()},readOnly:!0},{name:\"selecttostart\",bindKey:bindKey(\"Ctrl-Shift-Home\",\"Command-Shift-Up\"),exec:function(editor){editor.getSelection().selectFileStart()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotostart\",bindKey:bindKey(\"Ctrl-Home\",\"Command-Home|Command-Up\"),exec:function(editor){editor.navigateFileStart()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectup\",bindKey:bindKey(\"Shift-Up\",\"Shift-Up\"),exec:function(editor){editor.getSelection().selectUp()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"golineup\",bindKey:bindKey(\"Up\",\"Up|Ctrl-P\"),exec:function(editor,args){editor.navigateUp(args.times)},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selecttoend\",bindKey:bindKey(\"Ctrl-Shift-End\",\"Command-Shift-Down\"),exec:function(editor){editor.getSelection().selectFileEnd()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotoend\",bindKey:bindKey(\"Ctrl-End\",\"Command-End|Command-Down\"),exec:function(editor){editor.navigateFileEnd()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectdown\",bindKey:bindKey(\"Shift-Down\",\"Shift-Down\"),exec:function(editor){editor.getSelection().selectDown()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"golinedown\",bindKey:bindKey(\"Down\",\"Down|Ctrl-N\"),exec:function(editor,args){editor.navigateDown(args.times)},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectwordleft\",bindKey:bindKey(\"Ctrl-Shift-Left\",\"Option-Shift-Left\"),exec:function(editor){editor.getSelection().selectWordLeft()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotowordleft\",bindKey:bindKey(\"Ctrl-Left\",\"Option-Left\"),exec:function(editor){editor.navigateWordLeft()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selecttolinestart\",bindKey:bindKey(\"Alt-Shift-Left\",\"Command-Shift-Left\"),exec:function(editor){editor.getSelection().selectLineStart()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotolinestart\",bindKey:bindKey(\"Alt-Left|Home\",\"Command-Left|Home|Ctrl-A\"),exec:function(editor){editor.navigateLineStart()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectleft\",bindKey:bindKey(\"Shift-Left\",\"Shift-Left\"),exec:function(editor){editor.getSelection().selectLeft()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotoleft\",bindKey:bindKey(\"Left\",\"Left|Ctrl-B\"),exec:function(editor,args){editor.navigateLeft(args.times)},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectwordright\",bindKey:bindKey(\"Ctrl-Shift-Right\",\"Option-Shift-Right\"),exec:function(editor){editor.getSelection().selectWordRight()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotowordright\",bindKey:bindKey(\"Ctrl-Right\",\"Option-Right\"),exec:function(editor){editor.navigateWordRight()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selecttolineend\",bindKey:bindKey(\"Alt-Shift-Right\",\"Command-Shift-Right\"),exec:function(editor){editor.getSelection().selectLineEnd()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotolineend\",bindKey:bindKey(\"Alt-Right|End\",\"Command-Right|End|Ctrl-E\"),exec:function(editor){editor.navigateLineEnd()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectright\",bindKey:bindKey(\"Shift-Right\",\"Shift-Right\"),exec:function(editor){editor.getSelection().selectRight()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"gotoright\",bindKey:bindKey(\"Right\",\"Right|Ctrl-F\"),exec:function(editor,args){editor.navigateRight(args.times)},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectpagedown\",bindKey:\"Shift-PageDown\",exec:function(editor){editor.selectPageDown()},readOnly:!0},{name:\"pagedown\",bindKey:bindKey(null,\"Option-PageDown\"),exec:function(editor){editor.scrollPageDown()},readOnly:!0},{name:\"gotopagedown\",bindKey:bindKey(\"PageDown\",\"PageDown|Ctrl-V\"),exec:function(editor){editor.gotoPageDown()},readOnly:!0},{name:\"selectpageup\",bindKey:\"Shift-PageUp\",exec:function(editor){editor.selectPageUp()},readOnly:!0},{name:\"pageup\",bindKey:bindKey(null,\"Option-PageUp\"),exec:function(editor){editor.scrollPageUp()},readOnly:!0},{name:\"gotopageup\",bindKey:\"PageUp\",exec:function(editor){editor.gotoPageUp()},readOnly:!0},{name:\"scrollup\",bindKey:bindKey(\"Ctrl-Up\",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:\"scrolldown\",bindKey:bindKey(\"Ctrl-Down\",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:\"selectlinestart\",bindKey:\"Shift-Home\",exec:function(editor){editor.getSelection().selectLineStart()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selectlineend\",bindKey:\"Shift-End\",exec:function(editor){editor.getSelection().selectLineEnd()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"togglerecording\",bindKey:bindKey(\"Ctrl-Alt-E\",\"Command-Option-E\"),exec:function(editor){editor.commands.toggleRecording(editor)},readOnly:!0},{name:\"replaymacro\",bindKey:bindKey(\"Ctrl-Shift-E\",\"Command-Shift-E\"),exec:function(editor){editor.commands.replay(editor)},readOnly:!0},{name:\"jumptomatching\",bindKey:bindKey(\"Ctrl-P\",\"Ctrl-Shift-P\"),exec:function(editor){editor.jumpToMatching()},multiSelectAction:\"forEach\",readOnly:!0},{name:\"selecttomatching\",bindKey:bindKey(\"Ctrl-Shift-P\",null),exec:function(editor){editor.jumpToMatching(!0)},multiSelectAction:\"forEach\",readOnly:!0},{name:\"cut\",exec:function(editor){var range=editor.getSelectionRange();editor._emit(\"cut\",range),editor.selection.isEmpty()||(editor.session.remove(range),editor.clearSelection())},multiSelectAction:\"forEach\"},{name:\"removeline\",bindKey:bindKey(\"Ctrl-D\",\"Command-D\"),exec:function(editor){editor.removeLines()},multiSelectAction:\"forEachLine\"},{name:\"duplicateSelection\",bindKey:bindKey(\"Ctrl-Shift-D\",\"Command-Shift-D\"),exec:function(editor){editor.duplicateSelection()},multiSelectAction:\"forEach\"},{name:\"sortlines\",bindKey:bindKey(\"Ctrl-Alt-S\",\"Command-Alt-S\"),exec:function(editor){editor.sortLines()},multiSelectAction:\"forEachLine\"},{name:\"togglecomment\",bindKey:bindKey(\"Ctrl-/\",\"Command-/\"),exec:function(editor){editor.toggleCommentLines()},multiSelectAction:\"forEachLine\"},{name:\"modifyNumberUp\",bindKey:bindKey(\"Ctrl-Shift-Up\",\"Alt-Shift-Up\"),exec:function(editor){editor.modifyNumber(1)},multiSelectAction:\"forEach\"},{name:\"modifyNumberDown\",bindKey:bindKey(\"Ctrl-Shift-Down\",\"Alt-Shift-Down\"),exec:function(editor){editor.modifyNumber(-1)},multiSelectAction:\"forEach\"},{name:\"replace\",bindKey:bindKey(\"Ctrl-H\",\"Command-Option-F\"),exec:function(editor){config.loadModule(\"ace/ext/searchbox\",function(e){e.Search(editor,!0)})}},{name:\"undo\",bindKey:bindKey(\"Ctrl-Z\",\"Command-Z\"),exec:function(editor){editor.undo()}},{name:\"redo\",bindKey:bindKey(\"Ctrl-Shift-Z|Ctrl-Y\",\"Command-Shift-Z|Command-Y\"),exec:function(editor){editor.redo()}},{name:\"copylinesup\",bindKey:bindKey(\"Alt-Shift-Up\",\"Command-Option-Up\"),exec:function(editor){editor.copyLinesUp()}},{name:\"movelinesup\",bindKey:bindKey(\"Alt-Up\",\"Option-Up\"),exec:function(editor){editor.moveLinesUp()}},{name:\"copylinesdown\",bindKey:bindKey(\"Alt-Shift-Down\",\"Command-Option-Down\"),exec:function(editor){editor.copyLinesDown()}},{name:\"movelinesdown\",bindKey:bindKey(\"Alt-Down\",\"Option-Down\"),exec:function(editor){editor.moveLinesDown()}},{name:\"del\",bindKey:bindKey(\"Delete\",\"Delete|Ctrl-D\"),exec:function(editor){editor.remove(\"right\")},multiSelectAction:\"forEach\"},{name:\"backspace\",bindKey:bindKey(\"Command-Backspace|Option-Backspace|Shift-Backspace|Backspace\",\"Ctrl-Backspace|Command-Backspace|Shift-Backspace|Backspace|Ctrl-H\"),exec:function(editor){editor.remove(\"left\")},multiSelectAction:\"forEach\"},{name:\"removetolinestart\",bindKey:bindKey(\"Alt-Backspace\",\"Command-Backspace\"),exec:function(editor){editor.removeToLineStart()},multiSelectAction:\"forEach\"},{name:\"removetolineend\",bindKey:bindKey(\"Alt-Delete\",\"Ctrl-K\"),exec:function(editor){editor.removeToLineEnd()},multiSelectAction:\"forEach\"},{name:\"removewordleft\",bindKey:bindKey(\"Ctrl-Backspace\",\"Alt-Backspace|Ctrl-Alt-Backspace\"),exec:function(editor){editor.removeWordLeft()},multiSelectAction:\"forEach\"},{name:\"removewordright\",bindKey:bindKey(\"Ctrl-Delete\",\"Alt-Delete\"),exec:function(editor){editor.removeWordRight()},multiSelectAction:\"forEach\"},{name:\"outdent\",bindKey:bindKey(\"Shift-Tab\",\"Shift-Tab\"),exec:function(editor){editor.blockOutdent()},multiSelectAction:\"forEach\"},{name:\"indent\",bindKey:bindKey(\"Tab\",\"Tab\"),exec:function(editor){editor.indent()},multiSelectAction:\"forEach\"},{name:\"blockoutdent\",bindKey:bindKey(\"Ctrl-[\",\"Ctrl-[\"),exec:function(editor){editor.blockOutdent()},multiSelectAction:\"forEachLine\"},{name:\"blockindent\",bindKey:bindKey(\"Ctrl-]\",\"Ctrl-]\"),exec:function(editor){editor.blockIndent()},multiSelectAction:\"forEachLine\"},{name:\"insertstring\",exec:function(editor,str){editor.insert(str)},multiSelectAction:\"forEach\"},{name:\"inserttext\",exec:function(editor,args){editor.insert(lang.stringRepeat(args.text||\"\",args.times||1))},multiSelectAction:\"forEach\"},{name:\"splitline\",bindKey:bindKey(null,\"Ctrl-O\"),exec:function(editor){editor.splitLine()},multiSelectAction:\"forEach\"},{name:\"transposeletters\",bindKey:bindKey(\"Ctrl-T\",\"Ctrl-T\"),exec:function(editor){editor.transposeLetters()},multiSelectAction:function(editor){editor.transposeSelections(1)}},{name:\"touppercase\",bindKey:bindKey(\"Ctrl-U\",\"Ctrl-U\"),exec:function(editor){editor.toUpperCase()},multiSelectAction:\"forEach\"},{name:\"tolowercase\",bindKey:bindKey(\"Ctrl-Shift-U\",\"Ctrl-Shift-U\"),exec:function(editor){editor.toLowerCase()},multiSelectAction:\"forEach\"}]}),ace.define(\"ace/undomanager\",[\"require\",\"exports\",\"module\"],function(acequire,exports){var UndoManager=function(){this.reset()};(function(){this.execute=function(options){var deltas=options.args[0];this.$doc=options.args[1],this.$undoStack.push(deltas),this.$redoStack=[]},this.undo=function(dontSelect){var deltas=this.$undoStack.pop(),undoSelectionRange=null;return deltas&&(undoSelectionRange=this.$doc.undoChanges(deltas,dontSelect),this.$redoStack.push(deltas)),undoSelectionRange},this.redo=function(dontSelect){var deltas=this.$redoStack.pop(),redoSelectionRange=null;return deltas&&(redoSelectionRange=this.$doc.redoChanges(deltas,dontSelect),this.$undoStack.push(deltas)),redoSelectionRange},this.reset=function(){this.$undoStack=[],this.$redoStack=[]},this.hasUndo=function(){return this.$undoStack.length>0},this.hasRedo=function(){return this.$redoStack.length>0}}).call(UndoManager.prototype),exports.UndoManager=UndoManager}),ace.define(\"ace/virtual_renderer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/config\",\"ace/layer/gutter\",\"ace/layer/marker\",\"ace/layer/text\",\"ace/layer/cursor\",\"ace/scrollbar\",\"ace/renderloop\",\"ace/lib/event_emitter\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),dom=acequire(\"./lib/dom\"),event=acequire(\"./lib/event\"),useragent=acequire(\"./lib/useragent\"),config=acequire(\"./config\"),GutterLayer=acequire(\"./layer/gutter\").Gutter,MarkerLayer=acequire(\"./layer/marker\").Marker,TextLayer=acequire(\"./layer/text\").Text,CursorLayer=acequire(\"./layer/cursor\").Cursor,ScrollBar=acequire(\"./scrollbar\").ScrollBar,RenderLoop=acequire(\"./renderloop\").RenderLoop,EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,editorCss=\".ace_editor {position: relative;overflow: hidden;font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;font-size: 12px;line-height: normal;}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: text;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUM2OEZDQTQ4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUM2OEZDQTU4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzY4RkNBMjhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQzY4RkNBMzhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkgXxbAAAAJbSURBVHjapFNNaBNBFH4zs5vdZLP5sQmNpT82QY209heh1ioWisaDRcSKF0WKJ0GQnrzrxasHsR6EnlrwD0TagxJabaVEpFYxLWlLSS822tr87m66ccfd2GKyVhA6MMybgfe97/vmPUQphd0sZjto9XIn9OOsvlu2nkqRzVU+6vvlzPf8W6bk8dxQ0NPbxAALgCgg2JkaQuhzQau/El0zbmUA7U0Es8v2CiYmKQJHGO1QICCLoqilMhkmurDAyapKgqItezi/USRdJqEYY4D5jCy03ht2yMkkvL91jTTX10qzyyu2hruPRN7jgbH+EOsXcMLgYiThEgAMhABW85oqy1DXdRIdvP1AHJ2acQXvDIrVHcdQNrEKNYSVMSZGMjEzIIAwDXIo+6G/FxcGnzkC3T2oMhLjre49sBB+RRcHLqdafK6sYdE/GGBwU1VpFNj0aN8pJbe+BkZyevUrvLl6Xmm0W9IuTc0DxrDNAJd5oEvI/KRsNC3bQyNjPO9yQ1YHcfj2QvfQc/5TUhJTBc2iM0U7AWDQtc1nJHvD/cfO2s7jaGkiTEfa/Ep8coLu7zmNmh8+dc5lZDuUeFAGUNA/OY6JVaypQ0vjr7XYjUvJM37vt+j1vuTK5DgVfVUoTjVe+y3/LxMxY2GgU+CSLy4cpfsYorRXuXIOi0Vt40h67uZFTdIo6nLaZcwUJWAzwNS0tBnqqKzQDnjdG/iPyZxo46HaKUpbvYkj8qYRTZsBhge+JHhZyh0x9b95JqjVJkT084kZIPwu/mPWqPgfQ5jXh2+92Ay7HedfAgwA6KDWafb4w3cAAAAASUVORK5CYII=\\\");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUM2OEZDQTg4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUM2OEZDQTk4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzY4RkNBNjhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQzY4RkNBNzhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pgd7PfIAAAGmSURBVHjaYvr//z8DJZiJgUIANoCRkREb9gLiSVAaQx4OQM7AAkwd7XU2/v++/rOttdYGEB9dASEvOMydGKfH8Gv/p4XTkvRBfLxeQAP+1cUhXopyvzhP7P/IoSj7g7Mw09cNKO6J1QQ0L4gICPIv/veg/8W+JdFvQNLHVsW9/nmn9zk7B+cCkDwhL7gt6knSZnx9/LuCEOcvkIAMP+cvto9nfqyZmmUAksfnBUtbM60gX/3/kgyv3/xSFOL5DZT+L8vP+Yfh5cvfPvp/xUHyQHXGyAYwgpwBjZYFT3Y1OEl/OfCH4ffv3wzc4iwMvNIsDJ+f/mH4+vIPAxsb631WW0Yln6ZpQLXdMK/DXGDflh+sIv37EivD5x//Gb7+YWT4y86sl7BCCkSD+Z++/1dkvsFRl+HnD1Rvje4F8whjMXmGj58YGf5zsDMwcnAwfPvKcml62DsQDeaDxN+/Y0qwlpEHqrdB94IRNIDUgfgfKJChGK4OikEW3gTiXUB950ASLFAF54AC94A0G9QAfOnmF9DCDzABFqS08IHYDIScdijOjQABBgC+/9awBH96jwAAAABJRU5ErkJggg==\\\");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url(\\\"data:image/gif;base64,R0lGODlhEAAQAMQAAAAAAEFBQVJSUl5eXmRkZGtra39/f4WFhYmJiZGRkaampry8vMPDw8zMzNXV1dzc3OTk5Orq6vDw8P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABQALAAAAAAQABAAAAUuICWOZGmeaBml5XGwFCQSBGyXRSAwtqQIiRuiwIM5BoYVbEFIyGCQoeJGrVptIQA7\\\");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGRTk5MTVGREIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGRTk5MTVGRUIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZFOTkxNUZCQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZFOTkxNUZDQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SIDkjAAAAJ1JREFUeNpi/P//PwMlgImBQkB7A6qrq/+DMC55FkIGKCoq4pVnpFkgTp069f/+/fv/r1u37r+tre1/kg0A+ptn9uzZYLaRkRHpLvjw4cNXWVlZhufPnzOcO3eOdAO0tbVPAjHDmzdvGA4fPsxIsgGSkpJmv379Ynj37h2DjIyMCMkG3LhxQ/T27dsMampqDHZ2dq/pH41DxwCAAAMAFdc68dUsFZgAAAAASUVORK5CYII=\\\");}.ace_scrollbar {position: absolute;overflow-x: hidden;overflow-y: scroll;right: 0;top: 0;bottom: 0;}.ace_scrollbar-inner {position: absolute;width: 1px;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;}.ace_text-input.ace_composition {background: #f8f8f8;color: #111;z-index: 1000;opacity: 1;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;white-space: nowrap;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;/* setting pointer-events: auto; on node under the mouse, which changesduring scroll, will break mouse wheel scrolling in Safari */pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {color: black;font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-moz-transition: opacity 0.18s;-webkit-transition: opacity 0.18s;-o-transition: opacity 0.18s;-ms-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_cursor[style*=\\\"opacity: 0\\\"]{-ms-filter: \\\"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\\\";}.ace_editor.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_line {white-space: nowrap;}.ace_marker-layer .ace_step {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%11%00%00%00%09%08%06%00%00%00%D4%E8%C7%0C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%B5IDAT(%15%A5%91%3D%0E%02!%10%85ac%E1%05%D6%CE%D6%C6%CE%D2%E8%ED%CD%DE%C0%C6%D6N.%E0V%F8%3D%9Ca%891XH%C2%BE%D9y%3F%90!%E6%9C%C3%BFk%E5%011%C6-%F5%C8N%04%DF%BD%FF%89%DFt%83DN%60%3E%F3%AB%A0%DE%1A%5Dg%BE%10Q%97%1B%40%9C%A8o%10%8F%5E%828%B4%1B%60%87%F6%02%26%85%1Ch%1E%C1%2B%5Bk%FF%86%EE%B7j%09%9A%DA%9B%ACe%A3%F9%EC%DA!9%B4%D5%A6%81%86%86%98%CC%3C%5B%40%FA%81%B3%E9%CB%23%94%C16Azo%05%D4%E1%C1%95a%3B%8A'%A0%E8%CC%17%22%85%1D%BA%00%A2%FA%DC%0A%94%D1%D1%8D%8B%3A%84%17B%C7%60%1A%25Z%FC%8D%00%00%00%00IEND%AEB%60%82\\\"),url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%007%08%06%00%00%00%C4%DD%80C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%3AIDAT8%11c%FC%FF%FF%7F%18%03%1A%60%01%F2%3F%A0%891%80%04%FF%11-%F8%17%9BJ%E2%05%B1ZD%81v%26t%E7%80%F8%A3%82h%A12%1A%20%A3%01%02%0F%01%BA%25%06%00%19%C0%0D%AEF%D5%3ES%00%00%00%00IEND%AEB%60%82\\\");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;-moz-border-radius: 2px;-webkit-border-radius: 2px;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%11%00%00%00%09%08%06%00%00%00%D4%E8%C7%0C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%B5IDAT(%15%A5%91%3D%0E%02!%10%85ac%E1%05%D6%CE%D6%C6%CE%D2%E8%ED%CD%DE%C0%C6%D6N.%E0V%F8%3D%9Ca%891XH%C2%BE%D9y%3F%90!%E6%9C%C3%BFk%E5%011%C6-%F5%C8N%04%DF%BD%FF%89%DFt%83DN%60%3E%F3%AB%A0%DE%1A%5Dg%BE%10Q%97%1B%40%9C%A8o%10%8F%5E%828%B4%1B%60%87%F6%02%26%85%1Ch%1E%C1%2B%5Bk%FF%86%EE%B7j%09%9A%DA%9B%ACe%A3%F9%EC%DA!9%B4%D5%A6%81%86%86%98%CC%3C%5B%40%FA%81%B3%E9%CB%23%94%C16Azo%05%D4%E1%C1%95a%3B%8A'%A0%E8%CC%17%22%85%1D%BA%00%A2%FA%DC%0A%94%D1%D1%8D%8B%3A%84%17B%C7%60%1A%25Z%FC%8D%00%00%00%00IEND%AEB%60%82\\\"),url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%007%08%06%00%00%00%C4%DD%80C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%003IDAT8%11c%FC%FF%FF%7F%3E%03%1A%60%01%F2%3F%A3%891%80%04%FFQ%26%F8w%C0%B43%A1%DB%0C%E2%8F%0A%A2%85%CAh%80%8C%06%08%3C%04%E8%96%18%00%A3S%0D%CD%CF%D8%C1%9D%00%00%00%00IEND%AEB%60%82\\\");background-repeat: no-repeat, repeat-x;background-position: center center, top left;}.ace_editor.ace_dragging .ace_content {cursor: move;}.ace_gutter-tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;display: inline-block;max-width: 500px;padding: 4px;position: fixed;z-index: 300;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre-line;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: inline-block;width: 11px;vertical-align: top;background-image: url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAe%8A%B1%0D%000%0C%C2%F2%2CK%96%BC%D0%8F9%81%88H%E9%D0%0E%96%C0%10%92%3E%02%80%5E%82%E4%A9*-%EEsw%C8%CC%11%EE%96w%D8%DC%E9*Eh%0C%151(%00%00%00%00IEND%AEB%60%82\\\");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;}.ace_fold-widget.ace_end {background-image: url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAm%C7%C1%09%000%08C%D1%8C%ECE%C8E(%8E%EC%02)%1EZJ%F1%C1'%04%07I%E1%E5%EE%CAL%F5%A2%99%99%22%E2%D6%1FU%B5%FE0%D9x%A7%26Wz5%0E%D5%00%00%00%00IEND%AEB%60%82\\\");}.ace_fold-widget.ace_closed {background-image: url(\\\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%03%00%00%00%06%08%06%00%00%00%06%E5%24%0C%00%00%009IDATx%DA5%CA%C1%09%000%08%03%C0%AC*(%3E%04%C1%0D%BA%B1%23%A4Uh%E0%20%81%C0%CC%F8%82%81%AA%A2%AArGfr%88%08%11%11%1C%DD%7D%E0%EE%5B%F6%F6%CB%B8%05Q%2F%E9tai%D9%00%00%00%00IEND%AEB%60%82\\\");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}/*** Dark version for fold widgets*/.ace_dark .ace_fold-widget {background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\\\");}.ace_dark .ace_fold-widget.ace_end {background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\\\");}.ace_dark .ace_fold-widget.ace_closed {background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\\\");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-moz-transition: opacity 0.4s ease 0.05s;-webkit-transition: opacity 0.4s ease 0.05s;-o-transition: opacity 0.4s ease 0.05s;-ms-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-moz-transition: opacity 0.05s ease 0.05s;-webkit-transition: opacity 0.05s ease 0.05s;-o-transition: opacity 0.05s ease 0.05s;-ms-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}\";\ndom.importCssString(editorCss,\"ace_editor\");var VirtualRenderer=function(container,theme){var _self=this;this.container=container||dom.createElement(\"div\"),this.$keepTextAreaAtCursor=!useragent.isIE,dom.addCssClass(this.container,\"ace_editor\"),this.setTheme(theme),this.$gutter=dom.createElement(\"div\"),this.$gutter.className=\"ace_gutter\",this.container.appendChild(this.$gutter),this.scroller=dom.createElement(\"div\"),this.scroller.className=\"ace_scroller\",this.container.appendChild(this.scroller),this.content=dom.createElement(\"div\"),this.content.className=\"ace_content\",this.scroller.appendChild(this.content),this.$gutterLayer=new GutterLayer(this.$gutter),this.$gutterLayer.on(\"changeGutterWidth\",this.onGutterResize.bind(this)),this.$markerBack=new MarkerLayer(this.content);var textLayer=this.$textLayer=new TextLayer(this.content);this.canvas=textLayer.element,this.$markerFront=new MarkerLayer(this.content),this.$cursorLayer=new CursorLayer(this.content),this.$horizScroll=!1,this.scrollBar=new ScrollBar(this.container),this.scrollBar.addEventListener(\"scroll\",function(e){_self.$inScrollAnimation||_self.session.setScrollTop(e.data)}),this.scrollTop=0,this.scrollLeft=0,event.addListener(this.scroller,\"scroll\",function(){var scrollLeft=_self.scroller.scrollLeft;_self.scrollLeft=scrollLeft,_self.session.setScrollLeft(scrollLeft)}),this.cursorPos={row:0,column:0},this.$textLayer.addEventListener(\"changeCharacterSize\",function(){_self.updateCharacterSize(),_self.onResize(!0)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:1,characterWidth:1,minHeight:1,maxHeight:1,offset:0,height:1},this.$loop=new RenderLoop(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),config.resetOptions(this),config._emit(\"renderer\",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,oop.implement(this,EventEmitter),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle(\"ace_nobold\",!this.$allowBoldFonts)),this.characterWidth=this.$textLayer.getCharacterWidth(),this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(session){this.session=session,this.scroller.className=\"ace_scroller\",this.$cursorLayer.setSession(session),this.$markerBack.setSession(session),this.$markerFront.setSession(session),this.$gutterLayer.setSession(session),this.$textLayer.setSession(session),this.$loop.schedule(this.CHANGE_FULL)},this.updateLines=function(firstRow,lastRow){void 0===lastRow&&(lastRow=1/0),this.$changedLines?(this.$changedLines.firstRow>firstRow&&(this.$changedLines.firstRow=firstRow),lastRow>this.$changedLines.lastRow&&(this.$changedLines.lastRow=lastRow)):this.$changedLines={firstRow:firstRow,lastRow:lastRow},this.$changedLines.firstRow>this.layerConfig.lastRow||this.$changedLines.lastRow\u003Cthis.layerConfig.firstRow||this.$loop.schedule(this.CHANGE_LINES)},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(force){force?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.onResize=function(force,gutterWidth,width,height){var changes=0,size=this.$size;if(!(this.resizing>2)){if(this.resizing>1?this.resizing++:this.resizing=force?1:0,height||(height=dom.getInnerHeight(this.container)),height&&(force||size.height!=height)&&(size.height=height,changes=this.CHANGE_SIZE,size.scrollerHeight=this.scroller.clientHeight,size.scrollerHeight||(size.scrollerHeight=size.height,this.$horizScroll&&(size.scrollerHeight-=this.scrollBar.getWidth())),this.scrollBar.setHeight(size.scrollerHeight),this.session&&(this.session.setScrollTop(this.getScrollTop()),changes|=this.CHANGE_FULL)),width||(width=dom.getInnerWidth(this.container)),width&&(force||this.resizing>1||size.width!=width)){changes=this.CHANGE_SIZE,size.width=width;var gutterWidth=this.$showGutter?this.$gutter.offsetWidth:0;this.scroller.style.left=gutterWidth+\"px\",size.scrollerWidth=Math.max(0,width-gutterWidth-this.scrollBar.getWidth()),this.scroller.style.right=this.scrollBar.getWidth()+\"px\",(this.session.getUseWrapMode()&&this.adjustWrapLimit()||force)&&(changes|=this.CHANGE_FULL)}this.$size.scrollerHeight&&(force?this.$renderChanges(changes,!0):this.$loop.schedule(changes),force&&(this.$gutterLayer.$padding=null),force&&delete this.resizing)}},this.onGutterResize=function(){var width=this.$size.width,gutterWidth=this.$showGutter?this.$gutter.offsetWidth:0;this.scroller.style.left=gutterWidth+\"px\",this.$size.scrollerWidth=Math.max(0,width-gutterWidth-this.scrollBar.getWidth()),this.session.getUseWrapMode()&&this.adjustWrapLimit()&&this.$loop.schedule(this.CHANGE_FULL)},this.adjustWrapLimit=function(){var availableWidth=this.$size.scrollerWidth-2*this.$padding,limit=Math.floor(availableWidth/this.characterWidth);return this.session.adjustWrapLimit(limit,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(shouldAnimate){this.setOption(\"animatedScroll\",shouldAnimate)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(showInvisibles){this.setOption(\"showInvisibles\",showInvisibles)},this.getShowInvisibles=function(){return this.getOption(\"showInvisibles\")},this.getDisplayIndentGuides=function(){return this.getOption(\"displayIndentGuides\")},this.setDisplayIndentGuides=function(display){this.setOption(\"displayIndentGuides\",display)},this.setShowPrintMargin=function(showPrintMargin){this.setOption(\"showPrintMargin\",showPrintMargin)},this.getShowPrintMargin=function(){return this.getOption(\"showPrintMargin\")},this.setPrintMarginColumn=function(showPrintMargin){this.setOption(\"printMarginColumn\",showPrintMargin)},this.getPrintMarginColumn=function(){return this.getOption(\"printMarginColumn\")},this.getShowGutter=function(){return this.getOption(\"showGutter\")},this.setShowGutter=function(show){return this.setOption(\"showGutter\",show)},this.getFadeFoldWidgets=function(){return this.getOption(\"fadeFoldWidgets\")},this.setFadeFoldWidgets=function(show){this.setOption(\"fadeFoldWidgets\",show)},this.setHighlightGutterLine=function(shouldHighlight){this.setOption(\"highlightGutterLine\",shouldHighlight)},this.getHighlightGutterLine=function(){return this.getOption(\"highlightGutterLine\")},this.$updateGutterLineHighlight=function(){var pos=this.$cursorLayer.$pixelPos,height=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var cursor=this.session.selection.getCursor();cursor.column=0,pos=this.$cursorLayer.getPixelPosition(cursor,!0),height*=this.session.getRowLength(cursor.row)}this.$gutterLineHighlight.style.top=pos.top-this.layerConfig.offset+\"px\",this.$gutterLineHighlight.style.height=height+\"px\"},this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var containerEl=dom.createElement(\"div\");containerEl.className=\"ace_layer ace_print-margin-layer\",this.$printMarginEl=dom.createElement(\"div\"),this.$printMarginEl.className=\"ace_print-margin\",containerEl.appendChild(this.$printMarginEl),this.content.insertBefore(containerEl,this.content.firstChild)}var style=this.$printMarginEl.style;style.left=this.characterWidth*this.$printMarginColumn+this.$padding+\"px\",style.visibility=this.$showPrintMargin?\"visible\":\"hidden\",this.session&&-1==this.session.$wrap&&this.adjustWrapLimit()}},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.content},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(this.$keepTextAreaAtCursor){var config=this.layerConfig,posTop=this.$cursorLayer.$pixelPos.top,posLeft=this.$cursorLayer.$pixelPos.left;posTop-=config.offset;var h=this.lineHeight;if(!(0>posTop||posTop>config.height-h)){var w=this.characterWidth;if(this.$composition){var val=this.textarea.value.replace(/^\\x01+/,\"\");w*=this.session.$getStringScreenWidth(val)[0],h+=2,posTop-=1}posLeft-=this.scrollLeft,posLeft>this.$size.scrollerWidth-w&&(posLeft=this.$size.scrollerWidth-w),posLeft-=this.scrollBar.width,this.textarea.style.height=h+\"px\",this.textarea.style.width=w+\"px\",this.textarea.style.right=Math.max(0,this.$size.scrollerWidth-posLeft-w)+\"px\",this.textarea.style.bottom=Math.max(0,this.$size.height-posTop-h)+\"px\"}}},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},this.getLastFullyVisibleRow=function(){var flint=Math.floor((this.layerConfig.height+this.layerConfig.offset)/this.layerConfig.lineHeight);return this.layerConfig.firstRow-1+flint},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(padding){this.$padding=padding,this.$textLayer.setPadding(padding),this.$cursorLayer.setPadding(padding),this.$markerFront.setPadding(padding),this.$markerBack.setPadding(padding),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(alwaysVisible){this.setOption(\"hScrollBarAlwaysVisible\",alwaysVisible)},this.$updateScrollBar=function(){this.scrollBar.setInnerHeight(this.layerConfig.maxHeight),this.scrollBar.setScrollTop(this.scrollTop)},this.$renderChanges=function(changes,force){if(force||changes&&this.session&&this.container.offsetWidth){if(this._signal(\"beforeRender\"),(changes&this.CHANGE_FULL||changes&this.CHANGE_SIZE||changes&this.CHANGE_TEXT||changes&this.CHANGE_LINES||changes&this.CHANGE_SCROLL)&&this.$computeLayerConfig(),changes&this.CHANGE_H_SCROLL){this.scroller.scrollLeft=this.scrollLeft;var scrollLeft=this.scroller.scrollLeft;this.scrollLeft=scrollLeft,this.session.setScrollLeft(scrollLeft),this.scroller.className=0==this.scrollLeft?\"ace_scroller\":\"ace_scroller ace_scroll-left\"}if(changes&this.CHANGE_FULL)return this.$textLayer.checkForSizeChanges(),this.$updateScrollBar(),this.$textLayer.update(this.layerConfig),this.$showGutter&&this.$gutterLayer.update(this.layerConfig),this.$markerBack.update(this.layerConfig),this.$markerFront.update(this.layerConfig),this.$cursorLayer.update(this.layerConfig),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this._signal(\"afterRender\"),void 0;if(changes&this.CHANGE_SCROLL)return changes&this.CHANGE_TEXT||changes&this.CHANGE_LINES?this.$textLayer.update(this.layerConfig):this.$textLayer.scrollLines(this.layerConfig),this.$showGutter&&this.$gutterLayer.update(this.layerConfig),this.$markerBack.update(this.layerConfig),this.$markerFront.update(this.layerConfig),this.$cursorLayer.update(this.layerConfig),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),this.$updateScrollBar(),this._signal(\"afterRender\"),void 0;changes&this.CHANGE_TEXT?(this.$textLayer.update(this.layerConfig),this.$showGutter&&this.$gutterLayer.update(this.layerConfig)):changes&this.CHANGE_LINES?(this.$updateLines()||changes&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(this.layerConfig):(changes&this.CHANGE_TEXT||changes&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(this.layerConfig),changes&this.CHANGE_CURSOR&&(this.$cursorLayer.update(this.layerConfig),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),changes&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(this.layerConfig),changes&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(this.layerConfig),changes&this.CHANGE_SIZE&&this.$updateScrollBar(),this._signal(\"afterRender\")}},this.$computeLayerConfig=function(){if(!this.$size.scrollerHeight)return this.onResize(!0);var session=this.session,offset=this.scrollTop%this.lineHeight,minHeight=this.$size.scrollerHeight+this.lineHeight,longestLine=this.$getLongestLine(),horizScroll=this.$hScrollBarAlwaysVisible||0>this.$size.scrollerWidth-longestLine,horizScrollChanged=this.$horizScroll!==horizScroll;this.$horizScroll=horizScroll,horizScrollChanged&&(this.scroller.style.overflowX=horizScroll?\"scroll\":\"hidden\",horizScroll||this.session.setScrollLeft(0));var maxHeight=this.session.getScreenLength()*this.lineHeight;this.session.setScrollTop(Math.max(0,Math.min(this.scrollTop,maxHeight-this.$size.scrollerHeight)));var firstRowScreen,firstRowHeight,lineCount=Math.ceil(minHeight/this.lineHeight)-1,firstRow=Math.max(0,Math.round((this.scrollTop-offset)/this.lineHeight)),lastRow=firstRow+lineCount,lineHeight=this.lineHeight;firstRow=session.screenToDocumentRow(firstRow,0);var foldLine=session.getFoldLine(firstRow);foldLine&&(firstRow=foldLine.start.row),firstRowScreen=session.documentToScreenRow(firstRow,0),firstRowHeight=session.getRowLength(firstRow)*lineHeight,lastRow=Math.min(session.screenToDocumentRow(lastRow,0),session.getLength()-1),minHeight=this.$size.scrollerHeight+session.getRowLength(lastRow)*lineHeight+firstRowHeight,offset=this.scrollTop-firstRowScreen*lineHeight,this.layerConfig={width:longestLine,padding:this.$padding,firstRow:firstRow,firstRowScreen:firstRowScreen,lastRow:lastRow,lineHeight:lineHeight,characterWidth:this.characterWidth,minHeight:minHeight,maxHeight:maxHeight,offset:offset,height:this.$size.scrollerHeight},this.$gutterLayer.element.style.marginTop=-offset+\"px\",this.content.style.marginTop=-offset+\"px\",this.content.style.width=longestLine+2*this.$padding+\"px\",this.content.style.height=minHeight+\"px\",horizScrollChanged&&this.onResize(!0)},this.$updateLines=function(){var firstRow=this.$changedLines.firstRow,lastRow=this.$changedLines.lastRow;this.$changedLines=null;var layerConfig=this.layerConfig;return firstRow>layerConfig.lastRow+1||layerConfig.firstRow>lastRow?void 0:1/0===lastRow?(this.$showGutter&&this.$gutterLayer.update(layerConfig),this.$textLayer.update(layerConfig),void 0):(this.$textLayer.updateLines(layerConfig,firstRow,lastRow),!0)},this.$getLongestLine=function(){var charCount=this.session.getScreenWidth();return this.$textLayer.showInvisibles&&(charCount+=1),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(charCount*this.characterWidth))},this.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),this.$loop.schedule(this.CHANGE_MARKER_FRONT)},this.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers()),this.$loop.schedule(this.CHANGE_MARKER_BACK)},this.addGutterDecoration=function(row,className){this.$gutterLayer.addGutterDecoration(row,className)},this.removeGutterDecoration=function(row,className){this.$gutterLayer.removeGutterDecoration(row,className)},this.updateBreakpoints=function(){this.$loop.schedule(this.CHANGE_GUTTER)},this.setAnnotations=function(annotations){this.$gutterLayer.setAnnotations(annotations),this.$loop.schedule(this.CHANGE_GUTTER)},this.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)},this.hideCursor=function(){this.$cursorLayer.hideCursor()},this.showCursor=function(){this.$cursorLayer.showCursor()},this.scrollSelectionIntoView=function(anchor,lead,offset){this.scrollCursorIntoView(anchor,offset),this.scrollCursorIntoView(lead,offset)},this.scrollCursorIntoView=function(cursor,offset){if(0!==this.$size.scrollerHeight){var pos=this.$cursorLayer.getPixelPosition(cursor),left=pos.left,top=pos.top;this.scrollTop>top?(offset&&(top-=offset*this.$size.scrollerHeight),this.session.setScrollTop(top)):this.scrollTop+this.$size.scrollerHeight\u003Ctop+this.lineHeight&&(offset&&(top+=offset*this.$size.scrollerHeight),this.session.setScrollTop(top+this.lineHeight-this.$size.scrollerHeight));var scrollLeft=this.scrollLeft;scrollLeft>left?(this.$padding+2*this.layerConfig.characterWidth>left&&(left=0),this.session.setScrollLeft(left)):scrollLeft+this.$size.scrollerWidth\u003Cleft+this.characterWidth&&this.session.setScrollLeft(Math.round(left+this.characterWidth-this.$size.scrollerWidth))}},this.getScrollTop=function(){return this.session.getScrollTop()},this.getScrollLeft=function(){return this.session.getScrollLeft()},this.getScrollTopRow=function(){return this.scrollTop/this.lineHeight},this.getScrollBottomRow=function(){return Math.max(0,Math.floor((this.scrollTop+this.$size.scrollerHeight)/this.lineHeight)-1)},this.scrollToRow=function(row){this.session.setScrollTop(row*this.lineHeight)},this.alignCursor=function(cursor,alignment){\"number\"==typeof cursor&&(cursor={row:cursor,column:0});var pos=this.$cursorLayer.getPixelPosition(cursor),h=this.$size.scrollerHeight-this.lineHeight,offset=pos.top-h*(alignment||0);return this.session.setScrollTop(offset),offset},this.STEPS=8,this.$calcSteps=function(fromValue,toValue){var i=0,l=this.STEPS,steps=[],func=function(t,x_min,dx){return dx*(Math.pow(t-1,3)+1)+x_min};for(i=0;l>i;++i)steps.push(func(i/this.STEPS,fromValue,toValue-fromValue));return steps},this.scrollToLine=function(line,center,animate,callback){var pos=this.$cursorLayer.getPixelPosition({row:line,column:0}),offset=pos.top;center&&(offset-=this.$size.scrollerHeight/2);var initialScroll=this.scrollTop;this.session.setScrollTop(offset),animate!==!1&&this.animateScrolling(initialScroll,callback)},this.animateScrolling=function(fromValue,callback){var toValue=this.scrollTop;if(this.$animatedScroll&&1e5>Math.abs(fromValue-toValue)){var _self=this,steps=_self.$calcSteps(fromValue,toValue);this.$inScrollAnimation=!0,clearInterval(this.$timer),_self.session.setScrollTop(steps.shift()),this.$timer=setInterval(function(){steps.length?(_self.session.setScrollTop(steps.shift()),_self.session.$scrollTop=toValue):null!=toValue?(_self.session.$scrollTop=-1,_self.session.setScrollTop(toValue),toValue=null):(_self.$timer=clearInterval(_self.$timer),_self.$inScrollAnimation=!1,callback&&callback())},10)}},this.scrollToY=function(scrollTop){this.scrollTop!==scrollTop&&(this.$loop.schedule(this.CHANGE_SCROLL),this.scrollTop=scrollTop)},this.scrollToX=function(scrollLeft){0>scrollLeft&&(scrollLeft=0),this.scrollLeft!==scrollLeft&&(this.scrollLeft=scrollLeft),this.$loop.schedule(this.CHANGE_H_SCROLL)},this.scrollBy=function(deltaX,deltaY){deltaY&&this.session.setScrollTop(this.session.getScrollTop()+deltaY),deltaX&&this.session.setScrollLeft(this.session.getScrollLeft()+deltaX)},this.isScrollableBy=function(deltaX,deltaY){return 0>deltaY&&this.session.getScrollTop()>=1?!0:deltaY>0&&-1>this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight?!0:void 0},this.pixelToScreenCoordinates=function(x,y){var canvasPos=this.scroller.getBoundingClientRect(),offset=(x+this.scrollLeft-canvasPos.left-this.$padding)/this.characterWidth,row=Math.floor((y+this.scrollTop-canvasPos.top)/this.lineHeight),col=Math.round(offset);return{row:row,column:col,side:offset-col>0?1:-1}},this.screenToTextCoordinates=function(x,y){var canvasPos=this.scroller.getBoundingClientRect(),col=Math.round((x+this.scrollLeft-canvasPos.left-this.$padding)/this.characterWidth),row=Math.floor((y+this.scrollTop-canvasPos.top)/this.lineHeight);return this.session.screenToDocumentPosition(row,Math.max(col,0))},this.textToScreenCoordinates=function(row,column){var canvasPos=this.scroller.getBoundingClientRect(),pos=this.session.documentToScreenPosition(row,column),x=this.$padding+Math.round(pos.column*this.characterWidth),y=pos.row*this.lineHeight;return{pageX:canvasPos.left+x-this.scrollLeft,pageY:canvasPos.top+y-this.scrollTop}},this.visualizeFocus=function(){dom.addCssClass(this.container,\"ace_focus\")},this.visualizeBlur=function(){dom.removeCssClass(this.container,\"ace_focus\")},this.showComposition=function(){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,dom.addCssClass(this.textarea,\"ace_composition\"),this.textarea.style.cssText=\"\",this.$moveTextAreaToCursor()},this.setCompositionText=function(){this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(dom.removeCssClass(this.textarea,\"ace_composition\"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null)},this.setTheme=function(theme){function afterLoad(theme){if(theme.cssClass){dom.importCssString(theme.cssText,theme.cssClass,_self.container.ownerDocument),_self.theme&&dom.removeCssClass(_self.container,_self.theme.cssClass),_self.$theme=theme.cssClass,_self.theme=theme,dom.addCssClass(_self.container,theme.cssClass),dom.setCssClass(_self.container,\"ace_dark\",theme.isDark);var padding=theme.padding||4;_self.$padding&&padding!=_self.$padding&&_self.setPadding(padding),_self.$size&&(_self.$size.width=0,_self.onResize()),_self._dispatchEvent(\"themeLoaded\",{theme:theme})}}var _self=this;if(this.$themeValue=theme,_self._dispatchEvent(\"themeChange\",{theme:theme}),theme&&\"string\"!=typeof theme)afterLoad(theme);else{var moduleName=theme||\"ace/theme/textmate\";config.loadModule([\"theme\",moduleName],afterLoad)}},this.getTheme=function(){return this.$themeValue},this.setStyle=function(style,include){dom.setCssClass(this.container,style,0!=include)},this.unsetStyle=function(style){dom.removeCssClass(this.container,style)},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(VirtualRenderer.prototype),config.defineOptions(VirtualRenderer.prototype,\"renderer\",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(value){this.$textLayer.setShowInvisibles(value)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(val){\"number\"==typeof val&&(this.$printMarginColumn=val),this.$showPrintMargin=!!val,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(show){this.$gutter.style.display=show?\"block\":\"none\",this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(show){dom.setCssClass(this.$gutter,\"ace_fade-fold-widgets\",show)},initialValue:!1},showFoldWidgets:{set:function(show){this.$gutterLayer.setShowFoldWidgets(show)},initialValue:!0},displayIndentGuides:{set:function(show){this.$textLayer.setDisplayIndentGuides(show)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(shouldHighlight){return this.$gutterLineHighlight?(this.$gutterLineHighlight.style.display=shouldHighlight?\"\":\"none\",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight(),void 0):(this.$gutterLineHighlight=dom.createElement(\"div\"),this.$gutterLineHighlight.className=\"ace_gutter-active-line\",this.$gutter.appendChild(this.$gutterLineHighlight),void 0)},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(alwaysVisible){this.$hScrollBarAlwaysVisible=alwaysVisible,this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(size){\"number\"==typeof size&&(size+=\"px\"),this.container.style.fontSize=size,this.updateFontSize()},initialValue:12},fontFamily:{set:function(name){this.container.style.fontFamily=name,this.updateFontSize()}}}),exports.VirtualRenderer=VirtualRenderer}),ace.define(\"ace/layer/gutter\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\"],function(acequire,exports){var dom=acequire(\"../lib/dom\"),oop=acequire(\"../lib/oop\"),lang=acequire(\"../lib/lang\"),EventEmitter=acequire(\"../lib/event_emitter\").EventEmitter,Gutter=function(parentEl){this.element=dom.createElement(\"div\"),this.element.className=\"ace_layer ace_gutter-layer\",parentEl.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this)};(function(){oop.implement(this,EventEmitter),this.setSession=function(session){this.session&&this.session.removeEventListener(\"change\",this.$updateAnnotations),this.session=session,session.on(\"change\",this.$updateAnnotations)},this.addGutterDecoration=function(row,className){window.console&&console.warn&&console.warn(\"deprecated use session.addGutterDecoration\"),this.session.addGutterDecoration(row,className)},this.removeGutterDecoration=function(row,className){window.console&&console.warn&&console.warn(\"deprecated use session.removeGutterDecoration\"),this.session.removeGutterDecoration(row,className)},this.setAnnotations=function(annotations){this.$annotations=[];for(var rowInfo,row,i=0;annotations.length>i;i++){var annotation=annotations[i],row=annotation.row,rowInfo=this.$annotations[row];rowInfo||(rowInfo=this.$annotations[row]={text:[]});var annoText=annotation.text;annoText=annoText?lang.escapeHTML(annoText):annotation.html||\"\",-1===rowInfo.text.indexOf(annoText)&&rowInfo.text.push(annoText);var type=annotation.type;\"error\"==type?rowInfo.className=\" ace_error\":\"warning\"==type&&\" ace_error\"!=rowInfo.className?rowInfo.className=\" ace_warning\":\"info\"!=type||rowInfo.className||(rowInfo.className=\" ace_info\")}},this.$updateAnnotations=function(e){if(this.$annotations.length){var delta=e.data,range=delta.range,firstRow=range.start.row,len=range.end.row-firstRow;if(0===len);else if(\"removeText\"==delta.action||\"removeLines\"==delta.action)this.$annotations.splice(firstRow,len+1,null);else{var args=Array(len+1);args.unshift(firstRow,1),this.$annotations.splice.apply(this.$annotations,args)}}},this.update=function(config){for(var emptyAnno={className:\"\"},html=[],i=config.firstRow,lastRow=config.lastRow,fold=this.session.getNextFoldLine(i),foldStart=fold?fold.start.row:1/0,foldWidgets=this.$showFoldWidgets&&this.session.foldWidgets,breakpoints=this.session.$breakpoints,decorations=this.session.$decorations,firstLineNumber=this.session.$firstLineNumber,lastLineNumber=0;;){if(i>foldStart&&(i=fold.end.row+1,fold=this.session.getNextFoldLine(i,fold),foldStart=fold?fold.start.row:1/0),i>lastRow)break;var annotation=this.$annotations[i]||emptyAnno;if(html.push(\"\u003Cdiv class='ace_gutter-cell \",breakpoints[i]||\"\",decorations[i]||\"\",annotation.className,\"' style='height:\",this.session.getRowLength(i)*config.lineHeight,\"px;'>\",lastLineNumber=i+firstLineNumber),foldWidgets){var c=foldWidgets[i];null==c&&(c=foldWidgets[i]=this.session.getFoldWidget(i)),c&&html.push(\"\u003Cspan class='ace_fold-widget ace_\",c,\"start\"==c&&i==foldStart&&fold.end.row>i?\" ace_closed\":\" ace_open\",\"' style='height:\",config.lineHeight,\"px\",\"'>\u003C/span>\")}html.push(\"\u003C/div>\"),i++}this.element=dom.setInnerHtml(this.element,html.join(\"\")),this.element.style.height=config.minHeight+\"px\",this.session.$useWrapMode&&(lastLineNumber=this.session.getLength());var gutterWidth=(\"\"+lastLineNumber).length*config.characterWidth,padding=this.$padding||this.$computePadding();gutterWidth+=padding.left+padding.right,gutterWidth!==this.gutterWidth&&(this.gutterWidth=gutterWidth,this.element.style.width=Math.ceil(this.gutterWidth)+\"px\",this._emit(\"changeGutterWidth\",gutterWidth))},this.$showFoldWidgets=!0,this.setShowFoldWidgets=function(show){show?dom.addCssClass(this.element,\"ace_folding-enabled\"):dom.removeCssClass(this.element,\"ace_folding-enabled\"),this.$showFoldWidgets=show,this.$padding=null},this.getShowFoldWidgets=function(){return this.$showFoldWidgets},this.$computePadding=function(){if(!this.element.firstChild)return{left:0,right:0};var style=dom.computedStyle(this.element.firstChild);return this.$padding={},this.$padding.left=parseInt(style.paddingLeft)+1,this.$padding.right=parseInt(style.paddingRight),this.$padding},this.getRegion=function(point){var padding=this.$padding||this.$computePadding(),rect=this.element.getBoundingClientRect();return point.x\u003Cpadding.left+rect.left?\"markers\":this.$showFoldWidgets&&point.x>rect.right-padding.right?\"foldWidgets\":void 0}}).call(Gutter.prototype),exports.Gutter=Gutter}),ace.define(\"ace/layer/marker\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/dom\"],function(acequire,exports){var Range=acequire(\"../range\").Range,dom=acequire(\"../lib/dom\"),Marker=function(parentEl){this.element=dom.createElement(\"div\"),this.element.className=\"ace_layer ace_marker-layer\",parentEl.appendChild(this.element)};(function(){this.$padding=0,this.setPadding=function(padding){this.$padding=padding},this.setSession=function(session){this.session=session},this.setMarkers=function(markers){this.markers=markers},this.update=function(config){var config=config||this.config;if(config){this.config=config;var html=[];for(var key in this.markers){var marker=this.markers[key];if(marker.range){var range=marker.range.clipRows(config.firstRow,config.lastRow);if(!range.isEmpty())if(range=range.toScreenRange(this.session),marker.renderer){var top=this.$getTop(range.start.row,config),left=this.$padding+range.start.column*config.characterWidth;marker.renderer(html,range,left,top,config)}else\"fullLine\"==marker.type?this.drawFullLineMarker(html,range,marker.clazz,config):\"screenLine\"==marker.type?this.drawScreenLineMarker(html,range,marker.clazz,config):range.isMultiLine()?\"text\"==marker.type?this.drawTextMarker(html,range,marker.clazz,config):this.drawMultiLineMarker(html,range,marker.clazz,config):this.drawSingleLineMarker(html,range,marker.clazz+\" ace_start\",config)}else marker.update(html,this,this.session,config)}this.element=dom.setInnerHtml(this.element,html.join(\"\"))}},this.$getTop=function(row,layerConfig){return(row-layerConfig.firstRowScreen)*layerConfig.lineHeight},this.drawTextMarker=function(stringBuilder,range,clazz,layerConfig){var row=range.start.row,lineRange=new Range(row,range.start.column,row,this.session.getScreenLastRowColumn(row));for(this.drawSingleLineMarker(stringBuilder,lineRange,clazz+\" ace_start\",layerConfig,1,\"text\"),row=range.end.row,lineRange=new Range(row,0,row,range.end.column),this.drawSingleLineMarker(stringBuilder,lineRange,clazz,layerConfig,0,\"text\"),row=range.start.row+1;range.end.row>row;row++)lineRange.start.row=row,lineRange.end.row=row,lineRange.end.column=this.session.getScreenLastRowColumn(row),this.drawSingleLineMarker(stringBuilder,lineRange,clazz,layerConfig,1,\"text\")},this.drawMultiLineMarker=function(stringBuilder,range,clazz,config){var padding=this.$padding,height=config.lineHeight,top=this.$getTop(range.start.row,config),left=padding+range.start.column*config.characterWidth;stringBuilder.push(\"\u003Cdiv class='\",clazz,\" ace_start' style='\",\"height:\",height,\"px;\",\"right:0;\",\"top:\",top,\"px;\",\"left:\",left,\"px;'>\u003C/div>\"),top=this.$getTop(range.end.row,config);var width=range.end.column*config.characterWidth;stringBuilder.push(\"\u003Cdiv class='\",clazz,\"' style='\",\"height:\",height,\"px;\",\"width:\",width,\"px;\",\"top:\",top,\"px;\",\"left:\",padding,\"px;'>\u003C/div>\"),height=(range.end.row-range.start.row-1)*config.lineHeight,0>height||(top=this.$getTop(range.start.row+1,config),stringBuilder.push(\"\u003Cdiv class='\",clazz,\"' style='\",\"height:\",height,\"px;\",\"right:0;\",\"top:\",top,\"px;\",\"left:\",padding,\"px;'>\u003C/div>\"))},this.drawSingleLineMarker=function(stringBuilder,range,clazz,config,extraLength){var height=config.lineHeight,width=(range.end.column+(extraLength||0)-range.start.column)*config.characterWidth,top=this.$getTop(range.start.row,config),left=this.$padding+range.start.column*config.characterWidth;stringBuilder.push(\"\u003Cdiv class='\",clazz,\"' style='\",\"height:\",height,\"px;\",\"width:\",width,\"px;\",\"top:\",top,\"px;\",\"left:\",left,\"px;'>\u003C/div>\")\n},this.drawFullLineMarker=function(stringBuilder,range,clazz,config){var top=this.$getTop(range.start.row,config),height=config.lineHeight;range.start.row!=range.end.row&&(height+=this.$getTop(range.end.row,config)-top),stringBuilder.push(\"\u003Cdiv class='\",clazz,\"' style='\",\"height:\",height,\"px;\",\"top:\",top,\"px;\",\"left:0;right:0;'>\u003C/div>\")},this.drawScreenLineMarker=function(stringBuilder,range,clazz,config){var top=this.$getTop(range.start.row,config),height=config.lineHeight;stringBuilder.push(\"\u003Cdiv class='\",clazz,\"' style='\",\"height:\",height,\"px;\",\"top:\",top,\"px;\",\"left:0;right:0;'>\u003C/div>\")}}).call(Marker.prototype),exports.Marker=Marker}),ace.define(\"ace/layer/text\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"],function(acequire,exports){var oop=acequire(\"../lib/oop\"),dom=acequire(\"../lib/dom\"),lang=acequire(\"../lib/lang\"),useragent=acequire(\"../lib/useragent\"),EventEmitter=acequire(\"../lib/event_emitter\").EventEmitter,Text=function(parentEl){this.element=dom.createElement(\"div\"),this.element.className=\"ace_layer ace_text-layer\",parentEl.appendChild(this.element),this.$characterSize={width:0,height:0},this.checkForSizeChanges(),this.$pollSizeChanges()};(function(){oop.implement(this,EventEmitter),this.EOF_CHAR=\"¶\",this.EOL_CHAR=\"¬\",this.TAB_CHAR=\"→\",this.SPACE_CHAR=\"Ā·\",this.$padding=0,this.setPadding=function(padding){this.$padding=padding,this.element.style.padding=\"0 \"+padding+\"px\"},this.getLineHeight=function(){return this.$characterSize.height||1},this.getCharacterWidth=function(){return this.$characterSize.width||1},this.checkForSizeChanges=function(){var size=this.$measureSizes();if(size&&(this.$characterSize.width!==size.width||this.$characterSize.height!==size.height)){this.$measureNode.style.fontWeight=\"bold\";var boldSize=this.$measureSizes();this.$measureNode.style.fontWeight=\"\",this.$characterSize=size,this.allowBoldFonts=boldSize&&boldSize.width===size.width&&boldSize.height===size.height,this._emit(\"changeCharacterSize\",{data:size})}},this.$pollSizeChanges=function(){var self=this;this.$pollSizeChangesTimer=setInterval(function(){self.checkForSizeChanges()},500)},this.$fontStyles={fontFamily:1,fontSize:1,fontWeight:1,fontStyle:1,lineHeight:1},this.$measureSizes=useragent.isIE||useragent.isOldGecko?function(){var n=1e3;if(!this.$measureNode){var measureNode=this.$measureNode=dom.createElement(\"div\"),style=measureNode.style;if(style.width=style.height=\"auto\",style.left=style.top=40*-n+\"px\",style.visibility=\"hidden\",style.position=\"fixed\",style.overflow=\"visible\",style.whiteSpace=\"nowrap\",measureNode.innerHTML=lang.stringRepeat(\"Xy\",n),this.element.ownerDocument.body)this.element.ownerDocument.body.appendChild(measureNode);else{for(var container=this.element.parentNode;!dom.hasCssClass(container,\"ace_editor\");)container=container.parentNode;container.appendChild(measureNode)}}if(!this.element.offsetWidth)return null;var style=this.$measureNode.style,computedStyle=dom.computedStyle(this.element);for(var prop in this.$fontStyles)style[prop]=computedStyle[prop];var size={height:this.$measureNode.offsetHeight,width:this.$measureNode.offsetWidth/(2*n)};return 0==size.width||0==size.height?null:size}:function(){if(!this.$measureNode){var measureNode=this.$measureNode=dom.createElement(\"div\"),style=measureNode.style;style.width=style.height=\"auto\",style.left=style.top=\"-100px\",style.visibility=\"hidden\",style.position=\"fixed\",style.overflow=\"visible\",style.whiteSpace=\"nowrap\",measureNode.innerHTML=\"X\";for(var container=this.element.parentNode;container&&!dom.hasCssClass(container,\"ace_editor\");)container=container.parentNode;if(!container)return this.$measureNode=null;container.appendChild(measureNode)}var rect=this.$measureNode.getBoundingClientRect(),size={height:rect.height,width:rect.width};return 0==size.width||0==size.height?null:size},this.setSession=function(session){this.session=session,this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(showInvisibles){return this.showInvisibles==showInvisibles?!1:(this.showInvisibles=showInvisibles,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(display){return this.displayIndentGuides==display?!1:(this.displayIndentGuides=display,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var tabSize=this.session.getTabSize();this.tabSize=tabSize;for(var tabStr=this.$tabStrings=[0],i=1;tabSize+1>i;i++)this.showInvisibles?tabStr.push(\"\u003Cspan class='ace_invisible'>\"+this.TAB_CHAR+lang.stringRepeat(\" \",i-1)+\"\u003C/span>\"):tabStr.push(lang.stringRepeat(\" \",i));if(this.displayIndentGuides){this.$indentGuideRe=/\\s\\S| \\t|\\t |\\s$/;var className=\"ace_indent-guide\";if(this.showInvisibles){className+=\" ace_invisible\";var spaceContent=lang.stringRepeat(this.SPACE_CHAR,this.tabSize),tabContent=this.TAB_CHAR+lang.stringRepeat(\" \",this.tabSize-1)}else var spaceContent=lang.stringRepeat(\" \",this.tabSize),tabContent=spaceContent;this.$tabStrings[\" \"]=\"\u003Cspan class='\"+className+\"'>\"+spaceContent+\"\u003C/span>\",this.$tabStrings[\"\t\"]=\"\u003Cspan class='\"+className+\"'>\"+tabContent+\"\u003C/span>\"}},this.updateLines=function(config,firstRow,lastRow){(this.config.lastRow!=config.lastRow||this.config.firstRow!=config.firstRow)&&this.scrollLines(config),this.config=config;for(var first=Math.max(firstRow,config.firstRow),last=Math.min(lastRow,config.lastRow),lineElements=this.element.childNodes,lineElementsIdx=0,row=config.firstRow;first>row;row++){var foldLine=this.session.getFoldLine(row);if(foldLine){if(foldLine.containsRow(first)){first=foldLine.start.row;break}row=foldLine.end.row}lineElementsIdx++}for(var row=first,foldLine=this.session.getNextFoldLine(row),foldStart=foldLine?foldLine.start.row:1/0;;){if(row>foldStart&&(row=foldLine.end.row+1,foldLine=this.session.getNextFoldLine(row,foldLine),foldStart=foldLine?foldLine.start.row:1/0),row>last)break;var lineElement=lineElements[lineElementsIdx++];if(lineElement){var html=[];this.$renderLine(html,row,!this.$useLineGroups(),row==foldStart?foldLine:!1),dom.setInnerHtml(lineElement,html.join(\"\"))}row++}},this.scrollLines=function(config){var oldConfig=this.config;if(this.config=config,!oldConfig||oldConfig.lastRow\u003Cconfig.firstRow)return this.update(config);if(config.lastRow\u003ColdConfig.firstRow)return this.update(config);var el=this.element;if(oldConfig.firstRow\u003Cconfig.firstRow)for(var row=this.session.getFoldedRowCount(oldConfig.firstRow,config.firstRow-1);row>0;row--)el.removeChild(el.firstChild);if(oldConfig.lastRow>config.lastRow)for(var row=this.session.getFoldedRowCount(config.lastRow+1,oldConfig.lastRow);row>0;row--)el.removeChild(el.lastChild);if(config.firstRow\u003ColdConfig.firstRow){var fragment=this.$renderLinesFragment(config,config.firstRow,oldConfig.firstRow-1);el.firstChild?el.insertBefore(fragment,el.firstChild):el.appendChild(fragment)}if(config.lastRow>oldConfig.lastRow){var fragment=this.$renderLinesFragment(config,oldConfig.lastRow+1,config.lastRow);el.appendChild(fragment)}},this.$renderLinesFragment=function(config,firstRow,lastRow){for(var fragment=this.element.ownerDocument.createDocumentFragment(),row=firstRow,foldLine=this.session.getNextFoldLine(row),foldStart=foldLine?foldLine.start.row:1/0;;){if(row>foldStart&&(row=foldLine.end.row+1,foldLine=this.session.getNextFoldLine(row,foldLine),foldStart=foldLine?foldLine.start.row:1/0),row>lastRow)break;var container=dom.createElement(\"div\"),html=[];if(this.$renderLine(html,row,!1,row==foldStart?foldLine:!1),container.innerHTML=html.join(\"\"),this.$useLineGroups())container.className=\"ace_line_group\",fragment.appendChild(container);else for(var lines=container.childNodes;lines.length;)fragment.appendChild(lines[0]);row++}return fragment},this.update=function(config){this.config=config;for(var html=[],firstRow=config.firstRow,lastRow=config.lastRow,row=firstRow,foldLine=this.session.getNextFoldLine(row),foldStart=foldLine?foldLine.start.row:1/0;;){if(row>foldStart&&(row=foldLine.end.row+1,foldLine=this.session.getNextFoldLine(row,foldLine),foldStart=foldLine?foldLine.start.row:1/0),row>lastRow)break;this.$useLineGroups()&&html.push(\"\u003Cdiv class='ace_line_group'>\"),this.$renderLine(html,row,!1,row==foldStart?foldLine:!1),this.$useLineGroups()&&html.push(\"\u003C/div>\"),row++}this.element=dom.setInnerHtml(this.element,html.join(\"\"))},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(stringBuilder,screenColumn,token,value){var self=this,replaceReg=/\\t|&|\u003C|( +)|([\\x00-\\x1f\\x80-\\xa0\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF])|[\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3000-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]/g,replaceFunc=function(c,a,b,tabIdx){if(a)return self.showInvisibles?\"\u003Cspan class='ace_invisible'>\"+lang.stringRepeat(self.SPACE_CHAR,c.length)+\"\u003C/span>\":lang.stringRepeat(\" \",c.length);if(\"&\"==c)return\"&\";if(\"\u003C\"==c)return\"<\";if(\"\t\"==c){var tabSize=self.session.getScreenTabSize(screenColumn+tabIdx);return screenColumn+=tabSize-1,self.$tabStrings[tabSize]}if(\"怀\"==c){var classToUse=self.showInvisibles?\"ace_cjk ace_invisible\":\"ace_cjk\",space=self.showInvisibles?self.SPACE_CHAR:\"\";return screenColumn+=1,\"\u003Cspan class='\"+classToUse+\"' style='width:\"+2*self.config.characterWidth+\"px'>\"+space+\"\u003C/span>\"}return b?\"\u003Cspan class='ace_invisible ace_invalid'>\"+self.SPACE_CHAR+\"\u003C/span>\":(screenColumn+=1,\"\u003Cspan class='ace_cjk' style='width:\"+2*self.config.characterWidth+\"px'>\"+c+\"\u003C/span>\")},output=value.replace(replaceReg,replaceFunc);if(this.$textToken[token.type])stringBuilder.push(output);else{var classes=\"ace_\"+token.type.replace(/\\./g,\" ace_\"),style=\"\";\"fold\"==token.type&&(style=\" style='width:\"+token.value.length*this.config.characterWidth+\"px;' \"),stringBuilder.push(\"\u003Cspan class='\",classes,\"'\",style,\">\",output,\"\u003C/span>\")}return screenColumn+value.length},this.renderIndentGuide=function(stringBuilder,value){var cols=value.search(this.$indentGuideRe);return 0>=cols?value:\" \"==value[0]?(cols-=cols%this.tabSize,stringBuilder.push(lang.stringRepeat(this.$tabStrings[\" \"],cols/this.tabSize)),value.substr(cols)):\"\t\"==value[0]?(stringBuilder.push(lang.stringRepeat(this.$tabStrings[\"\t\"],cols)),value.substr(cols)):value},this.$renderWrappedLine=function(stringBuilder,tokens,splits,onlyContents){for(var chars=0,split=0,splitChars=splits[0],screenColumn=0,i=0;tokens.length>i;i++){var token=tokens[i],value=token.value;if(0==i&&this.displayIndentGuides){if(chars=value.length,value=this.renderIndentGuide(stringBuilder,value),!value)continue;chars-=value.length}if(splitChars>chars+value.length)screenColumn=this.$renderToken(stringBuilder,screenColumn,token,value),chars+=value.length;else{for(;chars+value.length>=splitChars;)screenColumn=this.$renderToken(stringBuilder,screenColumn,token,value.substring(0,splitChars-chars)),value=value.substring(splitChars-chars),chars=splitChars,onlyContents||stringBuilder.push(\"\u003C/div>\",\"\u003Cdiv class='ace_line' style='height:\",this.config.lineHeight,\"px'>\"),split++,screenColumn=0,splitChars=splits[split]||Number.MAX_VALUE;0!=value.length&&(chars+=value.length,screenColumn=this.$renderToken(stringBuilder,screenColumn,token,value))}}},this.$renderSimpleLine=function(stringBuilder,tokens){var screenColumn=0,token=tokens[0],value=token.value;this.displayIndentGuides&&(value=this.renderIndentGuide(stringBuilder,value)),value&&(screenColumn=this.$renderToken(stringBuilder,screenColumn,token,value));for(var i=1;tokens.length>i;i++)token=tokens[i],value=token.value,screenColumn=this.$renderToken(stringBuilder,screenColumn,token,value)},this.$renderLine=function(stringBuilder,row,onlyContents,foldLine){if(foldLine||0==foldLine||(foldLine=this.session.getFoldLine(row)),foldLine)var tokens=this.$getFoldLineTokens(row,foldLine);else var tokens=this.session.getTokens(row);if(onlyContents||stringBuilder.push(\"\u003Cdiv class='ace_line' style='height:\",this.config.lineHeight,\"px'>\"),tokens.length){var splits=this.session.getRowSplitData(row);splits&&splits.length?this.$renderWrappedLine(stringBuilder,tokens,splits,onlyContents):this.$renderSimpleLine(stringBuilder,tokens)}this.showInvisibles&&(foldLine&&(row=foldLine.end.row),stringBuilder.push(\"\u003Cspan class='ace_invisible'>\",row==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,\"\u003C/span>\")),onlyContents||stringBuilder.push(\"\u003C/div>\")},this.$getFoldLineTokens=function(row,foldLine){function addTokens(tokens,from,to){for(var idx=0,col=0;from>col+tokens[idx].value.length;)if(col+=tokens[idx].value.length,idx++,idx==tokens.length)return;if(col!=from){var value=tokens[idx].value.substring(from-col);value.length>to-from&&(value=value.substring(0,to-from)),renderTokens.push({type:tokens[idx].type,value:value}),col=from+value.length,idx+=1}for(;to>col&&tokens.length>idx;){var value=tokens[idx].value;value.length+col>to?renderTokens.push({type:tokens[idx].type,value:value.substring(0,to-col)}):renderTokens.push(tokens[idx]),col+=value.length,idx+=1}}var session=this.session,renderTokens=[],tokens=session.getTokens(row);return foldLine.walk(function(placeholder,row,column,lastColumn,isNewRow){null!=placeholder?renderTokens.push({type:\"fold\",value:placeholder}):(isNewRow&&(tokens=session.getTokens(row)),tokens.length&&addTokens(tokens,lastColumn,column))},foldLine.end.row,this.session.getLine(foldLine.end.row).length),renderTokens},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(Text.prototype),exports.Text=Text}),ace.define(\"ace/layer/cursor\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(acequire,exports){var dom=acequire(\"../lib/dom\"),Cursor=function(parentEl){this.element=dom.createElement(\"div\"),this.element.className=\"ace_layer ace_cursor-layer\",parentEl.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),dom.addCssClass(this.element,\"ace_hidden-cursors\")};(function(){this.$padding=0,this.setPadding=function(padding){this.$padding=padding},this.setSession=function(session){this.session=session},this.setBlinking=function(blinking){blinking!=this.isBlinking&&(this.isBlinking=blinking,this.restartTimer())},this.setBlinkInterval=function(blinkInterval){blinkInterval!=this.blinkInterval&&(this.blinkInterval=blinkInterval,this.restartTimer())},this.setSmoothBlinking=function(smoothBlinking){smoothBlinking!=this.smoothBlinking&&(this.smoothBlinking=smoothBlinking,smoothBlinking?dom.addCssClass(this.element,\"ace_smooth-blinking\"):dom.removeCssClass(this.element,\"ace_smooth-blinking\"),this.restartTimer())},this.addCursor=function(){var el=dom.createElement(\"div\");return el.className=\"ace_cursor\",this.element.appendChild(el),this.cursors.push(el),el},this.removeCursor=function(){if(this.cursors.length>1){var el=this.cursors.pop();return el.parentNode.removeChild(el),el}},this.hideCursor=function(){this.isVisible=!1,dom.addCssClass(this.element,\"ace_hidden-cursors\"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,dom.removeCssClass(this.element,\"ace_hidden-cursors\"),this.restartTimer()},this.restartTimer=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&dom.removeCssClass(this.element,\"ace_smooth-blinking\");for(var i=this.cursors.length;i--;)this.cursors[i].style.opacity=\"\";if(this.isBlinking&&this.blinkInterval&&this.isVisible){this.smoothBlinking&&setTimeout(function(){dom.addCssClass(this.element,\"ace_smooth-blinking\")}.bind(this));var blink=function(){this.timeoutId=setTimeout(function(){for(var i=this.cursors.length;i--;)this.cursors[i].style.opacity=0}.bind(this),.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){for(var i=this.cursors.length;i--;)this.cursors[i].style.opacity=\"\";blink()}.bind(this),this.blinkInterval),blink()}},this.getPixelPosition=function(position,onScreen){if(!this.config||!this.session)return{left:0,top:0};position||(position=this.session.selection.getCursor());var pos=this.session.documentToScreenPosition(position),cursorLeft=this.$padding+pos.column*this.config.characterWidth,cursorTop=(pos.row-(onScreen?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:cursorLeft,top:cursorTop}},this.update=function(config){this.config=config;var selections=this.session.$selectionMarkers,i=0,cursorIndex=0;(void 0===selections||0===selections.length)&&(selections=[{cursor:null}]);for(var i=0,n=selections.length;n>i;i++){var pixelPos=this.getPixelPosition(selections[i].cursor,!0);if(!((pixelPos.top>config.height+config.offset||pixelPos.top\u003C-config.offset)&&i>1)){var style=(this.cursors[cursorIndex++]||this.addCursor()).style;style.left=pixelPos.left+\"px\",style.top=pixelPos.top+\"px\",style.width=config.characterWidth+\"px\",style.height=config.lineHeight+\"px\"}}for(;this.cursors.length>cursorIndex;)this.removeCursor();var overwrite=this.session.getOverwrite();this.$setOverwrite(overwrite),this.$pixelPos=pixelPos,this.restartTimer()},this.$setOverwrite=function(overwrite){overwrite!=this.overwrite&&(this.overwrite=overwrite,overwrite?dom.addCssClass(this.element,\"ace_overwrite-cursors\"):dom.removeCssClass(this.element,\"ace_overwrite-cursors\"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(Cursor.prototype),exports.Cursor=Cursor}),ace.define(\"ace/scrollbar\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"],function(acequire,exports){var oop=acequire(\"./lib/oop\"),dom=acequire(\"./lib/dom\"),event=acequire(\"./lib/event\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,ScrollBar=function(parent){this.element=dom.createElement(\"div\"),this.element.className=\"ace_scrollbar\",this.inner=dom.createElement(\"div\"),this.inner.className=\"ace_scrollbar-inner\",this.element.appendChild(this.inner),parent.appendChild(this.element),this.width=dom.scrollbarWidth(parent.ownerDocument),this.element.style.width=(this.width||15)+5+\"px\",event.addListener(this.element,\"scroll\",this.onScroll.bind(this))};(function(){oop.implement(this,EventEmitter),this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit(\"scroll\",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.width},this.setHeight=function(height){this.element.style.height=height+\"px\"},this.setInnerHeight=function(height){this.inner.style.height=height+\"px\"},this.setScrollTop=function(scrollTop){this.scrollTop!=scrollTop&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=scrollTop)}}).call(ScrollBar.prototype),exports.ScrollBar=ScrollBar}),ace.define(\"ace/renderloop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"],function(acequire,exports){var event=acequire(\"./lib/event\"),RenderLoop=function(onRender,win){this.onRender=onRender,this.pending=!1,this.changes=0,this.window=win||window};(function(){this.schedule=function(change){if(this.changes=this.changes|change,!this.pending){this.pending=!0;var _self=this;event.nextFrame(function(){_self.pending=!1;for(var changes;changes=_self.changes;)_self.changes=0,_self.onRender(changes)},this.window)}}}).call(RenderLoop.prototype),exports.RenderLoop=RenderLoop}),ace.define(\"ace/multi_select\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/range\",\"ace/selection\",\"ace/mouse/multi_select_handler\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/commands/multi_select_commands\",\"ace/search\",\"ace/edit_session\",\"ace/editor\"],function(acequire,exports){function find(session,needle,dir){return search.$options.wrap=!0,search.$options.needle=needle,search.$options.backwards=-1==dir,search.find(session)}function isSamePoint(p1,p2){return p1.row==p2.row&&p1.column==p2.column}function MultiSelect(editor){editor.$onAddRange=editor.$onAddRange.bind(editor),editor.$onRemoveRange=editor.$onRemoveRange.bind(editor),editor.$onMultiSelect=editor.$onMultiSelect.bind(editor),editor.$onSingleSelect=editor.$onSingleSelect.bind(editor),exports.onSessionChange.call(editor,editor),editor.on(\"changeSession\",exports.onSessionChange.bind(editor)),editor.on(\"mousedown\",onMouseDown),editor.commands.addCommands(commands.defaultCommands),addAltCursorListeners(editor)}function addAltCursorListeners(editor){function reset(){altCursor&&(contentEl.style.cursor=\"\",altCursor=!1)}var el=editor.textInput.getElement(),altCursor=!1,contentEl=editor.renderer.content;event.addListener(el,\"keydown\",function(e){18!=e.keyCode||e.ctrlKey||e.shiftKey||e.metaKey?altCursor&&(contentEl.style.cursor=\"\"):altCursor||(contentEl.style.cursor=\"crosshair\",altCursor=!0)}),event.addListener(el,\"keyup\",reset),event.addListener(el,\"blur\",reset)}var RangeList=acequire(\"./range_list\").RangeList,Range=acequire(\"./range\").Range,Selection=acequire(\"./selection\").Selection,onMouseDown=acequire(\"./mouse/multi_select_handler\").onMouseDown,event=acequire(\"./lib/event\"),lang=acequire(\"./lib/lang\"),commands=acequire(\"./commands/multi_select_commands\");exports.commands=commands.defaultCommands.concat(commands.multiSelectCommands);var Search=acequire(\"./search\").Search,search=new Search,EditSession=acequire(\"./edit_session\").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(EditSession.prototype),function(){this.ranges=null,this.rangeList=null,this.addRange=function(range,$blockChangeEvents){if(range){if(!this.inMultiSelectMode&&0==this.rangeCount){var oldRange=this.toOrientedRange();if(this.rangeList.add(oldRange),this.rangeList.add(range),2!=this.rangeList.ranges.length)return this.rangeList.removeAll(),$blockChangeEvents||this.fromOrientedRange(range);this.rangeList.removeAll(),this.rangeList.add(oldRange),this.$onAddRange(oldRange)}range.cursor||(range.cursor=range.end);var removed=this.rangeList.add(range);return this.$onAddRange(range),removed.length&&this.$onRemoveRange(removed),this.rangeCount>1&&!this.inMultiSelectMode&&(this._emit(\"multiSelect\"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),$blockChangeEvents||this.fromOrientedRange(range)}},this.toSingleRange=function(range){range=range||this.ranges[0];var removed=this.rangeList.removeAll();removed.length&&this.$onRemoveRange(removed),range&&this.fromOrientedRange(range)},this.substractPoint=function(pos){var removed=this.rangeList.substractPoint(pos);return removed?(this.$onRemoveRange(removed),removed[0]):void 0},this.mergeOverlappingRanges=function(){var removed=this.rangeList.merge();removed.length?this.$onRemoveRange(removed):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(range){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(range),this._emit(\"addRange\",{range:range})},this.$onRemoveRange=function(removed){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var lastRange=this.rangeList.ranges.pop();removed.push(lastRange),this.rangeCount=0}for(var i=removed.length;i--;){var index=this.ranges.indexOf(removed[i]);this.ranges.splice(index,1)}this._emit(\"removeRange\",{ranges:removed}),0==this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._emit(\"singleSelect\"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),lastRange=lastRange||this.ranges[0],lastRange&&!lastRange.isEqual(this.getRange())&&this.fromOrientedRange(lastRange)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new RangeList,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeList.ranges.concat()},this.splitIntoLines=function(){if(this.rangeCount>1){var ranges=this.rangeList.ranges,lastRange=ranges[ranges.length-1],range=Range.fromPoints(ranges[0].start,lastRange.end);this.toSingleRange(),this.setSelectionRange(range,lastRange.cursor==lastRange.start)}else{var range=this.getRange(),isBackwards=this.isBackwards(),startRow=range.start.row,endRow=range.end.row;if(startRow==endRow){if(isBackwards)var start=range.end,end=range.start;else var start=range.start,end=range.end;return this.addRange(Range.fromPoints(end,end)),this.addRange(Range.fromPoints(start,start)),void 0}var rectSel=[],r=this.getLineRange(startRow,!0);r.start.column=range.start.column,rectSel.push(r);for(var i=startRow+1;endRow>i;i++)rectSel.push(this.getLineRange(i,!0));r=this.getLineRange(endRow,!0),r.end.column=range.end.column,rectSel.push(r),rectSel.forEach(this.addRange,this)}},this.toggleBlockSelection=function(){if(this.rangeCount>1){var ranges=this.rangeList.ranges,lastRange=ranges[ranges.length-1],range=Range.fromPoints(ranges[0].start,lastRange.end);this.toSingleRange(),this.setSelectionRange(range,lastRange.cursor==lastRange.start)}else{var cursor=this.session.documentToScreenPosition(this.selectionLead),anchor=this.session.documentToScreenPosition(this.selectionAnchor),rectSel=this.rectangularRangeBlock(cursor,anchor);rectSel.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(screenCursor,screenAnchor,includeEmptyLines){var rectSel=[],xBackwards=screenCursor.column\u003CscreenAnchor.column;if(xBackwards)var startColumn=screenCursor.column,endColumn=screenAnchor.column;else var startColumn=screenAnchor.column,endColumn=screenCursor.column;var yBackwards=screenCursor.row\u003CscreenAnchor.row;if(yBackwards)var startRow=screenCursor.row,endRow=screenAnchor.row;else var startRow=screenAnchor.row,endRow=screenCursor.row;0>startColumn&&(startColumn=0),0>startRow&&(startRow=0),startRow==endRow&&(includeEmptyLines=!0);for(var row=startRow;endRow>=row;row++){var range=Range.fromPoints(this.session.screenToDocumentPosition(row,startColumn),this.session.screenToDocumentPosition(row,endColumn));if(range.isEmpty()){if(docEnd&&isSamePoint(range.end,docEnd))break;var docEnd=range.end}range.cursor=xBackwards?range.start:range.end,rectSel.push(range)}if(yBackwards&&rectSel.reverse(),!includeEmptyLines){for(var end=rectSel.length-1;rectSel[end].isEmpty()&&end>0;)end--;if(end>0)for(var start=0;rectSel[start].isEmpty();)start++;for(var i=end;i>=start;i--)rectSel[i].isEmpty()&&rectSel.splice(i,1)}return rectSel}}.call(Selection.prototype);var Editor=acequire(\"./editor\").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(orientedRange){orientedRange.cursor||(orientedRange.cursor=orientedRange.end);var style=this.getSelectionStyle();return orientedRange.marker=this.session.addMarker(orientedRange,\"ace_selection\",style),this.session.$selectionMarkers.push(orientedRange),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,orientedRange},this.removeSelectionMarker=function(range){if(range.marker){this.session.removeMarker(range.marker);var index=this.session.$selectionMarkers.indexOf(range);-1!=index&&this.session.$selectionMarkers.splice(index,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(ranges){for(var markerList=this.session.$selectionMarkers,i=ranges.length;i--;){var range=ranges[i];if(range.marker){this.session.removeMarker(range.marker);var index=markerList.indexOf(range);-1!=index&&markerList.splice(index,1)}}this.session.selectionMarkerCount=markerList.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle(\"ace_multiselect\"),this.keyBinding.addKeyboardHandler(commands.keyboardHandler),this.commands.on(\"exec\",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle(\"ace_multiselect\"),this.keyBinding.removeKeyboardHandler(commands.keyboardHandler),this.commands.removeEventListener(\"exec\",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onMultiSelectExec=function(e){var command=e.command,editor=e.editor;editor.multiSelect&&(command.multiSelectAction?\"forEach\"==command.multiSelectAction?editor.forEachSelection(command,e.args):\"forEachLine\"==command.multiSelectAction?editor.forEachSelection(command,e.args,!0):\"single\"==command.multiSelectAction?(editor.exitMultiSelectMode(),command.exec(editor,e.args||{})):command.multiSelectAction(editor,e.args||{}):(command.exec(editor,e.args||{}),editor.multiSelect.addRange(editor.multiSelect.toOrientedRange()),editor.multiSelect.mergeOverlappingRanges()),e.preventDefault())},this.forEachSelection=function(cmd,args,$byLines){if(!this.inVirtualSelectionMode){var session=this.session,selection=this.selection,rangeList=selection.rangeList,reg=selection._eventRegistry;selection._eventRegistry={};var tmpSel=new Selection(session);this.inVirtualSelectionMode=!0;for(var i=rangeList.ranges.length;i--;){if($byLines)for(;i>0&&rangeList.ranges[i].start.row==rangeList.ranges[i-1].end.row;)i--;tmpSel.fromOrientedRange(rangeList.ranges[i]),this.selection=session.selection=tmpSel,cmd.exec(this,args||{}),tmpSel.toOrientedRange(rangeList.ranges[i])}tmpSel.detach(),this.selection=session.selection=selection,this.inVirtualSelectionMode=!1,selection._eventRegistry=reg,selection.mergeOverlappingRanges(),this.onCursorChange(),this.onSelectionChange()}},this.exitMultiSelectMode=function(){this.inVirtualSelectionMode||this.multiSelect.toSingleRange()},this.getCopyText=function(){var text=\"\";if(this.inMultiSelectMode){var ranges=this.multiSelect.rangeList.ranges;text=[];for(var i=0;ranges.length>i;i++)text.push(this.session.getTextRange(ranges[i]));text=text.join(this.session.getDocument().getNewLineCharacter())}else this.selection.isEmpty()||(text=this.session.getTextRange(this.getSelectionRange()));return text},this.onPaste=function(text){if(!this.$readOnly){if(this._signal(\"paste\",text),!this.inMultiSelectMode||this.inVirtualSelectionMode)return this.insert(text);var lines=text.split(/\\r\\n|\\r|\\n/),ranges=this.selection.rangeList.ranges;if(lines.length>ranges.length||2>=lines.length||!lines[1])return this.commands.exec(\"insertstring\",this,text);for(var i=ranges.length;i--;){var range=ranges[i];range.isEmpty()||this.session.remove(range),this.session.insert(range.start,lines[i])}}},this.findAll=function(needle,options,additive){options=options||{},options.needle=needle||options.needle,this.$search.set(options);var ranges=this.$search.findAll(this.session);if(!ranges.length)return 0;this.$blockScrolling+=1;var selection=this.multiSelect;additive||selection.toSingleRange(ranges[0]);for(var i=ranges.length;i--;)selection.addRange(ranges[i],!0);return this.$blockScrolling-=1,ranges.length},this.selectMoreLines=function(dir,skip){var range=this.selection.toOrientedRange(),isBackwards=range.cursor==range.end,screenLead=this.session.documentToScreenPosition(range.cursor);this.selection.$desiredColumn&&(screenLead.column=this.selection.$desiredColumn);var lead=this.session.screenToDocumentPosition(screenLead.row+dir,screenLead.column);if(range.isEmpty())var anchor=lead;else var screenAnchor=this.session.documentToScreenPosition(isBackwards?range.end:range.start),anchor=this.session.screenToDocumentPosition(screenAnchor.row+dir,screenAnchor.column);if(isBackwards){var newRange=Range.fromPoints(lead,anchor);newRange.cursor=newRange.start}else{var newRange=Range.fromPoints(anchor,lead);newRange.cursor=newRange.end\n}if(newRange.desiredColumn=screenLead.column,this.selection.inMultiSelectMode){if(skip)var toRemove=range.cursor}else this.selection.addRange(range);this.selection.addRange(newRange),toRemove&&this.selection.substractPoint(toRemove)},this.transposeSelections=function(dir){for(var session=this.session,sel=session.multiSelect,all=sel.ranges,i=all.length;i--;){var range=all[i];if(range.isEmpty()){var tmp=session.getWordRange(range.start.row,range.start.column);range.start.row=tmp.start.row,range.start.column=tmp.start.column,range.end.row=tmp.end.row,range.end.column=tmp.end.column}}sel.mergeOverlappingRanges();for(var words=[],i=all.length;i--;){var range=all[i];words.unshift(session.getTextRange(range))}0>dir?words.unshift(words.pop()):words.push(words.shift());for(var i=all.length;i--;){var range=all[i],tmp=range.clone();session.replace(range,words[i]),range.start.row=tmp.start.row,range.start.column=tmp.start.column}},this.selectMore=function(dir,skip){var session=this.session,sel=session.multiSelect,range=sel.toOrientedRange();if(range.isEmpty()){var range=session.getWordRange(range.start.row,range.start.column);range.cursor=range.end,this.multiSelect.addRange(range)}var needle=session.getTextRange(range),newRange=find(session,needle,dir);newRange&&(newRange.cursor=-1==dir?newRange.start:newRange.end,this.multiSelect.addRange(newRange)),skip&&this.multiSelect.substractPoint(range.cursor)},this.alignCursors=function(){var session=this.session,sel=session.multiSelect,ranges=sel.ranges;if(ranges.length){var row=-1,sameRowRanges=ranges.filter(function(r){return r.cursor.row==row?!0:(row=r.cursor.row,void 0)});sel.$onRemoveRange(sameRowRanges);var maxCol=0,minSpace=1/0,spaceOffsets=ranges.map(function(r){var p=r.cursor,line=session.getLine(p.row),spaceOffset=line.substr(p.column).search(/\\S/g);return-1==spaceOffset&&(spaceOffset=0),p.column>maxCol&&(maxCol=p.column),minSpace>spaceOffset&&(minSpace=spaceOffset),spaceOffset});ranges.forEach(function(r,i){var p=r.cursor,l=maxCol-p.column,d=spaceOffsets[i]-minSpace;l>d?session.insert(p,lang.stringRepeat(\" \",l-d)):session.remove(new Range(p.row,p.column,p.row,p.column-l+d)),r.start.column=r.end.column=maxCol,r.start.row=r.end.row=p.row,r.cursor=r.end}),sel.fromOrientedRange(ranges[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var range=this.selection.getRange(),fr=range.start.row,lr=range.end.row,lines=this.session.doc.removeLines(fr,lr);lines=this.$reAlignText(lines),this.session.doc.insertLines(fr,lines),range.start.column=0,range.end.column=lines[lines.length-1].length,this.selection.setRange(range)}},this.$reAlignText=function(lines){function spaces(n){return lang.stringRepeat(\" \",n)}function alignLeft(m){return m[2]?spaces(startW)+m[2]+spaces(textW-m[2].length+endW)+m[4].replace(/^([=:])\\s+/,\"$1 \"):m[0]}function alignRight(m){return m[2]?spaces(startW+textW-m[2].length)+m[2]+spaces(endW,\" \")+m[4].replace(/^([=:])\\s+/,\"$1 \"):m[0]}function unAlign(m){return m[2]?spaces(startW)+m[2]+spaces(endW)+m[4].replace(/^([=:])\\s+/,\"$1 \"):m[0]}var startW,textW,endW,isLeftAligned=!0,isRightAligned=!0;return lines.map(function(line){var m=line.match(/(\\s*)(.*?)(\\s*)([=:].*)/);return m?null==startW?(startW=m[1].length,textW=m[2].length,endW=m[3].length,m):(startW+textW+endW!=m[1].length+m[2].length+m[3].length&&(isRightAligned=!1),startW!=m[1].length&&(isLeftAligned=!1),startW>m[1].length&&(startW=m[1].length),m[2].length>textW&&(textW=m[2].length),endW>m[3].length&&(endW=m[3].length),m):[line]}).map(isLeftAligned?isRightAligned?alignRight:alignLeft:unAlign)}}).call(Editor.prototype),exports.onSessionChange=function(e){var session=e.session;session.multiSelect||(session.$selectionMarkers=[],session.selection.$initRangeList(),session.multiSelect=session.selection),this.multiSelect=session.multiSelect;var oldSession=e.oldSession;oldSession&&(oldSession.multiSelect.removeEventListener(\"addRange\",this.$onAddRange),oldSession.multiSelect.removeEventListener(\"removeRange\",this.$onRemoveRange),oldSession.multiSelect.removeEventListener(\"multiSelect\",this.$onMultiSelect),oldSession.multiSelect.removeEventListener(\"singleSelect\",this.$onSingleSelect)),session.multiSelect.on(\"addRange\",this.$onAddRange),session.multiSelect.on(\"removeRange\",this.$onRemoveRange),session.multiSelect.on(\"multiSelect\",this.$onMultiSelect),session.multiSelect.on(\"singleSelect\",this.$onSingleSelect),this.inMultiSelectMode!=session.selection.inMultiSelectMode&&(session.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},exports.MultiSelect=MultiSelect}),ace.define(\"ace/mouse/multi_select_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"],function(acequire,exports){function isSamePoint(p1,p2){return p1.row==p2.row&&p1.column==p2.column}function onMouseDown(e){var ev=e.domEvent,alt=ev.altKey,shift=ev.shiftKey,ctrl=e.getAccelKey(),button=e.getButton();if(e.editor.inMultiSelectMode&&2==button)return e.editor.textInput.onContextMenu(e.domEvent),void 0;if(!ctrl&&!alt)return 0==button&&e.editor.inMultiSelectMode&&e.editor.exitMultiSelectMode(),void 0;var editor=e.editor,selection=editor.selection,isMultiSelect=editor.inMultiSelectMode,pos=e.getDocumentPosition(),cursor=selection.getCursor(),inSelection=e.inSelection()||selection.isEmpty()&&isSamePoint(pos,cursor),mouseX=e.x,mouseY=e.y,onMouseSelection=function(e){mouseX=e.clientX,mouseY=e.clientY},blockSelect=function(){var newCursor=editor.renderer.pixelToScreenCoordinates(mouseX,mouseY),cursor=session.screenToDocumentPosition(newCursor.row,newCursor.column);isSamePoint(screenCursor,newCursor)&&isSamePoint(cursor,selection.selectionLead)||(screenCursor=newCursor,editor.selection.moveCursorToPosition(cursor),editor.selection.clearSelection(),editor.renderer.scrollCursorIntoView(),editor.removeSelectionMarkers(rectSel),rectSel=selection.rectangularRangeBlock(screenCursor,screenAnchor),rectSel.forEach(editor.addSelectionMarker,editor),editor.updateSelectionMarkers())},session=editor.session,screenAnchor=editor.renderer.pixelToScreenCoordinates(mouseX,mouseY),screenCursor=screenAnchor;if(!ctrl||shift||alt||0!=button){if(alt&&0==button){e.stop(),isMultiSelect&&!ctrl?selection.toSingleRange():!isMultiSelect&&ctrl&&selection.addRange();var rectSel=[];shift?(screenAnchor=session.documentToScreenPosition(selection.lead),blockSelect()):(selection.moveCursorToPosition(pos),selection.clearSelection());var onMouseSelectionEnd=function(){clearInterval(timerId),editor.removeSelectionMarkers(rectSel);for(var i=0;rectSel.length>i;i++)selection.addRange(rectSel[i])},onSelectionInterval=blockSelect;event.capture(editor.container,onMouseSelection,onMouseSelectionEnd);var timerId=setInterval(function(){onSelectionInterval()},20);return e.preventDefault()}}else{if(!isMultiSelect&&inSelection)return;if(!isMultiSelect){var range=selection.toOrientedRange();editor.addSelectionMarker(range)}var oldRange=selection.rangeList.rangeAtPoint(pos);editor.once(\"mouseup\",function(){var tmpSel=selection.toOrientedRange();oldRange&&tmpSel.isEmpty()&&isSamePoint(oldRange.cursor,tmpSel.cursor)?selection.substractPoint(tmpSel.cursor):(range&&(editor.removeSelectionMarker(range),selection.addRange(range)),selection.addRange(tmpSel))})}}var event=acequire(\"../lib/event\");exports.onMouseDown=onMouseDown}),ace.define(\"ace/commands/multi_select_commands\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\"],function(acequire,exports){exports.defaultCommands=[{name:\"addCursorAbove\",exec:function(editor){editor.selectMoreLines(-1)},bindKey:{win:\"Ctrl-Alt-Up\",mac:\"Ctrl-Alt-Up\"},readonly:!0},{name:\"addCursorBelow\",exec:function(editor){editor.selectMoreLines(1)},bindKey:{win:\"Ctrl-Alt-Down\",mac:\"Ctrl-Alt-Down\"},readonly:!0},{name:\"addCursorAboveSkipCurrent\",exec:function(editor){editor.selectMoreLines(-1,!0)},bindKey:{win:\"Ctrl-Alt-Shift-Up\",mac:\"Ctrl-Alt-Shift-Up\"},readonly:!0},{name:\"addCursorBelowSkipCurrent\",exec:function(editor){editor.selectMoreLines(1,!0)},bindKey:{win:\"Ctrl-Alt-Shift-Down\",mac:\"Ctrl-Alt-Shift-Down\"},readonly:!0},{name:\"selectMoreBefore\",exec:function(editor){editor.selectMore(-1)},bindKey:{win:\"Ctrl-Alt-Left\",mac:\"Ctrl-Alt-Left\"},readonly:!0},{name:\"selectMoreAfter\",exec:function(editor){editor.selectMore(1)},bindKey:{win:\"Ctrl-Alt-Right\",mac:\"Ctrl-Alt-Right\"},readonly:!0},{name:\"selectNextBefore\",exec:function(editor){editor.selectMore(-1,!0)},bindKey:{win:\"Ctrl-Alt-Shift-Left\",mac:\"Ctrl-Alt-Shift-Left\"},readonly:!0},{name:\"selectNextAfter\",exec:function(editor){editor.selectMore(1,!0)},bindKey:{win:\"Ctrl-Alt-Shift-Right\",mac:\"Ctrl-Alt-Shift-Right\"},readonly:!0},{name:\"splitIntoLines\",exec:function(editor){editor.multiSelect.splitIntoLines()},bindKey:{win:\"Ctrl-Alt-L\",mac:\"Ctrl-Alt-L\"},readonly:!0},{name:\"alignCursors\",exec:function(editor){editor.alignCursors()},bindKey:{win:\"Ctrl-Alt-A\",mac:\"Ctrl-Alt-A\"}}],exports.multiSelectCommands=[{name:\"singleSelection\",bindKey:\"esc\",exec:function(editor){editor.exitMultiSelectMode()},readonly:!0,isAvailable:function(editor){return editor&&editor.inMultiSelectMode}}];var HashHandler=acequire(\"../keyboard/hash_handler\").HashHandler;exports.keyboardHandler=new HashHandler(exports.multiSelectCommands)}),ace.define(\"ace/worker/worker_client\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/config\"],function(acequire,exports){var oop=acequire(\"../lib/oop\"),EventEmitter=acequire(\"../lib/event_emitter\").EventEmitter,config=acequire(\"../config\"),WorkerClient=function(topLevelNamespaces,mod,classname){this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),this.onError=this.onError.bind(this);var workerUrl;if(config.get(\"packaged\"))workerUrl=config.moduleUrl(mod.id,\"worker\");else{var normalizePath=this.$normalizePath;acequire.nameToUrl&&!acequire.toUrl&&(acequire.toUrl=acequire.nameToUrl),workerUrl=normalizePath(acequire.toUrl(\"ace/worker/worker.js\",null,\"_\"));var tlns={};topLevelNamespaces.forEach(function(ns){tlns[ns]=normalizePath(acequire.toUrl(ns,null,\"_\").replace(/(\\.js)?(\\?.*)?$/,\"\"))})}var workerSrc=mod.src,Blob=require(\"w3c-blob\"),blob=new Blob([workerSrc],{type:\"application/javascript\"}),blobUrl=(window.URL||window.webkitURL).createObjectURL(blob);this.$worker=new Worker(blobUrl),this.$worker.postMessage({init:!0,tlns:tlns,module:mod.id,classname:classname}),this.callbackId=1,this.callbacks={},this.$worker.onerror=this.onError,this.$worker.onmessage=this.onMessage};(function(){oop.implement(this,EventEmitter),this.onError=function(e){throw window.console&&console.log&&console.log(e),e},this.onMessage=function(e){var msg=e.data;switch(msg.type){case\"log\":window.console&&console.log&&console.log.apply(console,msg.data);break;case\"event\":this._emit(msg.name,{data:msg.data});break;case\"call\":var callback=this.callbacks[msg.id];callback&&(callback(msg.data),delete this.callbacks[msg.id])}},this.$normalizePath=function(path){return location.host?(path=path.replace(/^[a-z]+:\\/\\/[^\\/]+/,\"\"),path=location.protocol+\"//\"+location.host+(\"/\"==path.charAt(0)?\"\":location.pathname.replace(/\\/[^\\/]*$/,\"\"))+\"/\"+path.replace(/^[\\/]+/,\"\")):path},this.terminate=function(){this._emit(\"terminate\",{}),this.$worker.terminate(),this.$worker=null,this.$doc.removeEventListener(\"change\",this.changeListener),this.$doc=null},this.send=function(cmd,args){this.$worker.postMessage({command:cmd,args:args})},this.call=function(cmd,args,callback){if(callback){var id=this.callbackId++;this.callbacks[id]=callback,args.push(id)}this.send(cmd,args)},this.emit=function(event,data){try{this.$worker.postMessage({event:event,data:{data:data.data}})}catch(ex){}},this.attachToDocument=function(doc){this.$doc&&this.terminate(),this.$doc=doc,this.call(\"setValue\",[doc.getValue()]),doc.on(\"change\",this.changeListener)},this.changeListener=function(e){e.range={start:e.data.range.start,end:e.data.range.end},this.emit(\"change\",e)}}).call(WorkerClient.prototype);var UIWorkerClient=function(topLevelNamespaces,mod,classname){this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var main=null,sender=Object.create(EventEmitter),_self=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){_self.messageBuffer.push(e),main&&setTimeout(processNext)};var processNext=function(){var msg=_self.messageBuffer.shift();msg.command?main[msg.command].apply(main,msg.args):msg.event&&sender._emit(msg.event,msg.data)};sender.postMessage=function(msg){_self.onMessage({data:msg})},sender.callback=function(data,callbackId){this.postMessage({type:\"call\",id:callbackId,data:data})},sender.emit=function(name,data){this.postMessage({type:\"event\",name:name,data:data})},config.loadModule([\"worker\",mod],function(Main){for(main=new Main[classname](sender);_self.messageBuffer.length;)processNext()})};UIWorkerClient.prototype=WorkerClient.prototype,exports.UIWorkerClient=UIWorkerClient,exports.WorkerClient=WorkerClient}),ace.define(\"ace/placeholder\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/lib/oop\"],function(acequire,exports){var Range=acequire(\"./range\").Range,EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,oop=acequire(\"./lib/oop\"),PlaceHolder=function(session,length,pos,others,mainClass,othersClass){var _self=this;this.length=length,this.session=session,this.doc=session.getDocument(),this.mainClass=mainClass,this.othersClass=othersClass,this.$onUpdate=this.onUpdate.bind(this),this.doc.on(\"change\",this.$onUpdate),this.$others=others,this.$onCursorChange=function(){setTimeout(function(){_self.onCursorChange()})},this.$pos=pos;var undoStack=session.getUndoManager().$undoStack||session.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=undoStack.length,this.setup(),session.selection.on(\"changeCursor\",this.$onCursorChange)};(function(){oop.implement(this,EventEmitter),this.setup=function(){var _self=this,doc=this.doc,session=this.session,pos=this.$pos;this.pos=doc.createAnchor(pos.row,pos.column),this.markerId=session.addMarker(new Range(pos.row,pos.column,pos.row,pos.column+this.length),this.mainClass,null,!1),this.pos.on(\"change\",function(event){session.removeMarker(_self.markerId),_self.markerId=session.addMarker(new Range(event.value.row,event.value.column,event.value.row,event.value.column+_self.length),_self.mainClass,null,!1)}),this.others=[],this.$others.forEach(function(other){var anchor=doc.createAnchor(other.row,other.column);_self.others.push(anchor)}),session.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var session=this.session,_self=this;this.othersActive=!0,this.others.forEach(function(anchor){anchor.markerId=session.addMarker(new Range(anchor.row,anchor.column,anchor.row,anchor.column+_self.length),_self.othersClass,null,!1),anchor.on(\"change\",function(event){session.removeMarker(anchor.markerId),anchor.markerId=session.addMarker(new Range(event.value.row,event.value.column,event.value.row,event.value.column+_self.length),_self.othersClass,null,!1)})})}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var i=0;this.others.length>i;i++)this.session.removeMarker(this.others[i].markerId)}},this.onUpdate=function(event){var delta=event.data,range=delta.range;if(range.start.row===range.end.row&&range.start.row===this.pos.row&&!this.$updating){this.$updating=!0;var lengthDiff=\"insertText\"===delta.action?range.end.column-range.start.column:range.start.column-range.end.column;if(range.start.column>=this.pos.column&&range.start.column\u003C=this.pos.column+this.length+1){var distanceFromStart=range.start.column-this.pos.column;if(this.length+=lengthDiff,!this.session.$fromUndo){if(\"insertText\"===delta.action)for(var i=this.others.length-1;i>=0;i--){var otherPos=this.others[i],newPos={row:otherPos.row,column:otherPos.column+distanceFromStart};otherPos.row===range.start.row&&range.start.column\u003CotherPos.column&&(newPos.column+=lengthDiff),this.doc.insert(newPos,delta.text)}else if(\"removeText\"===delta.action)for(var i=this.others.length-1;i>=0;i--){var otherPos=this.others[i],newPos={row:otherPos.row,column:otherPos.column+distanceFromStart};otherPos.row===range.start.row&&range.start.column\u003CotherPos.column&&(newPos.column+=lengthDiff),this.doc.remove(new Range(newPos.row,newPos.column,newPos.row,newPos.column-lengthDiff))}range.start.column===this.pos.column&&\"insertText\"===delta.action?setTimeout(function(){this.pos.setPosition(this.pos.row,this.pos.column-lengthDiff);for(var i=0;this.others.length>i;i++){var other=this.others[i],newPos={row:other.row,column:other.column-lengthDiff};other.row===range.start.row&&range.start.column\u003Cother.column&&(newPos.column+=lengthDiff),other.setPosition(newPos.row,newPos.column)}}.bind(this),0):range.start.column===this.pos.column&&\"removeText\"===delta.action&&setTimeout(function(){for(var i=0;this.others.length>i;i++){var other=this.others[i];other.row===range.start.row&&range.start.column\u003Cother.column&&other.setPosition(other.row,other.column-lengthDiff)}}.bind(this),0)}this.pos._emit(\"change\",{value:this.pos});for(var i=0;this.others.length>i;i++)this.others[i]._emit(\"change\",{value:this.others[i]})}this.$updating=!1}},this.onCursorChange=function(event){if(!this.$updating){var pos=this.session.selection.getCursor();pos.row===this.pos.row&&pos.column>=this.pos.column&&pos.column\u003C=this.pos.column+this.length?(this.showOtherMarkers(),this._emit(\"cursorEnter\",event)):(this.hideOtherMarkers(),this._emit(\"cursorLeave\",event))}},this.detach=function(){this.session.removeMarker(this.markerId),this.hideOtherMarkers(),this.doc.removeEventListener(\"change\",this.$onUpdate),this.session.selection.removeEventListener(\"changeCursor\",this.$onCursorChange),this.pos.detach();for(var i=0;this.others.length>i;i++)this.others[i].detach();this.session.setUndoSelect(!0)},this.cancel=function(){if(-1===this.$undoStackDepth)throw Error(\"Canceling placeholders only supported with undo manager attached to session.\");for(var undoManager=this.session.getUndoManager(),undosRequired=(undoManager.$undoStack||undoManager.$undostack).length-this.$undoStackDepth,i=0;undosRequired>i;i++)undoManager.undo(!0)}}).call(PlaceHolder.prototype),exports.PlaceHolder=PlaceHolder}),ace.define(\"ace/mode/folding/fold_mode\",[\"require\",\"exports\",\"module\",\"ace/range\"],function(acequire,exports){var Range=acequire(\"../../range\").Range,FoldMode=exports.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(session,foldStyle,row){var line=session.getLine(row);return this.foldingStartMarker.test(line)?\"start\":\"markbeginend\"==foldStyle&&this.foldingStopMarker&&this.foldingStopMarker.test(line)?\"end\":\"\"},this.getFoldWidgetRange=function(){return null},this.indentationBlock=function(session,row,column){var re=/\\S/,line=session.getLine(row),startLevel=line.search(re);if(-1!=startLevel){for(var startColumn=column||line.length,maxRow=session.getLength(),startRow=row,endRow=row;maxRow>++row;){var level=session.getLine(row).search(re);if(-1!=level){if(startLevel>=level)break;endRow=row}}if(endRow>startRow){var endColumn=session.getLine(endRow).length;return new Range(startRow,startColumn,endRow,endColumn)}}},this.openingBracketBlock=function(session,bracket,row,column,typeRe){var start={row:row,column:column+1},end=session.$findClosingBracket(bracket,start,typeRe);if(end){var fw=session.foldWidgets[end.row];return null==fw&&(fw=this.getFoldWidget(session,end.row)),\"start\"==fw&&end.row>start.row&&(end.row--,end.column=session.getLine(end.row).length),Range.fromPoints(start,end)}},this.closingBracketBlock=function(session,bracket,row,column){var end={row:row,column:column},start=session.$findOpeningBracket(bracket,end);return start?(start.column++,end.column--,Range.fromPoints(start,end)):void 0}}).call(FoldMode.prototype)}),ace.define(\"ace/theme/textmate\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"],function(acequire,exports){exports.isDark=!1,exports.cssClass=\"ace-tm\",exports.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm .ace_scroller {background-color: #FFFFFF;}.ace-tm .ace_cursor {border-left: 2px solid black;}.ace-tm .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_markup.ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_markup.ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;border-radius: 2px;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;}';var dom=acequire(\"../lib/dom\");dom.importCssString(exports.cssText,exports.cssClass)}),function(){ace.acequire([\"ace/ace\"],function(a){a&&a.config.init(),window.ace||(window.ace={});for(var key in a)a.hasOwnProperty(key)&&(ace[key]=a[key])})}(),module.exports=window.ace.acequire(\"ace/ace\")})()},{\"w3c-blob\":30}],31:[function(require,module,exports){var Object_keys=function(obj){if(Object.keys)return Object.keys(obj);var res=[];for(var key in obj)res.push(key);return res},forEach=function(xs,fn){if(xs.forEach)return xs.forEach(fn);for(var i=0;xs.length>i;i++)fn(xs[i],i,xs)},Script=exports.Script=function NodeScript(code){return this instanceof Script?(this.code=code,void 0):new Script(code)};Script.prototype.runInNewContext=function(context){context||(context={});var iframe=document.createElement(\"iframe\");iframe.style||(iframe.style={}),iframe.style.display=\"none\",document.body.appendChild(iframe);var win=iframe.contentWindow;forEach(Object_keys(context),function(key){win[key]=context[key]}),!win.eval&&win.execScript&&win.execScript(\"null\");var res=win.eval(this.code);return forEach(Object_keys(win),function(key){context[key]=win[key]}),document.body.removeChild(iframe),res},Script.prototype.runInThisContext=function(){return eval(this.code)},Script.prototype.runInContext=function(context){return this.runInNewContext(context)},forEach(Object_keys(Script.prototype),function(name){exports[name]=Script[name]=function(code){var s=Script(code);return s[name].apply(s,[].slice.call(arguments,1))}}),exports.createScript=function(code){return exports.Script(code)},exports.createContext=Script.createContext=function(context){var copy={};return\"object\"==typeof context&&forEach(Object_keys(context),function(key){copy[key]=context[key]}),copy}},{}],24:[function(require,module){\"use strict\";function Terminal(opts){if(opts=opts||{},!(this instanceof Terminal))return new Terminal(opts);this.cols=opts.cols||500,this.rows=opts.rows||500,this.ybase=0,this.ydisp=0,this.x=0,this.y=0,this.cursorState=0,this.cursorHidden=!1,this.convertEol=!1,this.state=states.normal,this.queue=\"\",this.scrollTop=0,this.scrollBottom=this.rows-1,this.applicationKeypad=!1,this.originMode=!1,this.insertMode=!1,this.wraparoundMode=!1,this.normal=null,this.charset=null,this.gcharset=null,this.glevel=0,this.charsets=[null],this.element,this.children,this.refreshStart,this.refreshEnd,this.savedX,this.savedY,this.savedCols,this.readable=!0,this.writable=!0,this.defAttr=131840,this.curAttr=this.defAttr,this.params=[],this.currentParam=0,this.prefix=\"\",this.postfix=\"\",this.lines=[];for(var i=this.rows;i--;)this.lines.push(this.blankLine());this.tabs,this.setupStops()}var states=require(\"./lib/states\");module.exports=Terminal,require(\"./lib/colors\")(Terminal),require(\"./lib/options\")(Terminal),require(\"./lib/open\")(Terminal),require(\"./lib/destroy\")(Terminal),require(\"./lib/refresh\")(Terminal),require(\"./lib/write\")(Terminal),require(\"./lib/setgLevel\"),require(\"./lib/setgCharset\"),require(\"./lib/debug\")(Terminal),require(\"./lib/stops\")(Terminal),require(\"./lib/erase\")(Terminal),require(\"./lib/blankLine\")(Terminal),require(\"./lib/range\")(Terminal),require(\"./lib/util\")(Terminal),require(\"./lib/esc/index.js\")(Terminal),require(\"./lib/esc/reset.js\")(Terminal),require(\"./lib/esc/tabSet.js\")(Terminal),require(\"./lib/csi/charAttributes\")(Terminal),require(\"./lib/csi/insert-delete\")(Terminal),require(\"./lib/csi/position\")(Terminal),require(\"./lib/csi/cursor\")(Terminal),require(\"./lib/csi/repeatPrecedingCharacter\")(Terminal),require(\"./lib/csi/tabClear\")(Terminal),require(\"./lib/csi/softReset\")(Terminal),require(\"./lib/charsets.js\")(Terminal)},{\"./lib/esc/index.js\":32,\"./lib/esc/reset.js\":33,\"./lib/esc/tabSet.js\":34,\"./lib/charsets.js\":35,\"./lib/states\":36,\"./lib/colors\":37,\"./lib/options\":38,\"./lib/open\":39,\"./lib/destroy\":40,\"./lib/refresh\":41,\"./lib/write\":42,\"./lib/setgLevel\":43,\"./lib/setgCharset\":44,\"./lib/debug\":45,\"./lib/stops\":46,\"./lib/erase\":47,\"./lib/blankLine\":48,\"./lib/range\":49,\"./lib/util\":50,\"./lib/csi/charAttributes\":51,\"./lib/csi/insert-delete\":52,\"./lib/csi/position\":53,\"./lib/csi/cursor\":54,\"./lib/csi/repeatPrecedingCharacter\":55,\"./lib/csi/tabClear\":56,\"./lib/csi/softReset\":57}],25:[function(require,module,exports){(function(process){function through(write,end){function drain(){for(;buffer.length&&!stream.paused;){var data=buffer.shift();if(null===data)return stream.emit(\"end\");stream.emit(\"data\",data)}}function _end(){stream.writable=!1,end.call(stream),stream.readable||stream.destroy()}write=write||function(data){this.queue(data)},end=end||function(){this.queue(null)};var ended=!1,destroyed=!1,buffer=[],stream=new Stream;return stream.readable=stream.writable=!0,stream.paused=!1,stream.write=function(data){return write.call(this,data),!stream.paused},stream.queue=stream.push=function(data){return buffer.push(data),drain(),stream},stream.on(\"end\",function(){stream.readable=!1,stream.writable||process.nextTick(function(){stream.destroy()})}),stream.end=function(data){return ended?void 0:(ended=!0,arguments.length&&stream.write(data),_end(),stream)},stream.destroy=function(){return destroyed?void 0:(destroyed=!0,ended=!0,buffer.length=0,stream.writable=stream.readable=!1,stream.emit(\"close\"),stream)},stream.pause=function(){return stream.paused?void 0:(stream.paused=!0,stream.emit(\"pause\"),stream)},stream.resume=function(){return stream.paused&&(stream.paused=!1),drain(),stream.paused||stream.emit(\"drain\"),stream},stream}var Stream=require(\"stream\");exports=module.exports=through,through.through=through})(require(\"__browserify_process\"))},{stream:58,__browserify_process:16}],30:[function(require,module){(function(global){function get_blob(){if(global.Blob)try{return new Blob([\"asdf\"],{type:\"text/plain\"}),Blob}catch(err){}var Builder=global.BlobBuilder;return\"function\"!=typeof Builder&&(Builder=global.WebKitBlobBuilder||global.MozBlobBuilder||global.MSBlobBuilder),function(parts,bag){var builder=new Builder,endings=bag.endings,type=bag.type;if(endings)for(var i=0,len=parts.length;len>i;++i)builder.append(parts[i],endings);else for(var i=0,len=parts.length;len>i;++i)builder.append(parts[i]);return type?builder.getBlob(type):builder.getBlob()}}module.exports=get_blob()})(window)},{}],33:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.reset=function(){Terminal.call(this,this.cols,this.rows),this.refresh(0,this.rows-1)}}},{}],35:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.charsets={},Terminal.charsets.SCLD={\"`\":\"ā—†\",a:\"ā–’\",b:\"\t\",c:\"\\f\",d:\"\\r\",e:\"\\n\",f:\"°\",g:\"±\",h:\"␤\",i:\"\u000b\",j:\"ā”˜\",k:\"┐\",l:\"ā”Œ\",m:\"ā””\",n:\"┼\",o:\"āŽŗ\",p:\"āŽ»\",q:\"─\",r:\"āŽ¼\",s:\"āŽ½\",t:\"ā”œ\",u:\"┤\",v:\"┓\",w:\"┬\",x:\"│\",y:\"≤\",z:\"≄\",\"{\":\"Ļ€\",\"|\":\"≠\",\"}\":\"Ā£\",\"~\":\"Ā·\"},Terminal.charsets.UK=null,Terminal.charsets.US=null,Terminal.charsets.Dutch=null,Terminal.charsets.Finnish=null,Terminal.charsets.French=null,Terminal.charsets.FrenchCanadian=null,Terminal.charsets.German=null,Terminal.charsets.Italian=null,Terminal.charsets.NorwegianDanish=null,Terminal.charsets.Spanish=null,Terminal.charsets.Swedish=null,Terminal.charsets.Swiss=null,Terminal.charsets.ISOLatin=null}},{}],36:[function(require,module){\"use strict\";module.exports={normal:0,escaped:1,csi:2,osc:3,charset:4,dcs:5,ignore:6}},{}],37:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.colors=[\"#2e3436\",\"#cc0000\",\"#4e9a06\",\"#c4a000\",\"#3465a4\",\"#75507b\",\"#06989a\",\"#d3d7cf\",\"#555753\",\"#ef2929\",\"#8ae234\",\"#fce94f\",\"#729fcf\",\"#ad7fa8\",\"#34e2e2\",\"#eeeeec\"],Terminal.colors=function(){function out(r,g,b){colors.push(\"#\"+hex(r)+hex(g)+hex(b))}function hex(c){return c=c.toString(16),2>c.length?\"0\"+c:c}var i,colors=Terminal.colors,r=[0,95,135,175,215,255];for(i=0;216>i;i++)out(r[0|i/36%6],r[0|i/6%6],r[i%6]);for(i=0;24>i;i++)r=8+10*i,out(r,r,r);return colors}(),Terminal.defaultColors={bg:\"#000000\",fg:\"#f0f0f0\"},Terminal.colors[256]=Terminal.defaultColors.bg,Terminal.colors[257]=Terminal.defaultColors.fg}},{}],38:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.termName=\"xterm\",Terminal.geometry=[80,24],Terminal.cursorBlink=!0,Terminal.visualBell=!1,Terminal.popOnBell=!1,Terminal.scrollback=1e3,Terminal.screenKeys=!1,Terminal.programFeatures=!1,Terminal.debug=!1}},{}],39:[function(require,module){\"use strict\";function isBoldBroken(){var el=document.createElement(\"span\");el.innerHTML=\"hello world\",document.body.appendChild(el);var w1=el.scrollWidth;el.style.fontWeight=\"bold\";var w2=el.scrollWidth;return document.body.removeChild(el),w1!==w2}module.exports=function(Terminal){Terminal.prototype.open=function(){var div,i=0;for(this.element=document.createElement(\"div\"),this.element.className=\"terminal\",this.children=[];this.rows>i;i++)div=document.createElement(\"div\"),this.element.appendChild(div),this.children.push(div);this.refresh(0,this.rows-1),null===Terminal.brokenBold&&(Terminal.brokenBold=isBoldBroken()),this.element.style.backgroundColor=Terminal.defaultColors.bg,this.element.style.color=Terminal.defaultColors.fg}}},{}],40:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.destroy=function(){this.readable=!1,this.writable=!1,this._events={},this.handler=function(){},this.write=function(){}}}},{}],41:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.refresh=function(start,end){var x,y,i,line,out,ch,width,data,attr,fgColor,bgColor,flags,row,parent;\nfor(width=this.cols,y=start;end>=y;y++){if(row=y+this.ydisp,line=this.lines[row],!line)return this.reset();for(out=\"\",x=y===this.y&&this.cursorState&&this.ydisp===this.ybase&&!this.cursorHidden?this.x:-1,attr=this.defAttr,i=0;width>i;i++){switch(data=line[i][0],ch=line[i][1],i===x&&(data=-1),data!==attr&&(attr!==this.defAttr&&(out+=\"\u003C/span>\"),data!==this.defAttr&&(-1===data?out+='\u003Cspan class=\"reverse-video\">':(out+='\u003Cspan style=\"',bgColor=511&data,fgColor=511&data>>9,flags=data>>18,1&flags&&(Terminal.brokenBold||(out+=\"font-weight:bold;\"),8>fgColor&&(fgColor+=8)),2&flags&&(out+=\"text-decoration:underline;\"),256!==bgColor&&(out+=\"background-color:\"+Terminal.colors[bgColor]+\";\"),257!==fgColor&&(out+=\"color:\"+Terminal.colors[fgColor]+\";\"),out+='\">'))),ch){case\"&\":out+=\"&\";break;case\"\u003C\":out+=\"\u003C\";break;case\">\":out+=\">\";break;default:out+=\" \">=ch?\" \":ch}attr=data}attr!==this.defAttr&&(out+=\"\u003C/span>\"),this.children[y].innerHTML=out}parent&&parent.appendChild(this.element)}}},{}],43:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.setgLevel=function(g){this.glevel=g,this.charset=this.charsets[g]}}},{}],44:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.setgCharset=function(g,charset){this.charsets[g]=charset,this.glevel===g&&(this.charset=charset)}}},{}],45:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.log=function(){if(Terminal.debug&&window.console&&window.console.log){var args=Array.prototype.slice.call(arguments);window.console.log.apply(window.console,args)}},Terminal.prototype.error=function(){if(Terminal.debug&&window.console&&window.console.error){var args=Array.prototype.slice.call(arguments);window.console.error.apply(window.console,args)}}}},{}],47:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.eraseRight=function(x,y){for(var line=this.lines[this.ybase+y],ch=[this.curAttr,\" \"];this.cols>x;x++)line[x]=ch;this.updateRange(y)},Terminal.prototype.eraseLeft=function(x,y){var line=this.lines[this.ybase+y],ch=[this.curAttr,\" \"];for(x++;x--;)line[x]=ch;this.updateRange(y)},Terminal.prototype.eraseLine=function(y){this.eraseRight(0,y)},Terminal.prototype.eraseInDisplay=function(params){var j;switch(params[0]){case 0:for(this.eraseRight(this.x,this.y),j=this.y+1;this.rows>j;j++)this.eraseLine(j);break;case 1:for(this.eraseLeft(this.x,this.y),j=this.y;j--;)this.eraseLine(j);break;case 2:for(j=this.rows;j--;)this.eraseLine(j);break;case 3:}},Terminal.prototype.eraseInLine=function(params){switch(params[0]){case 0:this.eraseRight(this.x,this.y);break;case 1:this.eraseLeft(this.x,this.y);break;case 2:this.eraseLine(this.y)}}}},{}],46:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.setupStops=function(i){for(null!=i?this.tabs[i]||(i=this.prevStop(i)):(this.tabs={},i=0);this.cols>i;i+=8)this.tabs[i]=!0},Terminal.prototype.prevStop=function(x){for(null==x&&(x=this.x);!this.tabs[--x]&&x>0;);return x>=this.cols?this.cols-1:0>x?0:x},Terminal.prototype.nextStop=function(x){for(null==x&&(x=this.x);!this.tabs[++x]&&this.cols>x;);return x>=this.cols?this.cols-1:0>x?0:x}}},{}],48:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.blankLine=function(cur){for(var attr=cur?this.curAttr:this.defAttr,ch=[attr,\" \"],line=[],i=0;this.cols>i;i++)line[i]=ch;return line}}},{}],49:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.updateRange=function(y){this.refreshStart>y&&(this.refreshStart=y),y>this.refreshEnd&&(this.refreshEnd=y)},Terminal.prototype.maxRange=function(){this.refreshStart=0,this.refreshEnd=this.rows-1}}},{}],50:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.ch=function(cur){return cur?[this.curAttr,\" \"]:[this.defAttr,\" \"]},Terminal.prototype.is=function(term){var name=this.termName||Terminal.termName;return 0===(name+\"\").indexOf(term)}}},{}],51:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.charAttributes=function(params){for(var bg,fg,p,l=params.length,i=0;l>i;i++)if(p=params[i],p>=30&&37>=p)this.curAttr=-261633&this.curAttr|p-30\u003C\u003C9;else if(p>=40&&47>=p)this.curAttr=-512&this.curAttr|p-40;else if(p>=90&&97>=p)p+=8,this.curAttr=-261633&this.curAttr|p-90\u003C\u003C9;else if(p>=100&&107>=p)p+=8,this.curAttr=-512&this.curAttr|p-100;else if(0===p)this.curAttr=this.defAttr;else if(1===p)this.curAttr=this.curAttr|1\u003C\u003C18;else if(4===p)this.curAttr=this.curAttr|2\u003C\u003C18;else if(7===p||27===p){if(7===p){if(4&this.curAttr>>18)continue;this.curAttr=this.curAttr|4\u003C\u003C18}else if(27===p){if(4&~(this.curAttr>>18))continue;this.curAttr=-1048577&this.curAttr}bg=511&this.curAttr,fg=511&this.curAttr>>9,this.curAttr=-262144&this.curAttr|(bg\u003C\u003C9|fg)}else if(22===p)this.curAttr=-262145&this.curAttr;else if(24===p)this.curAttr=-524289&this.curAttr;else if(39===p)this.curAttr=-261633&this.curAttr,this.curAttr=this.curAttr|(511&this.defAttr>>9)\u003C\u003C9;else if(49===p)this.curAttr=-512&this.curAttr,this.curAttr=this.curAttr|511&this.defAttr;else if(38===p){if(5!==params[i+1])continue;i+=2,p=255¶ms[i],this.curAttr=-261633&this.curAttr|p\u003C\u003C9}else if(48===p){if(5!==params[i+1])continue;i+=2,p=255¶ms[i],this.curAttr=-512&this.curAttr|p}}}},{}],52:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.insertChars=function(params){var param,row,j,ch;for(param=params[0],1>param&&(param=1),row=this.y+this.ybase,j=this.x,ch=[this.curAttr,\" \"];param--&&this.cols>j;)this.lines[row].splice(j++,0,ch),this.lines[row].pop()},Terminal.prototype.insertLines=function(params){var param,row,j;for(param=params[0],1>param&&(param=1),row=this.y+this.ybase,j=this.rows-1-this.scrollBottom,j=this.rows-1+this.ybase-j+1;param--;)this.lines.splice(row,0,this.blankLine(!0)),this.lines.splice(j,1);this.updateRange(this.y),this.updateRange(this.scrollBottom)},Terminal.prototype.deleteLines=function(params){var param,row,j;for(param=params[0],1>param&&(param=1),row=this.y+this.ybase,j=this.rows-1-this.scrollBottom,j=this.rows-1+this.ybase-j;param--;)this.lines.splice(j+1,0,this.blankLine(!0)),this.lines.splice(row,1);this.updateRange(this.y),this.updateRange(this.scrollBottom)},Terminal.prototype.deleteChars=function(params){var param,row,ch;for(param=params[0],1>param&&(param=1),row=this.y+this.ybase,ch=[this.curAttr,\" \"];param--;)this.lines[row].splice(this.x,1),this.lines[row].push(ch)},Terminal.prototype.eraseChars=function(params){var param,row,j,ch;for(param=params[0],1>param&&(param=1),row=this.y+this.ybase,j=this.x,ch=[this.curAttr,\" \"];param--&&this.cols>j;)this.lines[row][j++]=ch}}},{}],53:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.charPosAbsolute=function(params){var param=params[0];1>param&&(param=1),this.x=param-1,this.x>=this.cols&&(this.x=this.cols-1)},Terminal.prototype.HPositionRelative=function(params){var param=params[0];1>param&&(param=1),this.x+=param,this.x>=this.cols&&(this.x=this.cols-1)},Terminal.prototype.linePosAbsolute=function(params){var param=params[0];1>param&&(param=1),this.y=param-1,this.y>=this.rows&&(this.y=this.rows-1)},Terminal.prototype.VPositionRelative=function(params){var param=params[0];1>param&&(param=1),this.y+=param,this.y>=this.rows&&(this.y=this.rows-1)},Terminal.prototype.HVPosition=function(params){1>params[0]&&(params[0]=1),1>params[1]&&(params[1]=1),this.y=params[0]-1,this.y>=this.rows&&(this.y=this.rows-1),this.x=params[1]-1,this.x>=this.cols&&(this.x=this.cols-1)}}},{}],54:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.saveCursor=function(){this.savedX=this.x,this.savedY=this.y},Terminal.prototype.restoreCursor=function(){this.x=this.savedX||0,this.y=this.savedY||0},Terminal.prototype.cursorUp=function(params){var param=params[0];1>param&&(param=1),this.y-=param,0>this.y&&(this.y=0)},Terminal.prototype.cursorDown=function(params){var param=params[0];1>param&&(param=1),this.y+=param,this.y>=this.rows&&(this.y=this.rows-1)},Terminal.prototype.cursorForward=function(params){var param=params[0];1>param&&(param=1),this.x+=param,this.x>=this.cols&&(this.x=this.cols-1)},Terminal.prototype.cursorBackward=function(params){var param=params[0];1>param&&(param=1),this.x-=param,0>this.x&&(this.x=0)},Terminal.prototype.cursorPos=function(params){var row,col;row=params[0]-1,col=params.length>=2?params[1]-1:0,0>row?row=0:row>=this.rows&&(row=this.rows-1),0>col?col=0:col>=this.cols&&(col=this.cols-1),this.x=col,this.y=row},Terminal.prototype.cursorNextLine=function(params){var param=params[0];1>param&&(param=1),this.y+=param,this.y>=this.rows&&(this.y=this.rows-1),this.x=0},Terminal.prototype.cursorPrecedingLine=function(params){var param=params[0];1>param&&(param=1),this.y-=param,0>this.y&&(this.y=0),this.x=0},Terminal.prototype.cursorCharAbsolute=function(params){var param=params[0];1>param&&(param=1),this.x=param-1},Terminal.prototype.cursorForwardTab=function(params){for(var param=params[0]||1;param--;)this.x=this.nextStop()},Terminal.prototype.cursorBackwardTab=function(params){for(var param=params[0]||1;param--;)this.x=this.prevStop()}}},{}],55:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.repeatPrecedingCharacter=function(params){for(var param=params[0]||1,line=this.lines[this.ybase+this.y],ch=line[this.x-1]||[this.defAttr,\" \"];param--;)line[this.x++]=ch}}},{}],56:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.tabClear=function(params){var param=params[0];0>=param?delete this.tabs[this.x]:3===param&&(this.tabs={})}}},{}],57:[function(require,module){\"use strict\";module.exports=function(Terminal){Terminal.prototype.softReset=function(){this.cursorHidden=!1,this.insertMode=!1,this.originMode=!1,this.wraparoundMode=!1,this.applicationKeypad=!1,this.scrollTop=0,this.scrollBottom=this.rows-1,this.curAttr=this.defAttr,this.x=this.y=0,this.charset=null,this.glevel=0,this.charsets=[null]}}},{}],58:[function(require,module){function Stream(){events.EventEmitter.call(this)}var events=require(\"events\"),util=require(\"util\");util.inherits(Stream,events.EventEmitter),module.exports=Stream,Stream.Stream=Stream,Stream.prototype.pipe=function(dest,options){function ondata(chunk){dest.writable&&!1===dest.write(chunk)&&source.pause&&source.pause()}function ondrain(){source.readable&&source.resume&&source.resume()}function onend(){didOnEnd||(didOnEnd=!0,dest._pipeCount--,cleanup(),dest._pipeCount>0||dest.end())}function onclose(){didOnEnd||(didOnEnd=!0,dest._pipeCount--,cleanup(),dest._pipeCount>0||dest.destroy())}function onerror(er){if(cleanup(),0===this.listeners(\"error\").length)throw er}function cleanup(){source.removeListener(\"data\",ondata),dest.removeListener(\"drain\",ondrain),source.removeListener(\"end\",onend),source.removeListener(\"close\",onclose),source.removeListener(\"error\",onerror),dest.removeListener(\"error\",onerror),source.removeListener(\"end\",cleanup),source.removeListener(\"close\",cleanup),dest.removeListener(\"end\",cleanup),dest.removeListener(\"close\",cleanup)}var source=this;source.on(\"data\",ondata),dest.on(\"drain\",ondrain),dest._isStdio||options&&options.end===!1||(dest._pipeCount=dest._pipeCount||0,dest._pipeCount++,source.on(\"end\",onend),source.on(\"close\",onclose));var didOnEnd=!1;return source.on(\"error\",onerror),dest.on(\"error\",onerror),source.on(\"end\",cleanup),source.on(\"close\",cleanup),dest.on(\"end\",cleanup),dest.on(\"close\",cleanup),dest.emit(\"pipe\",source),dest}},{events:15,util:6}],59:[function(require,module,exports){\"use strict\";var vm=require(\"vm\");exports.createCtx=function(sandbox){return vm.createContext(sandbox)},exports.runInCtx=function(code,ctx){return vm.runInContext(code,ctx)}},{vm:31}],60:[function(require,module){\"use strict\";module.exports=function(arr){return arr.filter(function(k){return!filterOut.hasOwnProperty(k)})};var filterOuts=[\"ArrayBuffer\",\"Attr\",\"BeforeLoadEvent\",\"Blob\",\"CDATASection\",\"CSSCharsetRule\",\"CSSImportRule\",\"CSSMediaRule\",\"CSSPageRule\",\"CSSPrimitiveValue\",\"CSSRuleList\",\"CSSStyleDeclaration\",\"CSSStyleSheet\",\"CSSValue\",\"CanvasGradient\",\"ClientRectList\",\"Clipboard\",\"CompositionEvent\",\"Counter\",\"DOMException\",\"DOMParser\",\"DOMStringMap\",\"DOMTokenList\",\"Document\",\"DocumentFragment\",\"DocumentType\",\"Element\",\"ErrorEvent\",\"Event\",\"EventSource\",\"File\",\"FileError\",\"FileList\",\"Float32Array\",\"HTMLAllCollection\",\"HTMLAreaElement\",\"HTMLBRElement\",\"HTMLButtonElement\",\"HTMLCanvasElement\",\"HTMLCollection\",\"HTMLDListElement\",\"HTMLDirectoryElement\",\"HTMLDivElement\",\"HTMLFormElement\",\"HTMLFrameElement\",\"HTMLHRElement\",\"HTMLIFrameElement\",\"HTMLImageElement\",\"HTMLInputElement\",\"HTMLLinkElement\",\"HTMLMapElement\",\"HTMLMediaElement\",\"HTMLMenuElement\",\"HTMLMeterElement\",\"HTMLOptGroupElement\",\"HTMLParamElement\",\"HTMLProgressElement\",\"HTMLQuoteElement\",\"HTMLSelectElement\",\"HTMLTableCaptionElement\",\"HTMLTableColElement\",\"HTMLTableSectionElement\",\"HTMLUListElement\",\"HTMLUnknownElement\",\"HashChangeEvent\",\"ImageData\",\"Int16Array\",\"Int8Array\",\"MediaController\",\"MediaError\",\"MediaList\",\"MessageChannel\",\"MimeType\",\"MutationEvent\",\"NamedNodeMap\",\"NodeFilter\",\"Notation\",\"OverflowEvent\",\"Plugin\",\"PluginArray\",\"PopStateEvent\",\"RGBColor\",\"Range\",\"Rect\",\"SQLException\",\"SVGAltGlyphItemElement\",\"SVGAnimateColorElement\",\"SVGAnimatedAngle\",\"SVGAnimatedEnumeration\",\"SVGAnimatedLength\",\"SVGAnimatedLengthList\",\"SVGAnimatedNumberList\",\"SVGAnimatedRect\",\"SVGAnimatedString\",\"SVGAnimatedTransformList\",\"SVGClipPathElement\",\"SVGDefsElement\",\"SVGElementInstanceList\",\"SVGEllipseElement\",\"SVGException\",\"SVGFEComponentTransferElement\",\"SVGFEConvolveMatrixElement\",\"SVGFEDiffuseLightingElement\",\"SVGFEDistantLightElement\",\"SVGFEFloodElement\",\"SVGFEFuncBElement\",\"SVGFEFuncGElement\",\"SVGFEFuncRElement\",\"SVGFEGaussianBlurElement\",\"SVGFEImageElement\",\"SVGFEMergeNodeElement\",\"SVGFEOffsetElement\",\"SVGFESpecularLightingElement\",\"SVGFilterElement\",\"SVGFontElement\",\"SVGFontFaceNameElement\",\"SVGFontFaceUriElement\",\"SVGGlyphElement\",\"SVGGlyphRefElement\",\"SVGGradientElement\",\"SVGHKernElement\",\"SVGLengthList\",\"SVGLinearGradientElement\",\"SVGMarkerElement\",\"SVGMatrix\",\"SVGNumber\",\"SVGPaint\",\"SVGPathSegArcAbs\",\"SVGPathSegArcRel\",\"SVGPathSegCurvetoCubicAbs\",\"SVGPathSegCurvetoCubicSmoothAbs\",\"SVGPathSegCurvetoCubicSmoothRel\",\"SVGPathSegCurvetoQuadraticRel\",\"SVGPathSegCurvetoQuadraticSmoothAbs\",\"SVGPathSegCurvetoQuadraticSmoothRel\",\"SVGPathSegLinetoHorizontalRel\",\"SVGPathSegLinetoVerticalRel\",\"SVGPathSegList\",\"SVGPathSegMovetoAbs\",\"SVGPatternElement\",\"SVGPointList\",\"SVGPolylineElement\",\"SVGPreserveAspectRatio\",\"SVGRectElement\",\"SVGSetElement\",\"SVGStopElement\",\"SVGStringList\",\"SVGSymbolElement\",\"SVGTSpanElement\",\"SVGTextPathElement\",\"SVGTransformList\",\"SVGZoomEvent\",\"Selection\",\"Storage\",\"StorageEvent\",\"TextEvent\",\"TextMetrics\",\"TextTrackCueList\",\"UIEvent\",\"Uint32Array\",\"Uint8Array\",\"Uint8ClampedArray\",\"WebGLActiveInfo\",\"WebGLProgram\",\"WebGLRenderbuffer\",\"WebGLRenderingContext\",\"WebGLShader\",\"WebKitAnimationEvent\",\"WebKitCSSFilterValue\",\"WebKitCSSKeyframeRule\",\"WebKitCSSTransformValue\",\"WebKitPoint\",\"WebKitTransitionEvent\",\"Window\",\"Worker\",\"XMLDocument\",\"XMLHttpRequest\",\"XMLHttpRequestException\",\"XPathEvaluator\",\"XPathResult\",\"clientInformation\",\"console\",\"exports\",\"frameElement\",\"frames\",\"history\",\"localStorage\",\"location\",\"locationbar\",\"menubar\",\"navigator\",\"onbeforeunload\",\"onblur\",\"oncanplaythrough\",\"onclick\",\"ondragenter\",\"ondragleave\",\"ondragover\",\"ondragstart\",\"ondrop\",\"ondurationchange\",\"onemptied\",\"onerror\",\"onkeydown\",\"onkeypress\",\"onloadeddata\",\"onloadstart\",\"onmessage\",\"onmouseout\",\"onmouseover\",\"onoffline\",\"ononline\",\"onplay\",\"onplaying\",\"onprogress\",\"onratechange\",\"onscroll\",\"onsearch\",\"onselect\",\"onsuspend\",\"ontimeupdate\",\"onwebkittransitionend\",\"opener\",\"scrollbars\",\"styleMedia\",\"toolbar\",\"webkitAudioContext\",\"webkitAudioPannerNode\",\"webkitURL\",\"Audio\",\"AudioProcessingEvent\",\"CSSFontFaceRule\",\"CSSRule\",\"CSSStyleRule\",\"CSSValueList\",\"CanvasPattern\",\"CanvasRenderingContext2D\",\"CharacterData\",\"ClientRect\",\"CloseEvent\",\"Comment\",\"CustomEvent\",\"DOMImplementation\",\"DOMSettableTokenList\",\"DOMStringList\",\"DataView\",\"Entity\",\"EntityReference\",\"EventException\",\"FileReader\",\"Float64Array\",\"FormData\",\"HTMLAnchorElement\",\"HTMLAppletElement\",\"HTMLAudioElement\",\"HTMLBaseElement\",\"HTMLBaseFontElement\",\"HTMLBodyElement\",\"HTMLDocument\",\"HTMLElement\",\"HTMLEmbedElement\",\"HTMLFieldSetElement\",\"HTMLFontElement\",\"HTMLFrameSetElement\",\"HTMLHeadElement\",\"HTMLHeadingElement\",\"HTMLHtmlElement\",\"HTMLKeygenElement\",\"HTMLLIElement\",\"HTMLLabelElement\",\"HTMLLegendElement\",\"HTMLMarqueeElement\",\"HTMLMetaElement\",\"HTMLModElement\",\"HTMLOListElement\",\"HTMLObjectElement\",\"HTMLOptionElement\",\"HTMLOutputElement\",\"HTMLParagraphElement\",\"HTMLPreElement\",\"HTMLScriptElement\",\"HTMLSourceElement\",\"HTMLSpanElement\",\"HTMLStyleElement\",\"HTMLTableCellElement\",\"HTMLTableElement\",\"HTMLTableRowElement\",\"HTMLTextAreaElement\",\"HTMLTitleElement\",\"HTMLTrackElement\",\"HTMLVideoElement\",\"Image\",\"Int32Array\",\"KeyboardEvent\",\"MessageEvent\",\"MessagePort\",\"MimeTypeArray\",\"MouseEvent\",\"Node\",\"NodeList\",\"OfflineAudioCompletionEvent\",\"Option\",\"PageTransitionEvent\",\"ProcessingInstruction\",\"ProgressEvent\",\"RangeException\",\"SVGAElement\",\"SVGAltGlyphDefElement\",\"SVGAltGlyphElement\",\"SVGAngle\",\"SVGAnimateElement\",\"SVGAnimateMotionElement\",\"SVGAnimateTransformElement\",\"SVGAnimatedBoolean\",\"SVGAnimatedInteger\",\"SVGAnimatedNumber\",\"SVGAnimatedPreserveAspectRatio\",\"SVGCircleElement\",\"SVGColor\",\"SVGComponentTransferFunctionElement\",\"SVGCursorElement\",\"SVGDescElement\",\"SVGDocument\",\"SVGElement\",\"SVGElementInstance\",\"SVGFEBlendElement\",\"SVGFEColorMatrixElement\",\"SVGFECompositeElement\",\"SVGFEDisplacementMapElement\",\"SVGFEDropShadowElement\",\"SVGFEFuncAElement\",\"SVGFEMergeElement\",\"SVGFEMorphologyElement\",\"SVGFEPointLightElement\",\"SVGFESpotLightElement\",\"SVGFETileElement\",\"SVGFETurbulenceElement\",\"SVGFontFaceElement\",\"SVGFontFaceFormatElement\",\"SVGFontFaceSrcElement\",\"SVGForeignObjectElement\",\"SVGGElement\",\"SVGImageElement\",\"SVGLength\",\"SVGLineElement\",\"SVGMPathElement\",\"SVGMaskElement\",\"SVGMetadataElement\",\"SVGMissingGlyphElement\",\"SVGNumberList\",\"SVGPathElement\",\"SVGPathSeg\",\"SVGPathSegClosePath\",\"SVGPathSegCurvetoCubicRel\",\"SVGPathSegCurvetoQuadraticAbs\",\"SVGPathSegLinetoAbs\",\"SVGPathSegLinetoHorizontalAbs\",\"SVGPathSegLinetoRel\",\"SVGPathSegLinetoVerticalAbs\",\"SVGPathSegMovetoRel\",\"SVGPoint\",\"SVGPolygonElement\",\"SVGRadialGradientElement\",\"SVGRect\",\"SVGRenderingIntent\",\"SVGSVGElement\",\"SVGScriptElement\",\"SVGStyleElement\",\"SVGSwitchElement\",\"SVGTRefElement\",\"SVGTextContentElement\",\"SVGTextElement\",\"SVGTextPositioningElement\",\"SVGTitleElement\",\"SVGTransform\",\"SVGUnitTypes\",\"SVGUseElement\",\"SVGVKernElement\",\"SVGViewElement\",\"SharedWorker\",\"StyleSheet\",\"StyleSheetList\",\"Text\",\"TextTrack\",\"TextTrackCue\",\"TextTrackList\",\"TimeRanges\",\"TrackEvent\",\"Uint16Array\",\"WebGLBuffer\",\"WebGLContextEvent\",\"WebGLFramebuffer\",\"WebGLShaderPrecisionFormat\",\"WebGLTexture\",\"WebGLUniformLocation\",\"WebKitCSSKeyframesRule\",\"WebKitCSSMatrix\",\"WebKitMutationObserver\",\"WebSocket\",\"WheelEvent\",\"XMLHttpRequestProgressEvent\",\"XMLHttpRequestUpload\",\"XMLSerializer\",\"XPathException\",\"XSLTProcessor\",\"applicationCache\",\"closed\",\"crypto\",\"defaultStatus\",\"defaultstatus\",\"devicePixelRatio\",\"event\",\"innerHeight\",\"innerWidth\",\"length\",\"module\",\"name\",\"offscreenBuffering\",\"onabort\",\"oncanplay\",\"onchange\",\"oncontextmenu\",\"ondblclick\",\"ondrag\",\"ondragend\",\"onended\",\"onfocus\",\"onhashchange\",\"oninput\",\"oninvalid\",\"onkeyup\",\"onload\",\"onloadedmetadata\",\"onmousedown\",\"onmousemove\",\"onmouseup\",\"onmousewheel\",\"onpagehide\",\"onpageshow\",\"onpause\",\"onpopstate\",\"onreset\",\"onresize\",\"onseeked\",\"onseeking\",\"onstalled\",\"onstorage\",\"onsubmit\",\"onunload\",\"onvolumechange\",\"onwaiting\",\"onwebkitanimationend\",\"onwebkitanimationiteration\",\"onwebkitanimationstart\",\"outerHeight\",\"outerWidth\",\"pageXOffset\",\"pageYOffset\",\"parent\",\"personalbar\",\"screen\",\"screenLeft\",\"screenTop\",\"screenX\",\"screenY\",\"scrollX\",\"scrollY\",\"self\",\"sessionStorage\",\"status\",\"statusbar\",\"Touch\",\"TouchList\",\"TouchEvent\",\"DeviceMotionEvent\",\"DeviceOrientationEvent\",\"orientation\",\"onorientationchange\",\"ontouched\",\"ondeviceorientation\",\"ontouchmove\",\"ondevicemotion\",\"ontouchcancel\",\"ontouchstart\",\"ongestureend\",\"ontouchend\",\"ongesturestart\",\"ongesturechange\",\"getSearchEngine\",\"setSearchEngine\",\"canSetSearchEngine\",\"InstallTrigger\",\"getInterface\",\"sidebar\"],filterOut={};filterOuts.forEach(function(k){filterOut[k]=!0})},{}],61:[function(require,module){\"use strict\";var exclude={};module.exports=function(thing,exclude_){var t={},ex=exclude_||exclude;return thing?(Object.keys(thing).filter(function(k){return!ex[k]}).forEach(function(k){thing.hasOwnProperty(k)&&(t[k]=thing[k])}),t):t},[\"top\",\"Intl\",\"chrome\",\"document\",\"external\",\"v8Intl\",\"window\",\"frameElement\",\"parent\"].forEach(function(k){exclude[k]=!0})},{}],28:[function(require,module){module.exports={highlight:require(\"./lib/highlight\"),highlightFile:require(\"./lib/highlightFile\"),highlightFileSync:require(\"./lib/highlightFileSync\")}},{\"./lib/highlight\":62,\"./lib/highlightFile\":63,\"./lib/highlightFileSync\":64}],65:[function(require,module,exports){(function(process){function filter(xs,fn){for(var res=[],i=0;xs.length>i;i++)fn(xs[i],i,xs)&&res.push(xs[i]);return res}function normalizeArray(parts,allowAboveRoot){for(var up=0,i=parts.length;i>=0;i--){var last=parts[i];\".\"==last?parts.splice(i,1):\"..\"===last?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up--;up)parts.unshift(\"..\");return parts}var splitPathRe=/^(.+\\/(?!$)|\\/)?((?:.+?)?(\\.[^.]*)?)$/;exports.resolve=function(){for(var resolvedPath=\"\",resolvedAbsolute=!1,i=arguments.length;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:process.cwd();\"string\"==typeof path&&path&&(resolvedPath=path+\"/\"+resolvedPath,resolvedAbsolute=\"/\"===path.charAt(0))}return resolvedPath=normalizeArray(filter(resolvedPath.split(\"/\"),function(p){return!!p}),!resolvedAbsolute).join(\"/\"),(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"},exports.normalize=function(path){var isAbsolute=\"/\"===path.charAt(0),trailingSlash=\"/\"===path.slice(-1);return path=normalizeArray(filter(path.split(\"/\"),function(p){return!!p}),!isAbsolute).join(\"/\"),path||isAbsolute||(path=\".\"),path&&trailingSlash&&(path+=\"/\"),(isAbsolute?\"/\":\"\")+path},exports.join=function(){var paths=Array.prototype.slice.call(arguments,0);return exports.normalize(filter(paths,function(p){return p&&\"string\"==typeof p}).join(\"/\"))},exports.dirname=function(path){var dir=splitPathRe.exec(path)[1]||\"\",isWindows=!1;return dir?1===dir.length||isWindows&&3>=dir.length&&\":\"===dir.charAt(1)?dir:dir.substring(0,dir.length-1):\".\"},exports.basename=function(path,ext){var f=splitPathRe.exec(path)[2]||\"\";return ext&&f.substr(-1*ext.length)===ext&&(f=f.substr(0,f.length-ext.length)),f},exports.extname=function(path){return splitPathRe.exec(path)[3]||\"\"},exports.relative=function(from,to){function trim(arr){for(var start=0;arr.length>start&&\"\"===arr[start];start++);for(var end=arr.length-1;end>=0&&\"\"===arr[end];end--);return start>end?[]:arr.slice(start,end-start+1)}from=exports.resolve(from).substr(1),to=exports.resolve(to).substr(1);for(var fromParts=trim(from.split(\"/\")),toParts=trim(to.split(\"/\")),length=Math.min(fromParts.length,toParts.length),samePartsLength=length,i=0;length>i;i++)if(fromParts[i]!==toParts[i]){samePartsLength=i;break}for(var outputParts=[],i=samePartsLength;fromParts.length>i;i++)outputParts.push(\"..\");return outputParts=outputParts.concat(toParts.slice(samePartsLength)),outputParts.join(\"/\")}})(require(\"__browserify_process\"))},{__browserify_process:16}],42:[function(require,module){\"use strict\";function fixLinefeed(data){return data.replace(/([^\\r])\\n/g,\"$1\\r\\n\")}function fixIndent(data){return/(^|\\n) /.test(data)?data.split(\"\\n\").map(function(line){for(var count=0;\" \"===line.charAt(0);)line=line.slice(1),count++;for(;count--;)line=\" \"+line;return line}).join(\"\\r\\n\"):data}var states=require(\"./states\");module.exports=function(Terminal){Terminal.prototype.write=function(data){data=fixLinefeed(data),data=fixIndent(data);var cs,ch,l=data.length,i=0;for(this.refreshStart=this.y,this.refreshEnd=this.y,this.ybase!==this.ydisp&&(this.ydisp=this.ybase,this.maxRange());l>i;i++)switch(ch=data[i],this.state){case states.normal:switch(ch){case\"\u0007\":this.bell();break;case\"\\n\":case\"\u000b\":case\"\\f\":this.convertEol&&(this.x=0),this.y++;break;case\"\\r\":this.x=0;break;case\"\\b\":this.x>0&&this.x--;break;case\"\t\":this.x=this.nextStop();break;case\"\u000e\":this.setgLevel(1);break;case\"\u000f\":this.setgLevel(0);break;case\"\u001b\":this.state=states.escaped;break;default:ch>=\" \"&&(this.charset&&this.charset[ch]&&(ch=this.charset[ch]),this.x>=this.cols&&(this.x=0,this.y++),this.lines[this.y+this.ybase][this.x]=[this.curAttr,ch],this.x++,this.updateRange(this.y))}break;case states.escaped:switch(ch){case\"[\":this.params=[],this.currentParam=0,this.state=states.csi;break;case\"]\":this.params=[],this.currentParam=0,this.state=states.osc;break;case\"P\":this.params=[],this.currentParam=0,this.state=states.dcs;break;case\"_\":this.stateType=\"apc\",this.state=states.ignore;break;case\"^\":this.stateType=\"pm\",this.state=states.ignore;break;case\"c\":this.reset();break;case\"E\":this.x=0;break;case\"D\":this.index();break;case\"M\":this.reverseIndex();break;case\"%\":this.setgLevel(0),this.setgCharset(0,Terminal.charsets.US),this.state=states.normal,i++;break;case\"(\":case\")\":case\"*\":case\"+\":case\"-\":case\".\":switch(ch){case\"(\":this.gcharset=0;break;case\")\":this.gcharset=1;break;case\"*\":this.gcharset=2;break;case\"+\":this.gcharset=3;break;case\"-\":this.gcharset=1;break;case\".\":this.gcharset=2}this.state=states.charset;break;case\"/\":this.gcharset=3,this.state=states.charset,i--;break;case\"N\":break;case\"O\":break;case\"n\":this.setgLevel(2);break;case\"o\":this.setgLevel(3);break;case\"|\":this.setgLevel(3);break;case\"}\":this.setgLevel(2);break;case\"~\":this.setgLevel(1);break;case\"7\":this.saveCursor(),this.state=states.normal;break;case\"8\":this.restoreCursor(),this.state=states.normal;break;case\"#\":this.state=states.normal,i++;break;case\"H\":this.tabSet();break;case\"=\":this.log(\"Serial port requested application keypad.\"),this.applicationKeypad=!0,this.state=states.normal;break;case\">\":this.log(\"Switching back to normal keypad.\"),this.applicationKeypad=!1,this.state=states.normal;break;default:this.state=states.normal,this.error(\"Unknown ESC control: %s.\",ch)}break;case states.charset:switch(ch){case\"0\":cs=Terminal.charsets.SCLD;break;case\"A\":cs=Terminal.charsets.UK;break;case\"B\":cs=Terminal.charsets.US;break;case\"4\":cs=Terminal.charsets.Dutch;break;case\"C\":case\"5\":cs=Terminal.charsets.Finnish;break;case\"R\":cs=Terminal.charsets.French;break;case\"Q\":cs=Terminal.charsets.FrenchCanadian;break;case\"K\":cs=Terminal.charsets.German;break;case\"Y\":cs=Terminal.charsets.Italian;break;case\"E\":case\"6\":cs=Terminal.charsets.NorwegianDanish;break;case\"Z\":cs=Terminal.charsets.Spanish;break;case\"H\":case\"7\":cs=Terminal.charsets.Swedish;break;case\"=\":cs=Terminal.charsets.Swiss;break;case\"/\":cs=Terminal.charsets.ISOLatin,i++;break;default:cs=Terminal.charsets.US}this.setgCharset(this.gcharset,cs),this.gcharset=null,this.state=states.normal;break;case states.osc:if(\"\u001b\"===ch||\"\u0007\"===ch){switch(\"\u001b\"===ch&&i++,this.params.push(this.currentParam),this.params[0]){case 0:case 1:case 2:this.params[1]&&(this.title=this.params[1],this.handleTitle(this.title));break;case 3:break;case 4:case 5:break;case 10:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:break;case 46:break;case 50:break;case 51:break;case 52:break;case 104:case 105:case 110:case 111:case 112:case 113:case 114:case 115:case 116:case 117:case 118:}this.params=[],this.currentParam=0,this.state=states.normal}else this.params.length?this.currentParam+=ch:ch>=\"0\"&&\"9\">=ch?this.currentParam=10*this.currentParam+ch.charCodeAt(0)-48:\";\"===ch&&(this.params.push(this.currentParam),this.currentParam=\"\");break;case states.csi:if(\"?\"===ch||\">\"===ch||\"!\"===ch){this.prefix=ch;break}if(ch>=\"0\"&&\"9\">=ch){this.currentParam=10*this.currentParam+ch.charCodeAt(0)-48;break}if(\"$\"===ch||'\"'===ch||\" \"===ch||\"'\"===ch){this.postfix=ch;break}if(this.params.push(this.currentParam),this.currentParam=0,\";\"===ch)break;switch(this.state=states.normal,ch){case\"A\":this.cursorUp(this.params);break;case\"B\":this.cursorDown(this.params);break;case\"C\":this.cursorForward(this.params);break;case\"D\":this.cursorBackward(this.params);break;case\"H\":this.cursorPos(this.params);break;case\"J\":this.eraseInDisplay(this.params);break;case\"K\":this.eraseInLine(this.params);break;case\"m\":this.charAttributes(this.params);break;case\"n\":this.deviceStatus(this.params);break;case\"@\":this.insertChars(this.params);break;case\"E\":this.cursorNextLine(this.params);break;case\"F\":this.cursorPrecedingLine(this.params);break;case\"G\":this.cursorCharAbsolute(this.params);break;case\"L\":this.insertLines(this.params);break;case\"M\":this.deleteLines(this.params);break;case\"P\":this.deleteChars(this.params);break;case\"X\":this.eraseChars(this.params);break;case\"`\":this.charPosAbsolute(this.params);break;case\"a\":this.HPositionRelative(this.params);break;case\"c\":break;case\"d\":this.linePosAbsolute(this.params);break;case\"e\":this.VPositionRelative(this.params);break;case\"f\":this.HVPosition(this.params);break;case\"h\":break;case\"l\":break;case\"r\":break;case\"s\":this.saveCursor(this.params);break;case\"u\":this.restoreCursor(this.params);break;case\"I\":this.cursorForwardTab(this.params);break;case\"S\":break;case\"T\":2>this.params.length&&!this.prefix;break;case\"Z\":this.cursorBackwardTab(this.params);break;case\"b\":this.repeatPrecedingCharacter(this.params);break;case\"g\":this.tabClear(this.params);break;case\"p\":switch(this.prefix){case\"!\":this.softReset(this.params)}break;default:this.error(\"Unknown CSI code: %s.\",ch)}this.prefix=\"\",this.postfix=\"\";break;case states.dcs:if(\"\u001b\"===ch||\"\u0007\"===ch){switch(\"\u001b\"===ch&&i++,this.prefix){case\"\":break;case\"$q\":var pt=this.currentParam;switch(pt){case'\"q':pt='0\"q';break;case'\"p':pt='61\"p';break;case\"r\":pt=\"\"+(this.scrollTop+1)+\";\"+(this.scrollBottom+1)+\"r\";break;case\"m\":pt=\"0m\";break;default:this.error(\"Unknown DCS Pt: %s.\",pt),pt=\"\"}break;case\"+p\":break;default:this.error(\"Unknown DCS prefix: %s.\",this.prefix)}this.currentParam=0,this.prefix=\"\",this.state=states.normal}else this.currentParam?this.currentParam+=ch:this.prefix||\"$\"===ch||\"+\"===ch?2===this.prefix.length?this.currentParam=ch:this.prefix+=ch:this.currentParam=ch;break;case states.ignore:\"\u001b\"===ch||\"\u0007\"===ch?(\"\u001b\"===ch&&i++,this.stateData=\"\",this.state=states.normal):(this.stateData||(this.stateData=\"\"),this.stateData+=ch)}this.updateRange(this.y),this.refresh(this.refreshStart,this.refreshEnd)},Terminal.prototype.writeln=function(data){data=data.replace(/ /g,\" \"),this.write(data+\" \\r\\n\")}}},{\"./states\":36}],32:[function(require,module){\"use strict\";var states=require(\"../states\");module.exports=function(Terminal){Terminal.prototype.index=function(){this.y++,this.y>this.scrollBottom&&(this.y--,this.scroll()),this.state=states.normal},Terminal.prototype.reverseIndex=function(){var j;this.y--,this.y\u003Cthis.scrollTop&&(this.y++,this.lines.splice(this.y+this.ybase,0,this.blankLine(!0)),j=this.rows-1-this.scrollBottom,this.lines.splice(this.rows-1+this.ybase-j+1,1),this.updateRange(this.scrollTop),this.updateRange(this.scrollBottom)),this.state=states.normal}}},{\"../states\":36}],34:[function(require,module){\"use strict\";var states=require(\"../states\");module.exports=function(Terminal){Terminal.prototype.tabSet=function(){this.tabs[this.x]=!0,this.state=states.normal}}},{\"../states\":36}],26:[function(require,module){(function(process){\"use strict\";function isFunctionDeclaration(snippet){var firstStatement=snippet.ast.body&&snippet.ast.body[0]&&snippet.ast.body[0];return firstStatement&&\"FunctionDeclaration\"===firstStatement.type}function added(origKeys,keys){return keys.filter(function(k){return!~origKeys.indexOf(k)\n})}function changed(ctx,prevCtx,prevKeys){return prevKeys.filter(function(k){return!deepIs(prevCtx[k],ctx[k])})}function keyValues(keys,ctx,prevCtx){return keys.map(function(k){return{key:k,value:ctx[k],prevValue:prevCtx?prevCtx[k]:void 0}})}function cleaned(ctx,add){var cleanedCtx=removeProblematic(ctx);return Object.keys(add).forEach(function(k){cleanedCtx[k]=add[k]}),cleanedCtx}function evalSnippet(ctx,snippet,isStrict,allTrackedKeyValues){browser&&(ctx=cleaned(ctx,allTrackedKeyValues));var result,prevCtx=clone(ctx),prevKeys=Object.keys(prevCtx),code=snippet.code;try{isStrict&&!useStrictRx.test(code)&&parse('\"use strict\";'+snippet.code),result=runner.runInCtx(code,ctx)}catch(e){ctx[ErrorIndicator]=\"\"+e}browser&&(ctx=cleaned(ctx,{}));var crntCtx=clone(ctx),keys=Object.keys(crntCtx),addedValues=added(prevKeys,keys);browser&&(addedValues=removeIFrameGenerated(addedValues));var addedKeyValues=keyValues(addedValues,crntCtx),changedValues=changed(crntCtx,prevCtx,prevKeys),changedKeyValues=keyValues(changedValues,crntCtx,prevCtx);snippet.evaluated={result:result,ctx:prevCtx,added:clone(addedKeyValues),changed:clone(changedKeyValues)},browser&&(addedKeyValues.concat(changedKeyValues).forEach(function(x){allTrackedKeyValues[x.key]=x.value}),delete allTrackedKeyValues[ErrorIndicator]),delete ctx[ErrorIndicator]}var browser=process.browser,clone=(require(\"vm\"),require(\"clone\")),deepIs=require(\"deep-is\"),runner=require(\"./runner-vm\"),colors=require(\"ansicolors\"),parse=require(\"esprima\").parse,removeIFrameGenerated=require(\"./remove-iframe-generated\"),removeProblematic=require(\"./remove-problematic\"),createSandbox=require(\"./create-sandbox\"),ErrorIndicator=colors.red(\"!\"),useStrictRx=/^ *['\"]use strict['\"]/;module.exports=function(snippets,fullSrcPath){var fndecs,sandbox=createSandbox(fullSrcPath),ctx=runner.createCtx(sandbox),allTrackedKeyValues={},nonEmptySnippets=snippets.filter(function(snippet){return snippet.code.length}),isStrict=nonEmptySnippets.some(function(snippet){return useStrictRx.test(snippet.raw)});return browser||(fndecs=nonEmptySnippets.filter(function(snippet,idx){return isFunctionDeclaration(snippet)?(nonEmptySnippets.splice(idx,1),!0):!1}),fndecs.forEach(function(snippet){evalSnippet(ctx,snippet,isStrict,allTrackedKeyValues)})),nonEmptySnippets.forEach(function(snippet){evalSnippet(ctx,snippet,isStrict,allTrackedKeyValues)}),ctx}})(require(\"__browserify_process\"))},{vm:31,\"./runner-vm\":59,\"./remove-iframe-generated\":60,\"./remove-problematic\":61,\"./create-sandbox\":66,clone:67,ansicolors:68,\"deep-is\":69,esprima:70,__browserify_process:16}],66:[function(require,module){(function(process,global){\"use strict\";function cleanProcess(process){var exclude={stdout:!0,stderr:!0,stdin:!0,mainModule:!0};return removeProblematic(process,exclude)}var browser=process.browser,requireLikeName=\"require-like\",requireLike=browser?function(){}:require(requireLikeName),path=require(\"path\"),removeProblematic=require(\"./remove-problematic\");module.exports=function(fullSrcPath){var exports={},sandbox={console:global.console,module:{exports:exports,parent:null},exports:exports,process:cleanProcess(process)},serverside={require:requireLike(fullSrcPath),__filename:fullSrcPath,__dirname:path.dirname(fullSrcPath),Buffer:require(\"buffer\").Buffer,ArrayBuffer:global.ArrayBuffer,Int8Array:global.Int8Array,Uint8Array:global.Uint8Array,Uint8ClampedArray:global.Uint8ClampedArray,Int16Array:global.Int16Array,Uint16Array:global.Uint16Array,Int32Array:global.Int32Array,Uint32Array:global.Uint32Array,Float32Array:global.Float32Array,Float64Array:global.Float64Array,DataView:global.DataView};return browser||Object.keys(serverside).forEach(function(k){sandbox[k]=serverside[k]}),sandbox}})(require(\"__browserify_process\"),window)},{path:65,buffer:71,\"./remove-problematic\":61,__browserify_process:16}],27:[function(require,module){\"use strict\";function formatAdd(key,value,diffopts){return format(\"%s %s: %s\",colors.brightGreen(\"+\"),key,diffValues({},value,diffopts))}function formatChange(key,prevValue,value,diffopts){return format(\"%s %s: %s\",colors.brightBlue(\"~\"),key,diffValues(prevValue,value,diffopts))}function formatResult(result,diffopts){return format(\"%s %s\",colors.cyan(\"=>\"),diffValues({},result,diffopts))}function formatSectionEnd(multiLine,lastOne){return!multiLine||lastOne?\"\\n\":colors.brightBlack(\"\\n--------\\n\")}function resolveTale(evaluated,opts){if(!evaluated)return\"\";var tales=[];return evaluated.added.length&&evaluated.added.forEach(function(x){tales.push(opts.formatAdd(x.key,x.value,opts.diff))}),evaluated.changed.length&&evaluated.changed.forEach(function(x){tales.push(opts.formatChange(x.key,x.prevValue,x.value,opts.diff))}),evaluated.result!==void 0&&tales.push(opts.formatResult(evaluated.result,opts.diff)),tales.reduce(function(s,tale,idx,all){var lastOne=idx===all.length-1,multiLine=~tale.indexOf(\"\\n\");return s+tale+opts.formatSectionEnd(multiLine,lastOne)},\"\")}var diffValues=require(\"./diff-values\"),format=require(\"util\").format,colors=require(\"ansicolors\");module.exports=function(snippets,opts){return opts=opts||{},opts.formatAdd=opts.formatAdd||formatAdd,opts.formatChange=opts.formatChange||formatChange,opts.formatResult=opts.formatResult||formatResult,opts.formatSectionEnd=opts.formatSectionEnd||formatSectionEnd,snippets.map(function(snippet){var tale=resolveTale(snippet.evaluated,opts);return{tale:tale,insertAfter:snippet.end}})}},{util:6,\"./diff-values\":72,ansicolors:68}],73:[function(require,module){(function(){function objectKeys(object){if(Object.keys)return Object.keys(object);var result=[];for(var name in object)Object.prototype.hasOwnProperty.call(object,name)&&result.push(name);return result}function replacer(key,value){return void 0===value?\"\"+value:\"number\"!=typeof value||!isNaN(value)&&isFinite(value)?\"function\"==typeof value||value instanceof RegExp?\"\"+value:value:\"\"+value}function truncate(s,n){return\"string\"==typeof s?n>s.length?s:s.slice(0,n):s}function fail(actual,expected,message,operator,stackStartFunction){throw new assert.AssertionError({message:message,actual:actual,expected:expected,operator:operator,stackStartFunction:stackStartFunction})}function ok(value,message){value||fail(value,!0,message,\"==\",assert.ok)}function _deepEqual(actual,expected){if(actual===expected)return!0;if(Buffer.isBuffer(actual)&&Buffer.isBuffer(expected)){if(actual.length!=expected.length)return!1;for(var i=0;actual.length>i;i++)if(actual[i]!==expected[i])return!1;return!0}return actual instanceof Date&&expected instanceof Date?actual.getTime()===expected.getTime():\"object\"!=typeof actual&&\"object\"!=typeof expected?actual==expected:objEquiv(actual,expected)}function isUndefinedOrNull(value){return null===value||void 0===value}function isArguments(object){return\"[object Arguments]\"==Object.prototype.toString.call(object)}function objEquiv(a,b){if(isUndefinedOrNull(a)||isUndefinedOrNull(b))return!1;if(a.prototype!==b.prototype)return!1;if(isArguments(a))return isArguments(b)?(a=pSlice.call(a),b=pSlice.call(b),_deepEqual(a,b)):!1;try{var key,i,ka=objectKeys(a),kb=objectKeys(b)}catch(e){return!1}if(ka.length!=kb.length)return!1;for(ka.sort(),kb.sort(),i=ka.length-1;i>=0;i--)if(ka[i]!=kb[i])return!1;for(i=ka.length-1;i>=0;i--)if(key=ka[i],!_deepEqual(a[key],b[key]))return!1;return!0}function expectedException(actual,expected){return actual&&expected?expected instanceof RegExp?expected.test(actual):actual instanceof expected?!0:expected.call({},actual)===!0?!0:!1:!1}function _throws(shouldThrow,block,expected,message){var actual;\"string\"==typeof expected&&(message=expected,expected=null);try{block()}catch(e){actual=e}if(message=(expected&&expected.name?\" (\"+expected.name+\").\":\".\")+(message?\" \"+message:\".\"),shouldThrow&&!actual&&fail(\"Missing expected exception\"+message),!shouldThrow&&expectedException(actual,expected)&&fail(\"Got unwanted exception\"+message),shouldThrow&&actual&&expected&&!expectedException(actual,expected)||!shouldThrow&&actual)throw actual}var util=require(\"util\"),Buffer=require(\"buffer\").Buffer,pSlice=Array.prototype.slice,assert=module.exports=ok;assert.AssertionError=function(options){this.name=\"AssertionError\",this.message=options.message,this.actual=options.actual,this.expected=options.expected,this.operator=options.operator;var stackStartFunction=options.stackStartFunction||fail;Error.captureStackTrace&&Error.captureStackTrace(this,stackStartFunction)},util.inherits(assert.AssertionError,Error),assert.AssertionError.prototype.toString=function(){return this.message?[this.name+\":\",this.message].join(\" \"):[this.name+\":\",truncate(JSON.stringify(this.actual,replacer),128),this.operator,truncate(JSON.stringify(this.expected,replacer),128)].join(\" \")},assert.AssertionError.__proto__=Error.prototype,assert.fail=fail,assert.ok=ok,assert.equal=function(actual,expected,message){actual!=expected&&fail(actual,expected,message,\"==\",assert.equal)},assert.notEqual=function(actual,expected,message){actual==expected&&fail(actual,expected,message,\"!=\",assert.notEqual)},assert.deepEqual=function(actual,expected,message){_deepEqual(actual,expected)||fail(actual,expected,message,\"deepEqual\",assert.deepEqual)},assert.notDeepEqual=function(actual,expected,message){_deepEqual(actual,expected)&&fail(actual,expected,message,\"notDeepEqual\",assert.notDeepEqual)},assert.strictEqual=function(actual,expected,message){actual!==expected&&fail(actual,expected,message,\"===\",assert.strictEqual)},assert.notStrictEqual=function(actual,expected,message){actual===expected&&fail(actual,expected,message,\"!==\",assert.notStrictEqual)},assert.throws=function(){_throws.apply(this,[!0].concat(pSlice.call(arguments)))},assert.doesNotThrow=function(){_throws.apply(this,[!1].concat(pSlice.call(arguments)))},assert.ifError=function(err){if(err)throw err}})()},{util:6,buffer:71}],74:[function(){},{}],69:[function(require,module){function isUndefinedOrNull(value){return null===value||void 0===value}function isArguments(object){return\"[object Arguments]\"==Object.prototype.toString.call(object)}function isNumberNaN(value){return\"number\"==typeof value&&value!==value}function areZerosEqual(zeroA,zeroB){return 1/zeroA===1/zeroB}function objEquiv(a,b){if(isUndefinedOrNull(a)||isUndefinedOrNull(b))return!1;if(a.prototype!==b.prototype)return!1;if(isArguments(a))return isArguments(b)?(a=pSlice.call(a),b=pSlice.call(b),deepEqual(a,b)):!1;try{var key,i,ka=Object_keys(a),kb=Object_keys(b)}catch(e){return!1}if(ka.length!=kb.length)return!1;for(ka.sort(),kb.sort(),i=ka.length-1;i>=0;i--)if(ka[i]!=kb[i])return!1;for(i=ka.length-1;i>=0;i--)if(key=ka[i],!deepEqual(a[key],b[key]))return!1;return!0}var pSlice=Array.prototype.slice,Object_keys=\"function\"==typeof Object.keys?Object.keys:function(obj){var keys=[];for(var key in obj)keys.push(key);return keys},deepEqual=module.exports=function(actual,expected){return 0===actual&&0===expected?areZerosEqual(actual,expected):actual===expected?!0:actual instanceof Date&&expected instanceof Date?actual.getTime()===expected.getTime():isNumberNaN(actual)?isNumberNaN(expected):\"object\"!=typeof actual&&\"object\"!=typeof expected?actual==expected:objEquiv(actual,expected)}},{}],68:[function(require,module){\"use strict\";var colorNums={white:37,black:30,blue:34,cyan:36,green:32,magenta:35,red:31,yellow:33,brightBlack:90,brightRed:91,brightGreen:92,brightYellow:93,brightBlue:94,brightMagenta:95,brightCyan:96,brightWhite:97},backgroundColorNums={bgBlack:40,bgRed:41,bgGreen:42,bgYellow:43,bgBlue:44,bgMagenta:45,bgCyan:46,bgWhite:47,bgBrightBlack:100,bgBrightRed:101,bgBrightGreen:102,bgBrightYellow:103,bgBrightBlue:104,bgBrightMagenta:105,bgBrightCyan:106,bgBrightWhite:107},colors={};Object.keys(colorNums).forEach(function(k){colors[k]=function(s){return\"\u001b[\"+colorNums[k]+\"m\"+s+\"\u001b[39m\"}}),Object.keys(backgroundColorNums).forEach(function(k){colors[k]=function(s){return\"\u001b[\"+backgroundColorNums[k]+\"m\"+s+\"\u001b[49m\"}}),module.exports=colors},{}],70:[function(require,module,exports){(function(){(function(root,factory){\"use strict\";\"function\"==typeof define&&define.amd?define([\"exports\"],factory):exports!==void 0?factory(exports):factory(root.esprima={})})(this,function(exports){\"use strict\";function assert(condition,message){if(!condition)throw Error(\"ASSERT: \"+message)}function sliceSource(from,to){return source.slice(from,to)}function isDecimalDigit(ch){return\"0123456789\".indexOf(ch)>=0}function isHexDigit(ch){return\"0123456789abcdefABCDEF\".indexOf(ch)>=0}function isOctalDigit(ch){return\"01234567\".indexOf(ch)>=0}function isWhiteSpace(ch){return\" \"===ch||\"\t\"===ch||\"\u000b\"===ch||\"\\f\"===ch||\" \"===ch||ch.charCodeAt(0)>=5760&&\"įš€į Žā€€ā€ā€‚ā€ƒā€„ā€…ā€†ā€‡ā€ˆā€‰ā€Šā€ÆāŸć€€ļ»æ\".indexOf(ch)>=0}function isLineTerminator(ch){return\"\\n\"===ch||\"\\r\"===ch||\"\\u2028\"===ch||\"\\u2029\"===ch}function isIdentifierStart(ch){return\"$\"===ch||\"_\"===ch||\"\\\\\"===ch||ch>=\"a\"&&\"z\">=ch||ch>=\"A\"&&\"Z\">=ch||ch.charCodeAt(0)>=128&&Regex.NonAsciiIdentifierStart.test(ch)}function isIdentifierPart(ch){return\"$\"===ch||\"_\"===ch||\"\\\\\"===ch||ch>=\"a\"&&\"z\">=ch||ch>=\"A\"&&\"Z\">=ch||ch>=\"0\"&&\"9\">=ch||ch.charCodeAt(0)>=128&&Regex.NonAsciiIdentifierPart.test(ch)}function isFutureReservedWord(id){switch(id){case\"class\":case\"enum\":case\"export\":case\"extends\":case\"import\":case\"super\":return!0}return!1}function isStrictModeReservedWord(id){switch(id){case\"implements\":case\"interface\":case\"package\":case\"private\":case\"protected\":case\"public\":case\"static\":case\"yield\":case\"let\":return!0}return!1}function isRestrictedWord(id){return\"eval\"===id||\"arguments\"===id}function isKeyword(id){var keyword=!1;switch(id.length){case 2:keyword=\"if\"===id||\"in\"===id||\"do\"===id;break;case 3:keyword=\"var\"===id||\"for\"===id||\"new\"===id||\"try\"===id;break;case 4:keyword=\"this\"===id||\"else\"===id||\"case\"===id||\"void\"===id||\"with\"===id;break;case 5:keyword=\"while\"===id||\"break\"===id||\"catch\"===id||\"throw\"===id;break;case 6:keyword=\"return\"===id||\"typeof\"===id||\"delete\"===id||\"switch\"===id;break;case 7:keyword=\"default\"===id||\"finally\"===id;break;case 8:keyword=\"function\"===id||\"continue\"===id||\"debugger\"===id;break;case 10:keyword=\"instanceof\"===id}if(keyword)return!0;switch(id){case\"const\":return!0;case\"yield\":case\"let\":return!0}return strict&&isStrictModeReservedWord(id)?!0:isFutureReservedWord(id)}function skipComment(){var ch,blockComment,lineComment;for(blockComment=!1,lineComment=!1;length>index;)if(ch=source[index],lineComment)ch=source[index++],isLineTerminator(ch)&&(lineComment=!1,\"\\r\"===ch&&\"\\n\"===source[index]&&++index,++lineNumber,lineStart=index);else if(blockComment)isLineTerminator(ch)?(\"\\r\"===ch&&\"\\n\"===source[index+1]&&++index,++lineNumber,++index,lineStart=index,index>=length&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\")):(ch=source[index++],index>=length&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\"),\"*\"===ch&&(ch=source[index],\"/\"===ch&&(++index,blockComment=!1)));else if(\"/\"===ch)if(ch=source[index+1],\"/\"===ch)index+=2,lineComment=!0;else{if(\"*\"!==ch)break;index+=2,blockComment=!0,index>=length&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\")}else if(isWhiteSpace(ch))++index;else{if(!isLineTerminator(ch))break;++index,\"\\r\"===ch&&\"\\n\"===source[index]&&++index,++lineNumber,lineStart=index}}function scanHexEscape(prefix){var i,len,ch,code=0;for(len=\"u\"===prefix?4:2,i=0;len>i;++i){if(!(length>index&&isHexDigit(source[index])))return\"\";ch=source[index++],code=16*code+\"0123456789abcdef\".indexOf(ch.toLowerCase())}return String.fromCharCode(code)}function scanIdentifier(){var ch,start,id,restore;if(ch=source[index],isIdentifierStart(ch)){if(start=index,\"\\\\\"===ch){if(++index,\"u\"!==source[index])return;if(++index,restore=index,ch=scanHexEscape(\"u\")){if(\"\\\\\"===ch||!isIdentifierStart(ch))return;id=ch}else index=restore,id=\"u\"}else id=source[index++];for(;length>index&&(ch=source[index],isIdentifierPart(ch));)if(\"\\\\\"===ch){if(++index,\"u\"!==source[index])return;if(++index,restore=index,ch=scanHexEscape(\"u\")){if(\"\\\\\"===ch||!isIdentifierPart(ch))return;id+=ch}else index=restore,id+=\"u\"}else id+=source[index++];return 1===id.length?{type:Token.Identifier,value:id,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}:isKeyword(id)?{type:Token.Keyword,value:id,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}:\"null\"===id?{type:Token.NullLiteral,value:id,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}:\"true\"===id||\"false\"===id?{type:Token.BooleanLiteral,value:id,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}:{type:Token.Identifier,value:id,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}}}function scanPunctuator(){var ch2,ch3,ch4,start=index,ch1=source[index];return\";\"===ch1||\"{\"===ch1||\"}\"===ch1?(++index,{type:Token.Punctuator,value:ch1,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):\",\"===ch1||\"(\"===ch1||\")\"===ch1?(++index,{type:Token.Punctuator,value:ch1,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):(ch2=source[index+1],\".\"!==ch1||isDecimalDigit(ch2)?(ch3=source[index+2],ch4=source[index+3],\">\"===ch1&&\">\"===ch2&&\">\"===ch3&&\"=\"===ch4?(index+=4,{type:Token.Punctuator,value:\">>>=\",lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):\"=\"===ch1&&\"=\"===ch2&&\"=\"===ch3?(index+=3,{type:Token.Punctuator,value:\"===\",lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):\"!\"===ch1&&\"=\"===ch2&&\"=\"===ch3?(index+=3,{type:Token.Punctuator,value:\"!==\",lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):\">\"===ch1&&\">\"===ch2&&\">\"===ch3?(index+=3,{type:Token.Punctuator,value:\">>>\",lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):\"\u003C\"===ch1&&\"\u003C\"===ch2&&\"=\"===ch3?(index+=3,{type:Token.Punctuator,value:\"\u003C\u003C=\",lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):\">\"===ch1&&\">\"===ch2&&\"=\"===ch3?(index+=3,{type:Token.Punctuator,value:\">>=\",lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):\"=\"===ch2&&\"\u003C>=!+-*%&|^/\".indexOf(ch1)>=0?(index+=2,{type:Token.Punctuator,value:ch1+ch2,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):ch1===ch2&&\"+-\u003C>&|\".indexOf(ch1)>=0&&\"+-\u003C>&|\".indexOf(ch2)>=0?(index+=2,{type:Token.Punctuator,value:ch1+ch2,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}):\"[]\u003C>+-*%&|^!~?:=/\".indexOf(ch1)>=0?{type:Token.Punctuator,value:source[index++],lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}:void 0):{type:Token.Punctuator,value:source[index++],lineNumber:lineNumber,lineStart:lineStart,range:[start,index]})}function scanNumericLiteral(){var number,start,ch;if(ch=source[index],assert(isDecimalDigit(ch)||\".\"===ch,\"Numeric literal must start with a decimal digit or a decimal point\"),start=index,number=\"\",\".\"!==ch){if(number=source[index++],ch=source[index],\"0\"===number){if(\"x\"===ch||\"X\"===ch){for(number+=source[index++];length>index&&(ch=source[index],isHexDigit(ch));)number+=source[index++];return 2>=number.length&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\"),length>index&&(ch=source[index],isIdentifierStart(ch)&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\")),{type:Token.NumericLiteral,value:parseInt(number,16),lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}}if(isOctalDigit(ch)){for(number+=source[index++];length>index&&(ch=source[index],isOctalDigit(ch));)number+=source[index++];return length>index&&(ch=source[index],(isIdentifierStart(ch)||isDecimalDigit(ch))&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\")),{type:Token.NumericLiteral,value:parseInt(number,8),octal:!0,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}}isDecimalDigit(ch)&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\")}for(;length>index&&(ch=source[index],isDecimalDigit(ch));)number+=source[index++]}if(\".\"===ch)for(number+=source[index++];length>index&&(ch=source[index],isDecimalDigit(ch));)number+=source[index++];if(\"e\"===ch||\"E\"===ch)if(number+=source[index++],ch=source[index],(\"+\"===ch||\"-\"===ch)&&(number+=source[index++]),ch=source[index],isDecimalDigit(ch))for(number+=source[index++];length>index&&(ch=source[index],isDecimalDigit(ch));)number+=source[index++];else ch=\"character \"+ch,index>=length&&(ch=\"\u003Cend>\"),throwError({},Messages.UnexpectedToken,\"ILLEGAL\");return length>index&&(ch=source[index],isIdentifierStart(ch)&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\")),{type:Token.NumericLiteral,value:parseFloat(number),lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}}function scanStringLiteral(){var quote,start,ch,code,unescaped,restore,str=\"\",octal=!1;for(quote=source[index],assert(\"'\"===quote||'\"'===quote,\"String literal must starts with a quote\"),start=index,++index;length>index;){if(ch=source[index++],ch===quote){quote=\"\";break}if(\"\\\\\"===ch)if(ch=source[index++],isLineTerminator(ch))++lineNumber,\"\\r\"===ch&&\"\\n\"===source[index]&&++index;else switch(ch){case\"n\":str+=\"\\n\";break;case\"r\":str+=\"\\r\";break;case\"t\":str+=\"\t\";break;case\"u\":case\"x\":restore=index,unescaped=scanHexEscape(ch),unescaped?str+=unescaped:(index=restore,str+=ch);break;case\"b\":str+=\"\\b\";break;case\"f\":str+=\"\\f\";break;case\"v\":str+=\"\u000b\";break;default:isOctalDigit(ch)?(code=\"01234567\".indexOf(ch),0!==code&&(octal=!0),length>index&&isOctalDigit(source[index])&&(octal=!0,code=8*code+\"01234567\".indexOf(source[index++]),\"0123\".indexOf(ch)>=0&&length>index&&isOctalDigit(source[index])&&(code=8*code+\"01234567\".indexOf(source[index++]))),str+=String.fromCharCode(code)):str+=ch}else{if(isLineTerminator(ch))break;str+=ch}}return\"\"!==quote&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\"),{type:Token.StringLiteral,value:str,octal:octal,lineNumber:lineNumber,lineStart:lineStart,range:[start,index]}}function scanRegExp(){var str,ch,start,pattern,flags,value,restore,classMarker=!1,terminated=!1;for(buffer=null,skipComment(),start=index,ch=source[index],assert(\"/\"===ch,\"Regular expression literal must start with a slash\"),str=source[index++];length>index;)if(ch=source[index++],str+=ch,classMarker)\"]\"===ch&&(classMarker=!1);else if(\"\\\\\"===ch)ch=source[index++],isLineTerminator(ch)&&throwError({},Messages.UnterminatedRegExp),str+=ch;else{if(\"/\"===ch){terminated=!0;break}\"[\"===ch?classMarker=!0:isLineTerminator(ch)&&throwError({},Messages.UnterminatedRegExp)}for(terminated||throwError({},Messages.UnterminatedRegExp),pattern=str.substr(1,str.length-2),flags=\"\";length>index&&(ch=source[index],isIdentifierPart(ch));)if(++index,\"\\\\\"===ch&&length>index)if(ch=source[index],\"u\"===ch)if(++index,restore=index,ch=scanHexEscape(\"u\"))for(flags+=ch,str+=\"\\\\u\";index>restore;++restore)str+=source[restore];else index=restore,flags+=\"u\",str+=\"\\\\u\";else str+=\"\\\\\";else flags+=ch,str+=ch;try{value=RegExp(pattern,flags)}catch(e){throwError({},Messages.InvalidRegExp)}return{literal:str,value:value,range:[start,index]}}function isIdentifierName(token){return token.type===Token.Identifier||token.type===Token.Keyword||token.type===Token.BooleanLiteral||token.type===Token.NullLiteral}function advance(){var ch,token;return skipComment(),index>=length?{type:Token.EOF,lineNumber:lineNumber,lineStart:lineStart,range:[index,index]}:(token=scanPunctuator(),token!==void 0?token:(ch=source[index],\"'\"===ch||'\"'===ch?scanStringLiteral():\".\"===ch||isDecimalDigit(ch)?scanNumericLiteral():(token=scanIdentifier(),token!==void 0?token:(throwError({},Messages.UnexpectedToken,\"ILLEGAL\"),void 0))))}function lex(){var token;return buffer?(index=buffer.range[1],lineNumber=buffer.lineNumber,lineStart=buffer.lineStart,token=buffer,buffer=null,token):(buffer=null,advance())}function lookahead(){var pos,line,start;return null!==buffer?buffer:(pos=index,line=lineNumber,start=lineStart,buffer=advance(),index=pos,lineNumber=line,lineStart=start,buffer)}function peekLineTerminator(){var pos,line,start,found;return pos=index,line=lineNumber,start=lineStart,skipComment(),found=lineNumber!==line,index=pos,lineNumber=line,lineStart=start,found}function throwError(token,messageFormat){var error,args=Array.prototype.slice.call(arguments,2),msg=messageFormat.replace(/%(\\d)/g,function(whole,index){return args[index]||\"\"});throw\"number\"==typeof token.lineNumber?(error=Error(\"Line \"+token.lineNumber+\": \"+msg),error.index=token.range[0],error.lineNumber=token.lineNumber,error.column=token.range[0]-lineStart+1):(error=Error(\"Line \"+lineNumber+\": \"+msg),error.index=index,error.lineNumber=lineNumber,error.column=index-lineStart+1),error}function throwErrorTolerant(){try{throwError.apply(null,arguments)}catch(e){if(!extra.errors)throw e;extra.errors.push(e)}}function throwUnexpected(token){if(token.type===Token.EOF&&throwError(token,Messages.UnexpectedEOS),token.type===Token.NumericLiteral&&throwError(token,Messages.UnexpectedNumber),token.type===Token.StringLiteral&&throwError(token,Messages.UnexpectedString),token.type===Token.Identifier&&throwError(token,Messages.UnexpectedIdentifier),token.type===Token.Keyword){if(isFutureReservedWord(token.value))throwError(token,Messages.UnexpectedReserved);else if(strict&&isStrictModeReservedWord(token.value))return throwErrorTolerant(token,Messages.StrictReservedWord),void 0;throwError(token,Messages.UnexpectedToken,token.value)}throwError(token,Messages.UnexpectedToken,token.value)}function expect(value){var token=lex();(token.type!==Token.Punctuator||token.value!==value)&&throwUnexpected(token)}function expectKeyword(keyword){var token=lex();(token.type!==Token.Keyword||token.value!==keyword)&&throwUnexpected(token)}function match(value){var token=lookahead();return token.type===Token.Punctuator&&token.value===value}function matchKeyword(keyword){var token=lookahead();return token.type===Token.Keyword&&token.value===keyword}function matchAssign(){var token=lookahead(),op=token.value;return token.type!==Token.Punctuator?!1:\"=\"===op||\"*=\"===op||\"/=\"===op||\"%=\"===op||\"+=\"===op||\"-=\"===op||\"\u003C\u003C=\"===op||\">>=\"===op||\">>>=\"===op||\"&=\"===op||\"^=\"===op||\"|=\"===op}function consumeSemicolon(){var token,line;if(\";\"===source[index])return lex(),void 0;if(line=lineNumber,skipComment(),lineNumber===line){if(match(\";\"))return lex(),void 0;token=lookahead(),token.type===Token.EOF||match(\"}\")||throwUnexpected(token)}}function isLeftHandSide(expr){return expr.type===Syntax.Identifier||expr.type===Syntax.MemberExpression}function parseArrayInitialiser(){var elements=[];for(expect(\"[\");!match(\"]\");)match(\",\")?(lex(),elements.push(null)):(elements.push(parseAssignmentExpression()),match(\"]\")||expect(\",\"));return expect(\"]\"),{type:Syntax.ArrayExpression,elements:elements}}function parsePropertyFunction(param,first){var previousStrict,body;return previousStrict=strict,body=parseFunctionSourceElements(),first&&strict&&isRestrictedWord(param[0].name)&&throwErrorTolerant(first,Messages.StrictParamName),strict=previousStrict,{type:Syntax.FunctionExpression,id:null,params:param,defaults:[],body:body,rest:null,generator:!1,expression:!1}}function parseObjectPropertyKey(){var token=lex();return token.type===Token.StringLiteral||token.type===Token.NumericLiteral?(strict&&token.octal&&throwErrorTolerant(token,Messages.StrictOctalLiteral),createLiteral(token)):{type:Syntax.Identifier,name:token.value}}function parseObjectProperty(){var token,key,id,param;return token=lookahead(),token.type===Token.Identifier?(id=parseObjectPropertyKey(),\"get\"!==token.value||match(\":\")?\"set\"!==token.value||match(\":\")?(expect(\":\"),{type:Syntax.Property,key:id,value:parseAssignmentExpression(),kind:\"init\"}):(key=parseObjectPropertyKey(),expect(\"(\"),token=lookahead(),token.type!==Token.Identifier&&throwUnexpected(lex()),param=[parseVariableIdentifier()],expect(\")\"),{type:Syntax.Property,key:key,value:parsePropertyFunction(param,token),kind:\"set\"}):(key=parseObjectPropertyKey(),expect(\"(\"),expect(\")\"),{type:Syntax.Property,key:key,value:parsePropertyFunction([]),kind:\"get\"})):token.type!==Token.EOF&&token.type!==Token.Punctuator?(key=parseObjectPropertyKey(),expect(\":\"),{type:Syntax.Property,key:key,value:parseAssignmentExpression(),kind:\"init\"}):(throwUnexpected(token),void 0)}function parseObjectInitialiser(){var property,name,kind,properties=[],map={},toString=String;for(expect(\"{\");!match(\"}\");)property=parseObjectProperty(),name=property.key.type===Syntax.Identifier?property.key.name:toString(property.key.value),kind=\"init\"===property.kind?PropertyKind.Data:\"get\"===property.kind?PropertyKind.Get:PropertyKind.Set,Object.prototype.hasOwnProperty.call(map,name)?(map[name]===PropertyKind.Data?strict&&kind===PropertyKind.Data?throwErrorTolerant({},Messages.StrictDuplicateProperty):kind!==PropertyKind.Data&&throwErrorTolerant({},Messages.AccessorDataProperty):kind===PropertyKind.Data?throwErrorTolerant({},Messages.AccessorDataProperty):map[name]&kind&&throwErrorTolerant({},Messages.AccessorGetSet),map[name]|=kind):map[name]=kind,properties.push(property),match(\"}\")||expect(\",\");return expect(\"}\"),{type:Syntax.ObjectExpression,properties:properties}}function parseGroupExpression(){var expr;return expect(\"(\"),expr=parseExpression(),expect(\")\"),expr}function parsePrimaryExpression(){var token=lookahead(),type=token.type;if(type===Token.Identifier)return{type:Syntax.Identifier,name:lex().value};if(type===Token.StringLiteral||type===Token.NumericLiteral)return strict&&token.octal&&throwErrorTolerant(token,Messages.StrictOctalLiteral),createLiteral(lex());if(type===Token.Keyword){if(matchKeyword(\"this\"))return lex(),{type:Syntax.ThisExpression};if(matchKeyword(\"function\"))return parseFunctionExpression()}return type===Token.BooleanLiteral?(lex(),token.value=\"true\"===token.value,createLiteral(token)):type===Token.NullLiteral?(lex(),token.value=null,createLiteral(token)):match(\"[\")?parseArrayInitialiser():match(\"{\")?parseObjectInitialiser():match(\"(\")?parseGroupExpression():match(\"/\")||match(\"/=\")?createLiteral(scanRegExp()):throwUnexpected(lex())}function parseArguments(){var args=[];if(expect(\"(\"),!match(\")\"))for(;length>index&&(args.push(parseAssignmentExpression()),!match(\")\"));)expect(\",\");return expect(\")\"),args}function parseNonComputedProperty(){var token=lex();return isIdentifierName(token)||throwUnexpected(token),{type:Syntax.Identifier,name:token.value}}function parseNonComputedMember(){return expect(\".\"),parseNonComputedProperty()}function parseComputedMember(){var expr;return expect(\"[\"),expr=parseExpression(),expect(\"]\"),expr}function parseNewExpression(){var expr;return expectKeyword(\"new\"),expr={type:Syntax.NewExpression,callee:parseLeftHandSideExpression(),arguments:[]},match(\"(\")&&(expr.arguments=parseArguments()),expr}function parseLeftHandSideExpressionAllowCall(){var expr;for(expr=matchKeyword(\"new\")?parseNewExpression():parsePrimaryExpression();match(\".\")||match(\"[\")||match(\"(\");)expr=match(\"(\")?{type:Syntax.CallExpression,callee:expr,arguments:parseArguments()}:match(\"[\")?{type:Syntax.MemberExpression,computed:!0,object:expr,property:parseComputedMember()}:{type:Syntax.MemberExpression,computed:!1,object:expr,property:parseNonComputedMember()};return expr}function parseLeftHandSideExpression(){var expr;for(expr=matchKeyword(\"new\")?parseNewExpression():parsePrimaryExpression();match(\".\")||match(\"[\");)expr=match(\"[\")?{type:Syntax.MemberExpression,computed:!0,object:expr,property:parseComputedMember()}:{type:Syntax.MemberExpression,computed:!1,object:expr,property:parseNonComputedMember()};return expr}function parsePostfixExpression(){var token,expr=parseLeftHandSideExpressionAllowCall();return token=lookahead(),token.type!==Token.Punctuator?expr:(!match(\"++\")&&!match(\"--\")||peekLineTerminator()||(strict&&expr.type===Syntax.Identifier&&isRestrictedWord(expr.name)&&throwErrorTolerant({},Messages.StrictLHSPostfix),isLeftHandSide(expr)||throwError({},Messages.InvalidLHSInAssignment),expr={type:Syntax.UpdateExpression,operator:lex().value,argument:expr,prefix:!1}),expr)}function parseUnaryExpression(){var token,expr;return token=lookahead(),token.type!==Token.Punctuator&&token.type!==Token.Keyword?parsePostfixExpression():match(\"++\")||match(\"--\")?(token=lex(),expr=parseUnaryExpression(),strict&&expr.type===Syntax.Identifier&&isRestrictedWord(expr.name)&&throwErrorTolerant({},Messages.StrictLHSPrefix),isLeftHandSide(expr)||throwError({},Messages.InvalidLHSInAssignment),expr={type:Syntax.UpdateExpression,operator:token.value,argument:expr,prefix:!0}):match(\"+\")||match(\"-\")||match(\"~\")||match(\"!\")?expr={type:Syntax.UnaryExpression,operator:lex().value,argument:parseUnaryExpression()}:matchKeyword(\"delete\")||matchKeyword(\"void\")||matchKeyword(\"typeof\")?(expr={type:Syntax.UnaryExpression,operator:lex().value,argument:parseUnaryExpression()},strict&&\"delete\"===expr.operator&&expr.argument.type===Syntax.Identifier&&throwErrorTolerant({},Messages.StrictDelete),expr):parsePostfixExpression()\n}function parseMultiplicativeExpression(){for(var expr=parseUnaryExpression();match(\"*\")||match(\"/\")||match(\"%\");)expr={type:Syntax.BinaryExpression,operator:lex().value,left:expr,right:parseUnaryExpression()};return expr}function parseAdditiveExpression(){for(var expr=parseMultiplicativeExpression();match(\"+\")||match(\"-\");)expr={type:Syntax.BinaryExpression,operator:lex().value,left:expr,right:parseMultiplicativeExpression()};return expr}function parseShiftExpression(){for(var expr=parseAdditiveExpression();match(\"\u003C\u003C\")||match(\">>\")||match(\">>>\");)expr={type:Syntax.BinaryExpression,operator:lex().value,left:expr,right:parseAdditiveExpression()};return expr}function parseRelationalExpression(){var expr,previousAllowIn;for(previousAllowIn=state.allowIn,state.allowIn=!0,expr=parseShiftExpression();match(\"\u003C\")||match(\">\")||match(\"\u003C=\")||match(\">=\")||previousAllowIn&&matchKeyword(\"in\")||matchKeyword(\"instanceof\");)expr={type:Syntax.BinaryExpression,operator:lex().value,left:expr,right:parseShiftExpression()};return state.allowIn=previousAllowIn,expr}function parseEqualityExpression(){for(var expr=parseRelationalExpression();match(\"==\")||match(\"!=\")||match(\"===\")||match(\"!==\");)expr={type:Syntax.BinaryExpression,operator:lex().value,left:expr,right:parseRelationalExpression()};return expr}function parseBitwiseANDExpression(){for(var expr=parseEqualityExpression();match(\"&\");)lex(),expr={type:Syntax.BinaryExpression,operator:\"&\",left:expr,right:parseEqualityExpression()};return expr}function parseBitwiseXORExpression(){for(var expr=parseBitwiseANDExpression();match(\"^\");)lex(),expr={type:Syntax.BinaryExpression,operator:\"^\",left:expr,right:parseBitwiseANDExpression()};return expr}function parseBitwiseORExpression(){for(var expr=parseBitwiseXORExpression();match(\"|\");)lex(),expr={type:Syntax.BinaryExpression,operator:\"|\",left:expr,right:parseBitwiseXORExpression()};return expr}function parseLogicalANDExpression(){for(var expr=parseBitwiseORExpression();match(\"&&\");)lex(),expr={type:Syntax.LogicalExpression,operator:\"&&\",left:expr,right:parseBitwiseORExpression()};return expr}function parseLogicalORExpression(){for(var expr=parseLogicalANDExpression();match(\"||\");)lex(),expr={type:Syntax.LogicalExpression,operator:\"||\",left:expr,right:parseLogicalANDExpression()};return expr}function parseConditionalExpression(){var expr,previousAllowIn,consequent;return expr=parseLogicalORExpression(),match(\"?\")&&(lex(),previousAllowIn=state.allowIn,state.allowIn=!0,consequent=parseAssignmentExpression(),state.allowIn=previousAllowIn,expect(\":\"),expr={type:Syntax.ConditionalExpression,test:expr,consequent:consequent,alternate:parseAssignmentExpression()}),expr}function parseAssignmentExpression(){var token,expr;return token=lookahead(),expr=parseConditionalExpression(),matchAssign()&&(isLeftHandSide(expr)||throwError({},Messages.InvalidLHSInAssignment),strict&&expr.type===Syntax.Identifier&&isRestrictedWord(expr.name)&&throwErrorTolerant(token,Messages.StrictLHSAssignment),expr={type:Syntax.AssignmentExpression,operator:lex().value,left:expr,right:parseAssignmentExpression()}),expr}function parseExpression(){var expr=parseAssignmentExpression();if(match(\",\"))for(expr={type:Syntax.SequenceExpression,expressions:[expr]};length>index&&match(\",\");)lex(),expr.expressions.push(parseAssignmentExpression());return expr}function parseStatementList(){for(var statement,list=[];length>index&&!match(\"}\")&&(statement=parseSourceElement(),void 0!==statement);)list.push(statement);return list}function parseBlock(){var block;return expect(\"{\"),block=parseStatementList(),expect(\"}\"),{type:Syntax.BlockStatement,body:block}}function parseVariableIdentifier(){var token=lex();return token.type!==Token.Identifier&&throwUnexpected(token),{type:Syntax.Identifier,name:token.value}}function parseVariableDeclaration(kind){var id=parseVariableIdentifier(),init=null;return strict&&isRestrictedWord(id.name)&&throwErrorTolerant({},Messages.StrictVarName),\"const\"===kind?(expect(\"=\"),init=parseAssignmentExpression()):match(\"=\")&&(lex(),init=parseAssignmentExpression()),{type:Syntax.VariableDeclarator,id:id,init:init}}function parseVariableDeclarationList(kind){for(var list=[];length>index&&(list.push(parseVariableDeclaration(kind)),match(\",\"));)lex();return list}function parseVariableStatement(){var declarations;return expectKeyword(\"var\"),declarations=parseVariableDeclarationList(),consumeSemicolon(),{type:Syntax.VariableDeclaration,declarations:declarations,kind:\"var\"}}function parseConstLetDeclaration(kind){var declarations;return expectKeyword(kind),declarations=parseVariableDeclarationList(kind),consumeSemicolon(),{type:Syntax.VariableDeclaration,declarations:declarations,kind:kind}}function parseEmptyStatement(){return expect(\";\"),{type:Syntax.EmptyStatement}}function parseExpressionStatement(){var expr=parseExpression();return consumeSemicolon(),{type:Syntax.ExpressionStatement,expression:expr}}function parseIfStatement(){var test,consequent,alternate;return expectKeyword(\"if\"),expect(\"(\"),test=parseExpression(),expect(\")\"),consequent=parseStatement(),matchKeyword(\"else\")?(lex(),alternate=parseStatement()):alternate=null,{type:Syntax.IfStatement,test:test,consequent:consequent,alternate:alternate}}function parseDoWhileStatement(){var body,test,oldInIteration;return expectKeyword(\"do\"),oldInIteration=state.inIteration,state.inIteration=!0,body=parseStatement(),state.inIteration=oldInIteration,expectKeyword(\"while\"),expect(\"(\"),test=parseExpression(),expect(\")\"),match(\";\")&&lex(),{type:Syntax.DoWhileStatement,body:body,test:test}}function parseWhileStatement(){var test,body,oldInIteration;return expectKeyword(\"while\"),expect(\"(\"),test=parseExpression(),expect(\")\"),oldInIteration=state.inIteration,state.inIteration=!0,body=parseStatement(),state.inIteration=oldInIteration,{type:Syntax.WhileStatement,test:test,body:body}}function parseForVariableDeclaration(){var token=lex();return{type:Syntax.VariableDeclaration,declarations:parseVariableDeclarationList(),kind:token.value}}function parseForStatement(){var init,test,update,left,right,body,oldInIteration;return init=test=update=null,expectKeyword(\"for\"),expect(\"(\"),match(\";\")?lex():(matchKeyword(\"var\")||matchKeyword(\"let\")?(state.allowIn=!1,init=parseForVariableDeclaration(),state.allowIn=!0,1===init.declarations.length&&matchKeyword(\"in\")&&(lex(),left=init,right=parseExpression(),init=null)):(state.allowIn=!1,init=parseExpression(),state.allowIn=!0,matchKeyword(\"in\")&&(isLeftHandSide(init)||throwError({},Messages.InvalidLHSInForIn),lex(),left=init,right=parseExpression(),init=null)),left===void 0&&expect(\";\")),left===void 0&&(match(\";\")||(test=parseExpression()),expect(\";\"),match(\")\")||(update=parseExpression())),expect(\")\"),oldInIteration=state.inIteration,state.inIteration=!0,body=parseStatement(),state.inIteration=oldInIteration,left===void 0?{type:Syntax.ForStatement,init:init,test:test,update:update,body:body}:{type:Syntax.ForInStatement,left:left,right:right,body:body,each:!1}}function parseContinueStatement(){var token,label=null;return expectKeyword(\"continue\"),\";\"===source[index]?(lex(),state.inIteration||throwError({},Messages.IllegalContinue),{type:Syntax.ContinueStatement,label:null}):peekLineTerminator()?(state.inIteration||throwError({},Messages.IllegalContinue),{type:Syntax.ContinueStatement,label:null}):(token=lookahead(),token.type===Token.Identifier&&(label=parseVariableIdentifier(),Object.prototype.hasOwnProperty.call(state.labelSet,label.name)||throwError({},Messages.UnknownLabel,label.name)),consumeSemicolon(),null!==label||state.inIteration||throwError({},Messages.IllegalContinue),{type:Syntax.ContinueStatement,label:label})}function parseBreakStatement(){var token,label=null;return expectKeyword(\"break\"),\";\"===source[index]?(lex(),state.inIteration||state.inSwitch||throwError({},Messages.IllegalBreak),{type:Syntax.BreakStatement,label:null}):peekLineTerminator()?(state.inIteration||state.inSwitch||throwError({},Messages.IllegalBreak),{type:Syntax.BreakStatement,label:null}):(token=lookahead(),token.type===Token.Identifier&&(label=parseVariableIdentifier(),Object.prototype.hasOwnProperty.call(state.labelSet,label.name)||throwError({},Messages.UnknownLabel,label.name)),consumeSemicolon(),null!==label||state.inIteration||state.inSwitch||throwError({},Messages.IllegalBreak),{type:Syntax.BreakStatement,label:label})}function parseReturnStatement(){var token,argument=null;return expectKeyword(\"return\"),state.inFunctionBody||throwErrorTolerant({},Messages.IllegalReturn),\" \"===source[index]&&isIdentifierStart(source[index+1])?(argument=parseExpression(),consumeSemicolon(),{type:Syntax.ReturnStatement,argument:argument}):peekLineTerminator()?{type:Syntax.ReturnStatement,argument:null}:(match(\";\")||(token=lookahead(),match(\"}\")||token.type===Token.EOF||(argument=parseExpression())),consumeSemicolon(),{type:Syntax.ReturnStatement,argument:argument})}function parseWithStatement(){var object,body;return strict&&throwErrorTolerant({},Messages.StrictModeWith),expectKeyword(\"with\"),expect(\"(\"),object=parseExpression(),expect(\")\"),body=parseStatement(),{type:Syntax.WithStatement,object:object,body:body}}function parseSwitchCase(){var test,statement,consequent=[];for(matchKeyword(\"default\")?(lex(),test=null):(expectKeyword(\"case\"),test=parseExpression()),expect(\":\");length>index&&!(match(\"}\")||matchKeyword(\"default\")||matchKeyword(\"case\"))&&(statement=parseStatement(),void 0!==statement);)consequent.push(statement);return{type:Syntax.SwitchCase,test:test,consequent:consequent}}function parseSwitchStatement(){var discriminant,cases,clause,oldInSwitch,defaultFound;if(expectKeyword(\"switch\"),expect(\"(\"),discriminant=parseExpression(),expect(\")\"),expect(\"{\"),match(\"}\"))return lex(),{type:Syntax.SwitchStatement,discriminant:discriminant};for(cases=[],oldInSwitch=state.inSwitch,state.inSwitch=!0,defaultFound=!1;length>index&&!match(\"}\");)clause=parseSwitchCase(),null===clause.test&&(defaultFound&&throwError({},Messages.MultipleDefaultsInSwitch),defaultFound=!0),cases.push(clause);return state.inSwitch=oldInSwitch,expect(\"}\"),{type:Syntax.SwitchStatement,discriminant:discriminant,cases:cases}}function parseThrowStatement(){var argument;return expectKeyword(\"throw\"),peekLineTerminator()&&throwError({},Messages.NewlineAfterThrow),argument=parseExpression(),consumeSemicolon(),{type:Syntax.ThrowStatement,argument:argument}}function parseCatchClause(){var param;return expectKeyword(\"catch\"),expect(\"(\"),match(\")\")||(param=parseExpression(),strict&¶m.type===Syntax.Identifier&&isRestrictedWord(param.name)&&throwErrorTolerant({},Messages.StrictCatchVariable)),expect(\")\"),{type:Syntax.CatchClause,param:param,body:parseBlock()}}function parseTryStatement(){var block,handlers=[],finalizer=null;return expectKeyword(\"try\"),block=parseBlock(),matchKeyword(\"catch\")&&handlers.push(parseCatchClause()),matchKeyword(\"finally\")&&(lex(),finalizer=parseBlock()),0!==handlers.length||finalizer||throwError({},Messages.NoCatchOrFinally),{type:Syntax.TryStatement,block:block,guardedHandlers:[],handlers:handlers,finalizer:finalizer}}function parseDebuggerStatement(){return expectKeyword(\"debugger\"),consumeSemicolon(),{type:Syntax.DebuggerStatement}}function parseStatement(){var expr,labeledBody,token=lookahead();if(token.type===Token.EOF&&throwUnexpected(token),token.type===Token.Punctuator)switch(token.value){case\";\":return parseEmptyStatement();case\"{\":return parseBlock();case\"(\":return parseExpressionStatement();default:}if(token.type===Token.Keyword)switch(token.value){case\"break\":return parseBreakStatement();case\"continue\":return parseContinueStatement();case\"debugger\":return parseDebuggerStatement();case\"do\":return parseDoWhileStatement();case\"for\":return parseForStatement();case\"function\":return parseFunctionDeclaration();case\"if\":return parseIfStatement();case\"return\":return parseReturnStatement();case\"switch\":return parseSwitchStatement();case\"throw\":return parseThrowStatement();case\"try\":return parseTryStatement();case\"var\":return parseVariableStatement();case\"while\":return parseWhileStatement();case\"with\":return parseWithStatement();default:}return expr=parseExpression(),expr.type===Syntax.Identifier&&match(\":\")?(lex(),Object.prototype.hasOwnProperty.call(state.labelSet,expr.name)&&throwError({},Messages.Redeclaration,\"Label\",expr.name),state.labelSet[expr.name]=!0,labeledBody=parseStatement(),delete state.labelSet[expr.name],{type:Syntax.LabeledStatement,label:expr,body:labeledBody}):(consumeSemicolon(),{type:Syntax.ExpressionStatement,expression:expr})}function parseFunctionSourceElements(){var sourceElement,token,directive,firstRestricted,oldLabelSet,oldInIteration,oldInSwitch,oldInFunctionBody,sourceElements=[];for(expect(\"{\");length>index&&(token=lookahead(),token.type===Token.StringLiteral)&&(sourceElement=parseSourceElement(),sourceElements.push(sourceElement),sourceElement.expression.type===Syntax.Literal);)directive=sliceSource(token.range[0]+1,token.range[1]-1),\"use strict\"===directive?(strict=!0,firstRestricted&&throwErrorTolerant(firstRestricted,Messages.StrictOctalLiteral)):!firstRestricted&&token.octal&&(firstRestricted=token);for(oldLabelSet=state.labelSet,oldInIteration=state.inIteration,oldInSwitch=state.inSwitch,oldInFunctionBody=state.inFunctionBody,state.labelSet={},state.inIteration=!1,state.inSwitch=!1,state.inFunctionBody=!0;length>index&&!match(\"}\")&&(sourceElement=parseSourceElement(),void 0!==sourceElement);)sourceElements.push(sourceElement);return expect(\"}\"),state.labelSet=oldLabelSet,state.inIteration=oldInIteration,state.inSwitch=oldInSwitch,state.inFunctionBody=oldInFunctionBody,{type:Syntax.BlockStatement,body:sourceElements}}function parseFunctionDeclaration(){var id,param,body,token,stricted,firstRestricted,message,previousStrict,paramSet,params=[];if(expectKeyword(\"function\"),token=lookahead(),id=parseVariableIdentifier(),strict?isRestrictedWord(token.value)&&throwErrorTolerant(token,Messages.StrictFunctionName):isRestrictedWord(token.value)?(firstRestricted=token,message=Messages.StrictFunctionName):isStrictModeReservedWord(token.value)&&(firstRestricted=token,message=Messages.StrictReservedWord),expect(\"(\"),!match(\")\"))for(paramSet={};length>index&&(token=lookahead(),param=parseVariableIdentifier(),strict?(isRestrictedWord(token.value)&&(stricted=token,message=Messages.StrictParamName),Object.prototype.hasOwnProperty.call(paramSet,token.value)&&(stricted=token,message=Messages.StrictParamDupe)):firstRestricted||(isRestrictedWord(token.value)?(firstRestricted=token,message=Messages.StrictParamName):isStrictModeReservedWord(token.value)?(firstRestricted=token,message=Messages.StrictReservedWord):Object.prototype.hasOwnProperty.call(paramSet,token.value)&&(firstRestricted=token,message=Messages.StrictParamDupe)),params.push(param),paramSet[param.name]=!0,!match(\")\"));)expect(\",\");return expect(\")\"),previousStrict=strict,body=parseFunctionSourceElements(),strict&&firstRestricted&&throwError(firstRestricted,message),strict&&stricted&&throwErrorTolerant(stricted,message),strict=previousStrict,{type:Syntax.FunctionDeclaration,id:id,params:params,defaults:[],body:body,rest:null,generator:!1,expression:!1}}function parseFunctionExpression(){var token,stricted,firstRestricted,message,param,body,previousStrict,paramSet,id=null,params=[];if(expectKeyword(\"function\"),match(\"(\")||(token=lookahead(),id=parseVariableIdentifier(),strict?isRestrictedWord(token.value)&&throwErrorTolerant(token,Messages.StrictFunctionName):isRestrictedWord(token.value)?(firstRestricted=token,message=Messages.StrictFunctionName):isStrictModeReservedWord(token.value)&&(firstRestricted=token,message=Messages.StrictReservedWord)),expect(\"(\"),!match(\")\"))for(paramSet={};length>index&&(token=lookahead(),param=parseVariableIdentifier(),strict?(isRestrictedWord(token.value)&&(stricted=token,message=Messages.StrictParamName),Object.prototype.hasOwnProperty.call(paramSet,token.value)&&(stricted=token,message=Messages.StrictParamDupe)):firstRestricted||(isRestrictedWord(token.value)?(firstRestricted=token,message=Messages.StrictParamName):isStrictModeReservedWord(token.value)?(firstRestricted=token,message=Messages.StrictReservedWord):Object.prototype.hasOwnProperty.call(paramSet,token.value)&&(firstRestricted=token,message=Messages.StrictParamDupe)),params.push(param),paramSet[param.name]=!0,!match(\")\"));)expect(\",\");return expect(\")\"),previousStrict=strict,body=parseFunctionSourceElements(),strict&&firstRestricted&&throwError(firstRestricted,message),strict&&stricted&&throwErrorTolerant(stricted,message),strict=previousStrict,{type:Syntax.FunctionExpression,id:id,params:params,defaults:[],body:body,rest:null,generator:!1,expression:!1}}function parseSourceElement(){var token=lookahead();if(token.type===Token.Keyword)switch(token.value){case\"const\":case\"let\":return parseConstLetDeclaration(token.value);case\"function\":return parseFunctionDeclaration();default:return parseStatement()}return token.type!==Token.EOF?parseStatement():void 0}function parseSourceElements(){for(var sourceElement,token,directive,firstRestricted,sourceElements=[];length>index&&(token=lookahead(),token.type===Token.StringLiteral)&&(sourceElement=parseSourceElement(),sourceElements.push(sourceElement),sourceElement.expression.type===Syntax.Literal);)directive=sliceSource(token.range[0]+1,token.range[1]-1),\"use strict\"===directive?(strict=!0,firstRestricted&&throwErrorTolerant(firstRestricted,Messages.StrictOctalLiteral)):!firstRestricted&&token.octal&&(firstRestricted=token);for(;length>index&&(sourceElement=parseSourceElement(),void 0!==sourceElement);)sourceElements.push(sourceElement);return sourceElements}function parseProgram(){var program;return strict=!1,program={type:Syntax.Program,body:parseSourceElements()}}function addComment(type,value,start,end,loc){assert(\"number\"==typeof start,\"Comment must have valid position\"),extra.comments.length>0&&extra.comments[extra.comments.length-1].range[1]>start||extra.comments.push({type:type,value:value,range:[start,end],loc:loc})}function scanComment(){var comment,ch,loc,start,blockComment,lineComment;for(comment=\"\",blockComment=!1,lineComment=!1;length>index;)if(ch=source[index],lineComment)ch=source[index++],isLineTerminator(ch)?(loc.end={line:lineNumber,column:index-lineStart-1},lineComment=!1,addComment(\"Line\",comment,start,index-1,loc),\"\\r\"===ch&&\"\\n\"===source[index]&&++index,++lineNumber,lineStart=index,comment=\"\"):index>=length?(lineComment=!1,comment+=ch,loc.end={line:lineNumber,column:length-lineStart},addComment(\"Line\",comment,start,length,loc)):comment+=ch;else if(blockComment)isLineTerminator(ch)?(\"\\r\"===ch&&\"\\n\"===source[index+1]?(++index,comment+=\"\\r\\n\"):comment+=ch,++lineNumber,++index,lineStart=index,index>=length&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\")):(ch=source[index++],index>=length&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\"),comment+=ch,\"*\"===ch&&(ch=source[index],\"/\"===ch&&(comment=comment.substr(0,comment.length-1),blockComment=!1,++index,loc.end={line:lineNumber,column:index-lineStart},addComment(\"Block\",comment,start,index,loc),comment=\"\")));else if(\"/\"===ch)if(ch=source[index+1],\"/\"===ch)loc={start:{line:lineNumber,column:index-lineStart}},start=index,index+=2,lineComment=!0,index>=length&&(loc.end={line:lineNumber,column:index-lineStart},lineComment=!1,addComment(\"Line\",comment,start,index,loc));else{if(\"*\"!==ch)break;start=index,index+=2,blockComment=!0,loc={start:{line:lineNumber,column:index-lineStart-2}},index>=length&&throwError({},Messages.UnexpectedToken,\"ILLEGAL\")}else if(isWhiteSpace(ch))++index;else{if(!isLineTerminator(ch))break;++index,\"\\r\"===ch&&\"\\n\"===source[index]&&++index,++lineNumber,lineStart=index}}function filterCommentLocation(){var i,entry,comment,comments=[];for(i=0;extra.comments.length>i;++i)entry=extra.comments[i],comment={type:entry.type,value:entry.value},extra.range&&(comment.range=entry.range),extra.loc&&(comment.loc=entry.loc),comments.push(comment);extra.comments=comments}function collectToken(){var start,loc,token,range,value;return skipComment(),start=index,loc={start:{line:lineNumber,column:index-lineStart}},token=extra.advance(),loc.end={line:lineNumber,column:index-lineStart},token.type!==Token.EOF&&(range=[token.range[0],token.range[1]],value=sliceSource(token.range[0],token.range[1]),extra.tokens.push({type:TokenName[token.type],value:value,range:range,loc:loc})),token}function collectRegex(){var pos,loc,regex,token;return skipComment(),pos=index,loc={start:{line:lineNumber,column:index-lineStart}},regex=extra.scanRegExp(),loc.end={line:lineNumber,column:index-lineStart},extra.tokens.length>0&&(token=extra.tokens[extra.tokens.length-1],token.range[0]===pos&&\"Punctuator\"===token.type&&(\"/\"===token.value||\"/=\"===token.value)&&extra.tokens.pop()),extra.tokens.push({type:\"RegularExpression\",value:regex.literal,range:[pos,index],loc:loc}),regex}function filterTokenLocation(){var i,entry,token,tokens=[];for(i=0;extra.tokens.length>i;++i)entry=extra.tokens[i],token={type:entry.type,value:entry.value},extra.range&&(token.range=entry.range),extra.loc&&(token.loc=entry.loc),tokens.push(token);extra.tokens=tokens}function createLiteral(token){return{type:Syntax.Literal,value:token.value}}function createRawLiteral(token){return{type:Syntax.Literal,value:token.value,raw:sliceSource(token.range[0],token.range[1])}}function createLocationMarker(){var marker={};return marker.range=[index,index],marker.loc={start:{line:lineNumber,column:index-lineStart},end:{line:lineNumber,column:index-lineStart}},marker.end=function(){this.range[1]=index,this.loc.end.line=lineNumber,this.loc.end.column=index-lineStart},marker.applyGroup=function(node){extra.range&&(node.groupRange=[this.range[0],this.range[1]]),extra.loc&&(node.groupLoc={start:{line:this.loc.start.line,column:this.loc.start.column},end:{line:this.loc.end.line,column:this.loc.end.column}})},marker.apply=function(node){extra.range&&(node.range=[this.range[0],this.range[1]]),extra.loc&&(node.loc={start:{line:this.loc.start.line,column:this.loc.start.column},end:{line:this.loc.end.line,column:this.loc.end.column}})},marker}function trackGroupExpression(){var marker,expr;return skipComment(),marker=createLocationMarker(),expect(\"(\"),expr=parseExpression(),expect(\")\"),marker.end(),marker.applyGroup(expr),expr}function trackLeftHandSideExpression(){var marker,expr;for(skipComment(),marker=createLocationMarker(),expr=matchKeyword(\"new\")?parseNewExpression():parsePrimaryExpression();match(\".\")||match(\"[\");)match(\"[\")?(expr={type:Syntax.MemberExpression,computed:!0,object:expr,property:parseComputedMember()},marker.end(),marker.apply(expr)):(expr={type:Syntax.MemberExpression,computed:!1,object:expr,property:parseNonComputedMember()},marker.end(),marker.apply(expr));return expr}function trackLeftHandSideExpressionAllowCall(){var marker,expr;for(skipComment(),marker=createLocationMarker(),expr=matchKeyword(\"new\")?parseNewExpression():parsePrimaryExpression();match(\".\")||match(\"[\")||match(\"(\");)match(\"(\")?(expr={type:Syntax.CallExpression,callee:expr,arguments:parseArguments()},marker.end(),marker.apply(expr)):match(\"[\")?(expr={type:Syntax.MemberExpression,computed:!0,object:expr,property:parseComputedMember()},marker.end(),marker.apply(expr)):(expr={type:Syntax.MemberExpression,computed:!1,object:expr,property:parseNonComputedMember()},marker.end(),marker.apply(expr));return expr}function filterGroup(node){var n,i,entry;n=\"[object Array]\"===Object.prototype.toString.apply(node)?[]:{};for(i in node)node.hasOwnProperty(i)&&\"groupRange\"!==i&&\"groupLoc\"!==i&&(entry=node[i],n[i]=null===entry||\"object\"!=typeof entry||entry instanceof RegExp?entry:filterGroup(entry));return n}function wrapTrackingFunction(range,loc){return function(parseFunction){function isBinary(node){return node.type===Syntax.LogicalExpression||node.type===Syntax.BinaryExpression}function visit(node){var start,end;isBinary(node.left)&&visit(node.left),isBinary(node.right)&&visit(node.right),range&&(node.left.groupRange||node.right.groupRange?(start=node.left.groupRange?node.left.groupRange[0]:node.left.range[0],end=node.right.groupRange?node.right.groupRange[1]:node.right.range[1],node.range=[start,end]):node.range===void 0&&(start=node.left.range[0],end=node.right.range[1],node.range=[start,end])),loc&&(node.left.groupLoc||node.right.groupLoc?(start=node.left.groupLoc?node.left.groupLoc.start:node.left.loc.start,end=node.right.groupLoc?node.right.groupLoc.end:node.right.loc.end,node.loc={start:start,end:end}):node.loc===void 0&&(node.loc={start:node.left.loc.start,end:node.right.loc.end}))}return function(){var marker,node;return skipComment(),marker=createLocationMarker(),node=parseFunction.apply(null,arguments),marker.end(),range&&node.range===void 0&&marker.apply(node),loc&&node.loc===void 0&&marker.apply(node),isBinary(node)&&visit(node),node}}}function patch(){var wrapTracking;extra.comments&&(extra.skipComment=skipComment,skipComment=scanComment),extra.raw&&(extra.createLiteral=createLiteral,createLiteral=createRawLiteral),(extra.range||extra.loc)&&(extra.parseGroupExpression=parseGroupExpression,extra.parseLeftHandSideExpression=parseLeftHandSideExpression,extra.parseLeftHandSideExpressionAllowCall=parseLeftHandSideExpressionAllowCall,parseGroupExpression=trackGroupExpression,parseLeftHandSideExpression=trackLeftHandSideExpression,parseLeftHandSideExpressionAllowCall=trackLeftHandSideExpressionAllowCall,wrapTracking=wrapTrackingFunction(extra.range,extra.loc),extra.parseAdditiveExpression=parseAdditiveExpression,extra.parseAssignmentExpression=parseAssignmentExpression,extra.parseBitwiseANDExpression=parseBitwiseANDExpression,extra.parseBitwiseORExpression=parseBitwiseORExpression,extra.parseBitwiseXORExpression=parseBitwiseXORExpression,extra.parseBlock=parseBlock,extra.parseFunctionSourceElements=parseFunctionSourceElements,extra.parseCatchClause=parseCatchClause,extra.parseComputedMember=parseComputedMember,extra.parseConditionalExpression=parseConditionalExpression,extra.parseConstLetDeclaration=parseConstLetDeclaration,extra.parseEqualityExpression=parseEqualityExpression,extra.parseExpression=parseExpression,extra.parseForVariableDeclaration=parseForVariableDeclaration,extra.parseFunctionDeclaration=parseFunctionDeclaration,extra.parseFunctionExpression=parseFunctionExpression,extra.parseLogicalANDExpression=parseLogicalANDExpression,extra.parseLogicalORExpression=parseLogicalORExpression,extra.parseMultiplicativeExpression=parseMultiplicativeExpression,extra.parseNewExpression=parseNewExpression,extra.parseNonComputedProperty=parseNonComputedProperty,extra.parseObjectProperty=parseObjectProperty,extra.parseObjectPropertyKey=parseObjectPropertyKey,extra.parsePostfixExpression=parsePostfixExpression,extra.parsePrimaryExpression=parsePrimaryExpression,extra.parseProgram=parseProgram,extra.parsePropertyFunction=parsePropertyFunction,extra.parseRelationalExpression=parseRelationalExpression,extra.parseStatement=parseStatement,extra.parseShiftExpression=parseShiftExpression,extra.parseSwitchCase=parseSwitchCase,extra.parseUnaryExpression=parseUnaryExpression,extra.parseVariableDeclaration=parseVariableDeclaration,extra.parseVariableIdentifier=parseVariableIdentifier,parseAdditiveExpression=wrapTracking(extra.parseAdditiveExpression),parseAssignmentExpression=wrapTracking(extra.parseAssignmentExpression),parseBitwiseANDExpression=wrapTracking(extra.parseBitwiseANDExpression),parseBitwiseORExpression=wrapTracking(extra.parseBitwiseORExpression),parseBitwiseXORExpression=wrapTracking(extra.parseBitwiseXORExpression),parseBlock=wrapTracking(extra.parseBlock),parseFunctionSourceElements=wrapTracking(extra.parseFunctionSourceElements),parseCatchClause=wrapTracking(extra.parseCatchClause),parseComputedMember=wrapTracking(extra.parseComputedMember),parseConditionalExpression=wrapTracking(extra.parseConditionalExpression),parseConstLetDeclaration=wrapTracking(extra.parseConstLetDeclaration),parseEqualityExpression=wrapTracking(extra.parseEqualityExpression),parseExpression=wrapTracking(extra.parseExpression),parseForVariableDeclaration=wrapTracking(extra.parseForVariableDeclaration),parseFunctionDeclaration=wrapTracking(extra.parseFunctionDeclaration),parseFunctionExpression=wrapTracking(extra.parseFunctionExpression),parseLeftHandSideExpression=wrapTracking(parseLeftHandSideExpression),parseLogicalANDExpression=wrapTracking(extra.parseLogicalANDExpression),parseLogicalORExpression=wrapTracking(extra.parseLogicalORExpression),parseMultiplicativeExpression=wrapTracking(extra.parseMultiplicativeExpression),parseNewExpression=wrapTracking(extra.parseNewExpression),parseNonComputedProperty=wrapTracking(extra.parseNonComputedProperty),parseObjectProperty=wrapTracking(extra.parseObjectProperty),parseObjectPropertyKey=wrapTracking(extra.parseObjectPropertyKey),parsePostfixExpression=wrapTracking(extra.parsePostfixExpression),parsePrimaryExpression=wrapTracking(extra.parsePrimaryExpression),parseProgram=wrapTracking(extra.parseProgram),parsePropertyFunction=wrapTracking(extra.parsePropertyFunction),parseRelationalExpression=wrapTracking(extra.parseRelationalExpression),parseStatement=wrapTracking(extra.parseStatement),parseShiftExpression=wrapTracking(extra.parseShiftExpression),parseSwitchCase=wrapTracking(extra.parseSwitchCase),parseUnaryExpression=wrapTracking(extra.parseUnaryExpression),parseVariableDeclaration=wrapTracking(extra.parseVariableDeclaration),parseVariableIdentifier=wrapTracking(extra.parseVariableIdentifier)),extra.tokens!==void 0&&(extra.advance=advance,extra.scanRegExp=scanRegExp,advance=collectToken,scanRegExp=collectRegex)}function unpatch(){\"function\"==typeof extra.skipComment&&(skipComment=extra.skipComment),extra.raw&&(createLiteral=extra.createLiteral),(extra.range||extra.loc)&&(parseAdditiveExpression=extra.parseAdditiveExpression,parseAssignmentExpression=extra.parseAssignmentExpression,parseBitwiseANDExpression=extra.parseBitwiseANDExpression,parseBitwiseORExpression=extra.parseBitwiseORExpression,parseBitwiseXORExpression=extra.parseBitwiseXORExpression,parseBlock=extra.parseBlock,parseFunctionSourceElements=extra.parseFunctionSourceElements,parseCatchClause=extra.parseCatchClause,parseComputedMember=extra.parseComputedMember,parseConditionalExpression=extra.parseConditionalExpression,parseConstLetDeclaration=extra.parseConstLetDeclaration,parseEqualityExpression=extra.parseEqualityExpression,parseExpression=extra.parseExpression,parseForVariableDeclaration=extra.parseForVariableDeclaration,parseFunctionDeclaration=extra.parseFunctionDeclaration,parseFunctionExpression=extra.parseFunctionExpression,parseGroupExpression=extra.parseGroupExpression,parseLeftHandSideExpression=extra.parseLeftHandSideExpression,parseLeftHandSideExpressionAllowCall=extra.parseLeftHandSideExpressionAllowCall,parseLogicalANDExpression=extra.parseLogicalANDExpression,parseLogicalORExpression=extra.parseLogicalORExpression,parseMultiplicativeExpression=extra.parseMultiplicativeExpression,parseNewExpression=extra.parseNewExpression,parseNonComputedProperty=extra.parseNonComputedProperty,parseObjectProperty=extra.parseObjectProperty,parseObjectPropertyKey=extra.parseObjectPropertyKey,parsePrimaryExpression=extra.parsePrimaryExpression,parsePostfixExpression=extra.parsePostfixExpression,parseProgram=extra.parseProgram,parsePropertyFunction=extra.parsePropertyFunction,parseRelationalExpression=extra.parseRelationalExpression,parseStatement=extra.parseStatement,parseShiftExpression=extra.parseShiftExpression,parseSwitchCase=extra.parseSwitchCase,parseUnaryExpression=extra.parseUnaryExpression,parseVariableDeclaration=extra.parseVariableDeclaration,parseVariableIdentifier=extra.parseVariableIdentifier),\"function\"==typeof extra.scanRegExp&&(advance=extra.advance,scanRegExp=extra.scanRegExp)}function stringToArray(str){var i,length=str.length,result=[];for(i=0;length>i;++i)result[i]=str.charAt(i);return result}function parse(code,options){var program,toString;\ntoString=String,\"string\"==typeof code||code instanceof String||(code=toString(code)),source=code,index=0,lineNumber=source.length>0?1:0,lineStart=0,length=source.length,buffer=null,state={allowIn:!0,labelSet:{},inFunctionBody:!1,inIteration:!1,inSwitch:!1},extra={},options!==void 0&&(extra.range=\"boolean\"==typeof options.range&&options.range,extra.loc=\"boolean\"==typeof options.loc&&options.loc,extra.raw=\"boolean\"==typeof options.raw&&options.raw,\"boolean\"==typeof options.tokens&&options.tokens&&(extra.tokens=[]),\"boolean\"==typeof options.comment&&options.comment&&(extra.comments=[]),\"boolean\"==typeof options.tolerant&&options.tolerant&&(extra.errors=[])),length>0&&source[0]===void 0&&(code instanceof String&&(source=code.valueOf()),source[0]===void 0&&(source=stringToArray(code))),patch();try{program=parseProgram(),extra.comments!==void 0&&(filterCommentLocation(),program.comments=extra.comments),extra.tokens!==void 0&&(filterTokenLocation(),program.tokens=extra.tokens),extra.errors!==void 0&&(program.errors=extra.errors),(extra.range||extra.loc)&&(program.body=filterGroup(program.body))}catch(e){throw e}finally{unpatch(),extra={}}return program}var Token,TokenName,Syntax,PropertyKind,Messages,Regex,source,strict,index,lineNumber,lineStart,length,buffer,state,extra;Token={BooleanLiteral:1,EOF:2,Identifier:3,Keyword:4,NullLiteral:5,NumericLiteral:6,Punctuator:7,StringLiteral:8},TokenName={},TokenName[Token.BooleanLiteral]=\"Boolean\",TokenName[Token.EOF]=\"\u003Cend>\",TokenName[Token.Identifier]=\"Identifier\",TokenName[Token.Keyword]=\"Keyword\",TokenName[Token.NullLiteral]=\"Null\",TokenName[Token.NumericLiteral]=\"Numeric\",TokenName[Token.Punctuator]=\"Punctuator\",TokenName[Token.StringLiteral]=\"String\",Syntax={AssignmentExpression:\"AssignmentExpression\",ArrayExpression:\"ArrayExpression\",BlockStatement:\"BlockStatement\",BinaryExpression:\"BinaryExpression\",BreakStatement:\"BreakStatement\",CallExpression:\"CallExpression\",CatchClause:\"CatchClause\",ConditionalExpression:\"ConditionalExpression\",ContinueStatement:\"ContinueStatement\",DoWhileStatement:\"DoWhileStatement\",DebuggerStatement:\"DebuggerStatement\",EmptyStatement:\"EmptyStatement\",ExpressionStatement:\"ExpressionStatement\",ForStatement:\"ForStatement\",ForInStatement:\"ForInStatement\",FunctionDeclaration:\"FunctionDeclaration\",FunctionExpression:\"FunctionExpression\",Identifier:\"Identifier\",IfStatement:\"IfStatement\",Literal:\"Literal\",LabeledStatement:\"LabeledStatement\",LogicalExpression:\"LogicalExpression\",MemberExpression:\"MemberExpression\",NewExpression:\"NewExpression\",ObjectExpression:\"ObjectExpression\",Program:\"Program\",Property:\"Property\",ReturnStatement:\"ReturnStatement\",SequenceExpression:\"SequenceExpression\",SwitchStatement:\"SwitchStatement\",SwitchCase:\"SwitchCase\",ThisExpression:\"ThisExpression\",ThrowStatement:\"ThrowStatement\",TryStatement:\"TryStatement\",UnaryExpression:\"UnaryExpression\",UpdateExpression:\"UpdateExpression\",VariableDeclaration:\"VariableDeclaration\",VariableDeclarator:\"VariableDeclarator\",WhileStatement:\"WhileStatement\",WithStatement:\"WithStatement\"},PropertyKind={Data:1,Get:2,Set:4},Messages={UnexpectedToken:\"Unexpected token %0\",UnexpectedNumber:\"Unexpected number\",UnexpectedString:\"Unexpected string\",UnexpectedIdentifier:\"Unexpected identifier\",UnexpectedReserved:\"Unexpected reserved word\",UnexpectedEOS:\"Unexpected end of input\",NewlineAfterThrow:\"Illegal newline after throw\",InvalidRegExp:\"Invalid regular expression\",UnterminatedRegExp:\"Invalid regular expression: missing /\",InvalidLHSInAssignment:\"Invalid left-hand side in assignment\",InvalidLHSInForIn:\"Invalid left-hand side in for-in\",MultipleDefaultsInSwitch:\"More than one default clause in switch statement\",NoCatchOrFinally:\"Missing catch or finally after try\",UnknownLabel:\"Undefined label '%0'\",Redeclaration:\"%0 '%1' has already been declared\",IllegalContinue:\"Illegal continue statement\",IllegalBreak:\"Illegal break statement\",IllegalReturn:\"Illegal return statement\",StrictModeWith:\"Strict mode code may not include a with statement\",StrictCatchVariable:\"Catch variable may not be eval or arguments in strict mode\",StrictVarName:\"Variable name may not be eval or arguments in strict mode\",StrictParamName:\"Parameter name eval or arguments is not allowed in strict mode\",StrictParamDupe:\"Strict mode function may not have duplicate parameter names\",StrictFunctionName:\"Function name may not be eval or arguments in strict mode\",StrictOctalLiteral:\"Octal literals are not allowed in strict mode.\",StrictDelete:\"Delete of an unqualified identifier in strict mode.\",StrictDuplicateProperty:\"Duplicate data property in object literal not allowed in strict mode\",AccessorDataProperty:\"Object literal may not have data and accessor property with the same name\",AccessorGetSet:\"Object literal may not have multiple get/set accessors with the same name\",StrictLHSAssignment:\"Assignment to eval or arguments is not allowed in strict mode\",StrictLHSPostfix:\"Postfix increment/decrement may not have eval or arguments operand in strict mode\",StrictLHSPrefix:\"Prefix increment/decrement may not have eval or arguments operand in strict mode\",StrictReservedWord:\"Use of future reserved word in strict mode\"},Regex={NonAsciiIdentifierStart:RegExp(\"[ªµºÀ-ƖƘ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-͓Ͷͷͺ-Ķ½Ī†Īˆ-ĪŠĪŒĪŽ-ΔΣ-ϵϷ-ҁҊ-Ō§Ō±-Õ–Õ™Õ”-ևא-×Ŗ×°-ײؠ-يٮٯٱ-Ū“Ū•Ū„Ū¦Ū®ŪÆŪŗ-ۼۿܐܒ-ÜÆŻ-ބޱߊ-ߪߓߵߺࠀ-ą •ą šą ¤ą Øą”€-ą”˜ą¢ ą¢¢-ࢬऄ-ą¤¹ą¤½ą„ą„˜-ą„”ą„±-ą„·ą„¹-ą„æą¦…-ą¦Œą¦ą¦ą¦“-নপ-রলশ-ą¦¹ą¦½ą§Žą§œą§ą§Ÿ-৔ৰৱਅ-ąØŠąØąØąØ“-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ą©œą©žą©²-ą©“ąŖ…-ąŖąŖ-ąŖ‘ąŖ“-ąŖØąŖŖ-રલળવ-હઽૐૠ૔ଅ-ą¬Œą¬ą¬ą¬“-ନପ-ରଲଳଵ-ą¬¹ą¬½ą­œą­ą­Ÿ-ą­”ą­±ą®ƒą®…-ą®Šą®Ž-ஐஒ-ą®•ą®™ą®šą®œą®žą®Ÿą®£ą®¤ą®Ø-பம-ஹௐఅ-ą°Œą°Ž-ఐఒ-ą°Øą°Ŗ-ళవ-ą°¹ą°½ą±˜ą±™ą± ą±”ą²…-ą²Œą²Ž-ಐಒ-ನಪ-ಳವ-ą²¹ą²½ą³žą³ ą³”ą³±ą³²ą“…-ą“Œą“Ž-ą“ą“’-ą“ŗą“½ąµŽąµ ąµ”ąµŗ-ൿඅ-ą¶–ą¶š-නඳ-රලව-ෆก-ะาำเ-ą¹†ąŗąŗ‚ąŗ„ąŗ‡ąŗˆąŗŠąŗąŗ”-ąŗ—ąŗ™-ຟດ-ຣຄວສຫອ-ະາຳຽເ-ą»„ą»†ą»œ-ą»Ÿą¼€ą½€-ཇཉ-ཬྈ-ą¾Œį€€-ဪဿၐ-į•įš-įį”į„į¦į®-ၰၵ-į‚į‚Žį‚ -įƒ…įƒ‡įƒįƒ-ჺჼ-į‰ˆį‰Š-į‰į‰-į‰–į‰˜į‰š-į‰į‰ -ኈኊ-įŠįŠ-ኰኲ-ኵኸ-įŠ¾į‹€į‹‚-į‹…į‹ˆ-į‹–į‹˜-įŒįŒ’-įŒ•įŒ˜-įšįŽ€-įŽįŽ -į“į-ᙬᙯ-į™æįš-ᚚᚠ-ᛪᛮ-į›°įœ€-įœŒįœŽ-įœ‘įœ -įœ±į€-į‘į -į¬į®-į°įž€-įž³įŸ—įŸœį  -ᔷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᄐ-į„­į„°-ᄓᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-į­‹į®ƒ-ᮠᮮᮯᮺ-ᯄᰀ-į°£į±-į±į±š-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᓀ-į¶æįø€-į¼•į¼˜-į¼į¼ -į½…į½ˆ-į½į½-į½—į½™į½›į½į½Ÿ-ώᾀ-ᾓᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ΐῶ-ῼⁱⁿₐ-ā‚œā„‚ā„‡ā„Š-ā„“ā„•ā„™-ā„ā„¤ā„¦ā„Øā„Ŗ-ℭℯ-ℹℼ-ℿⅅ-ā…‰ā…Žā… -ā†ˆā°€-Ⱞⰰ-ā±žā± -ⳤⳫ-ⳮⳲⳳⓀ-ā“„ā“§ā“­ā“°-ⵧⵯⶀ-ā¶–ā¶ -ⶦⶨ-ⶮⶰ-ā¶¶ā¶ø-ⶾⷀ-ā·†ā·ˆ-ā·Žā·-ā·–ā·˜-ā·žāøÆć€…-怇怔-怩怱-〵〸-〼ぁ-悖悝-ć‚Ÿć‚”-ヺー-ćƒæć„…-愭愱-憎憠-ㆺㇰ-ㇿ㐀-䶵一-éæŒź€€-ź’Œź“-ꓽꔀ-ꘌꘐ-ź˜Ÿź˜Ŗź˜«ź™€-ꙮꙿ-źš—źš -ź›Æźœ—-ꜟꜢ-źžˆźž‹-źžŽźž-źž“źž -źžŖźŸø-ꠁꠃ-ź …ź ‡-ꠊꠌ-ꠢꔀ-ꔳꢂ-ꢳꣲ-ꣷꣻꤊ-꤄ꤰ-ꄆꄠ-ꄼꦄ-ź¦²ź§źØ€-ꨨꩀ-ź©‚ź©„-ź©‹ź© -ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ź«ź« -ꫪꫲ-꫓ꬁ-ꬆꬉ-ź¬Žź¬‘-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-ķž£ķž°-ķŸ†ķŸ‹-ķŸ»ļ¤€-ļ©­ļ©°-龎ff-stﬓ-ļ¬—ļ¬ļ¬Ÿ-ﬨשׁ-זּטּ-ļ¬¼ļ¬¾ļ­€ļ­ļ­ƒļ­„ļ­†-ﮱﯓ-ﵐ-ļ¶ļ¶’-ﷇﷰ-ﷻﹰ-﹓ﹶ-ﻼ4-Za-zヲ-하-ļæ‡ļæŠ-ļæļæ’-ļæ—ļæš-ᅵ]\"),NonAsciiIdentifierPart:RegExp(\"[ªµºÀ-ƖƘ-öø-ˁˆ-ˑˠ-ˤˬˮ̀-͓Ͷͷͺ-Ķ½Ī†Īˆ-ĪŠĪŒĪŽ-ΔΣ-ϵϷ-ҁ҃-Ņ‡ŅŠ-Ō§Ō±-Õ–Õ™Õ”-և֑-ׇֽֿׁׂׅׄא-×Ŗ×°-ײؐ-ؚؠ-٩ٮ-Ū“Ū•-ۜ۟-ŪØŪŖ-ۼۿܐ-ŻŠŻ-ޱ߀-ߵߺࠀ-ą ­ą”€-ą”›ą¢ ą¢¢-ࢬࣤ-ࣾऀ-ą„£ą„¦-ą„Æą„±-ą„·ą„¹-ą„æą¦-ą¦ƒą¦…-ą¦Œą¦ą¦ą¦“-নপ-রলশ-হ়-ą§„ą§‡ą§ˆą§‹-ą§Žą§—ą§œą§ą§Ÿ-ৣ০-ৱਁ-ąØƒąØ…-ąØŠąØąØąØ“-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ą©‚ą©‡ą©ˆą©‹-ą©ą©‘ą©™-ą©œą©žą©¦-ੵઁ-ąŖƒąŖ…-ąŖąŖ-ąŖ‘ąŖ“-ąŖØąŖŖ-રલળવ-હ઼-ૅે-ૉો-ą«ą«ą« -ૣ૦-૯ଁ-ą¬ƒą¬…-ą¬Œą¬ą¬ą¬“-ନପ-ରଲଳଵ-ହ଼-ą­„ą­‡ą­ˆą­‹-ą­ą­–ą­—ą­œą­ą­Ÿ-ୣ୦-ą­Æą­±ą®‚ą®ƒą®…-ą®Šą®Ž-ஐஒ-ą®•ą®™ą®šą®œą®žą®Ÿą®£ą®¤ą®Ø-பம-ஹா-ூெ-ைொ-ąÆąÆąÆ—ąÆ¦-௯ఁ-ą°ƒą°…-ą°Œą°Ž-ఐఒ-ą°Øą°Ŗ-ళవ-హఽ-ౄె-ైొ-ą±ą±•ą±–ą±˜ą±™ą± -ౣ౦-ą±Æą²‚ą²ƒą²…-ą²Œą²Ž-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-ą³ą³•ą³–ą³žą³ -ೣ೦-ą³Æą³±ą³²ą“‚ą“ƒą“…-ą“Œą“Ž-ą“ą“’-ą“ŗą“½-ൄെ-ൈൊ-ąµŽąµ—ąµ -ൣ൦-൯ൺ-ąµæą¶‚ą¶ƒą¶…-ą¶–ą¶š-නඳ-රලව-ą·†ą·Šą·-ą·”ą·–ą·˜-ෟෲෳก-ąøŗą¹€-ą¹Žą¹-ą¹™ąŗąŗ‚ąŗ„ąŗ‡ąŗˆąŗŠąŗąŗ”-ąŗ—ąŗ™-ຟດ-ຣຄວສຫອ-ູົ-ຽເ-ą»„ą»†ą»ˆ-ą»ą»-ą»™ą»œ-ą»Ÿą¼€ą¼˜ą¼™ą¼ -༩༹༵༷༾-ཇཉ-ཬཱ-྄྆-ą¾—ą¾™-ྼ࿆က-၉ၐ-į‚į‚ -įƒ…įƒ‡įƒįƒ-ჺჼ-į‰ˆį‰Š-į‰į‰-į‰–į‰˜į‰š-į‰į‰ -ኈኊ-įŠįŠ-ኰኲ-ኵኸ-įŠ¾į‹€į‹‚-į‹…į‹ˆ-į‹–į‹˜-įŒįŒ’-įŒ•įŒ˜-įšį-įŸįŽ€-įŽįŽ -į“į-ᙬᙯ-į™æįš-ᚚᚠ-ᛪᛮ-į›°įœ€-įœŒįœŽ-įœ”įœ -įœ“į€-į“į -į¬į®-į°į²į³įž€-įŸ“įŸ—įŸœįŸįŸ -įŸ©į ‹-į į -᠙ᠠ-ᔷᢀ-ᢪᢰ-ᣵᤀ-ᤜᤠ-ᤫᤰ-᤻ᄆ-į„­į„°-ᄓᦀ-ᦫᦰ-ᧉ᧐-᧙ᨀ-ᨛᨠ-į©žį© -᩿᩼-᪉᪐-᪙ᪧᬀ-ᭋ᭐-᭙᭫-᭳ᮀ-᯳ᰀ-į°·į±€-į±‰į±-ᱽ᳐-į³’į³”-į³¶į“€-ᷦ᷼-į¼•į¼˜-į¼į¼ -į½…į½ˆ-į½į½-į½—į½™į½›į½į½Ÿ-ώᾀ-ᾓᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ΐῶ-įæ¼ā€Œā€ā€æā€ā”ā±āæā‚-ā‚œāƒ-⃜⃔⃄-āƒ°ā„‚ā„‡ā„Š-ā„“ā„•ā„™-ā„ā„¤ā„¦ā„Øā„Ŗ-ℭℯ-ℹℼ-ℿⅅ-ā…‰ā…Žā… -ā†ˆā°€-Ⱞⰰ-ā±žā± -ⳤⳫ-ⳳⓀ-ā“„ā“§ā“­ā“°-ⵧⵯ⵿-ā¶–ā¶ -ⶦⶨ-ⶮⶰ-ā¶¶ā¶ø-ⶾⷀ-ā·†ā·ˆ-ā·Žā·-ā·–ā·˜-ā·žā· -ⷿⸯ々-怇怔-〯〱-〵〸-〼ぁ-悖悙悚悝-ć‚Ÿć‚”-ヺー-ćƒæć„…-愭愱-憎憠-ㆺㇰ-ㇿ㐀-䶵一-éæŒź€€-ź’Œź“-ꓽꔀ-ꘌꘐ-ź˜«ź™€-꙯ꙓ-꙽ꙿ-źš—źšŸ-ź›±źœ—-ꜟꜢ-źžˆźž‹-źžŽźž-źž“źž -źžŖźŸø-ꠧꔀ-ꔳꢀ-꣄꣐-꣙꣠-ꣷꣻ꤀-꤭ꤰ-ź„“ź„ -ꄼꦀ-ź§€ź§-꧙ꨀ-ꨶꩀ-ź©ź©-꩙ꩠ-ꩶꩺꩻꪀ-ź«‚ź«›-ź«ź« -ꫯꫲ-꫶ꬁ-ꬆꬉ-ź¬Žź¬‘-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯪ꯬꯭꯰-꯹가-ķž£ķž°-ķŸ†ķŸ‹-ķŸ»ļ¤€-ļ©­ļ©°-龎ff-stﬓ-ļ¬—ļ¬-ﬨשׁ-זּטּ-ļ¬¼ļ¬¾ļ­€ļ­ļ­ƒļ­„ļ­†-ﮱﯓ-ﵐ-ļ¶ļ¶’-ﷇﷰ-ﷻ︀-ļøļø -ļø¦ļø³ļø“ļ¹-ļ¹ļ¹°-﹓ﹶ-ﻼ0-94-Z_a-zヲ-하-ļæ‡ļæŠ-ļæļæ’-ļæ—ļæš-ᅵ]\")},\"esprima\"[0]===void 0&&(sliceSource=function(from,to){return source.slice(from,to).join(\"\")}),exports.version=\"1.0.2\",exports.parse=parse,exports.Syntax=function(){var name,types={};\"function\"==typeof Object.create&&(types=Object.create(null));for(name in Syntax)Syntax.hasOwnProperty(name)&&(types[name]=Syntax[name]);return\"function\"==typeof Object.freeze&&Object.freeze(types),types}()})})()},{}],63:[function(require,module){function isFunction(obj){return\"[object Function]\"==toString.call(obj)}var fs=require(\"fs\"),highlight=require(\"./highlight\");module.exports=function(fullPath,opts,cb){isFunction(opts)&&(cb=opts),fs.readFile(fullPath,\"utf-8\",function(err,code){if(err)return cb(err);try{cb(null,highlight(code,opts))}catch(e){cb(e)}})}},{fs:74,\"./highlight\":62}],64:[function(require,module){var fs=require(\"fs\"),highlight=require(\"./highlight\");module.exports=function(fullPath,opts){var code=fs.readFileSync(fullPath,\"utf-8\");return highlight(code,opts)}},{fs:74,\"./highlight\":62}],29:[function(require,module){\"use strict\";function fix(line,hideStrict){var fixed=line;if(commaFirstAssignment.test(line)){var idx=line.indexOf(\",\");fixed=\"var\"+fixed.slice(0,idx).trim()+\" \"+fixed.slice(idx+1).trim()}return hideStrict&&useStrict.test(line)&&(fixed=nonStrict+line),fixed}function unfix(code,hideStrict){return hideStrict&&(code=code.replace(nonStrict,\"\")),code}var parse=require(\"esprima\").parse,commaFirstAssignment=/^[\\t ]*,[\\t ]*\\S+[\\t ]*=[\\t ]*\\S+/,useStrict=/^ *['\"]use strict['\"][; ]*$/,nonStrict=\"// *** non strict snippetify fix +++***+++&&&\",snippetify=module.exports=function(script,opts){function nextChunk(code,raw){var line=(0===code.length,lines[lineno]),fixed=fix(line,opts.nonstrict);raw=line+raw,code=fixed+code;try{var ast=parse(code,opts);return code=unfix(code,opts.nonstrict),{code:code,raw:raw,ast:ast}}catch(e){if(-1===--lineno){var err=Error(\"unable to snippetify \"+code);throw err.inner=e,err}return nextChunk(\"\\n\"+code,\"\\n\"+raw)}}opts=opts||{};var snippets=[],lines=script.split(\"\\n\");if(!lines.length)return[];for(var lineno=lines.length;--lineno>-1;){var snippetEnd=lineno+1,snippet=nextChunk(\"\",\"\"),snippetStart=lineno+1;snippets.unshift({start:snippetStart,end:snippetEnd,code:snippet.code,raw:snippet.raw,ast:snippet.ast})}return snippets},code=\"function foo() {\\n\\\"use strict\\\";\\n var o = { a: 1, a: 2 };\\n}\\n\\n;function bar() {\\n'use strict';\\n var o = { a: 1, a: 2 };\\n}\";snippetify(code,{nonstrict:!0})},{esprima:70}],75:[function(require,module,exports){exports.readIEEE754=function(buffer,offset,isBE,mLen,nBytes){var e,m,eLen=8*nBytes-mLen-1,eMax=(1\u003C\u003CeLen)-1,eBias=eMax>>1,nBits=-7,i=isBE?0:nBytes-1,d=isBE?1:-1,s=buffer[offset+i];for(i+=d,e=s&(1\u003C\u003C-nBits)-1,s>>=-nBits,nBits+=eLen;nBits>0;e=256*e+buffer[offset+i],i+=d,nBits-=8);for(m=e&(1\u003C\u003C-nBits)-1,e>>=-nBits,nBits+=mLen;nBits>0;m=256*m+buffer[offset+i],i+=d,nBits-=8);if(0===e)e=1-eBias;else{if(e===eMax)return m?0/0:1/0*(s?-1:1);m+=Math.pow(2,mLen),e-=eBias}return(s?-1:1)*m*Math.pow(2,e-mLen)},exports.writeIEEE754=function(buffer,value,offset,isBE,mLen,nBytes){var e,m,c,eLen=8*nBytes-mLen-1,eMax=(1\u003C\u003CeLen)-1,eBias=eMax>>1,rt=23===mLen?Math.pow(2,-24)-Math.pow(2,-77):0,i=isBE?nBytes-1:0,d=isBE?-1:1,s=0>value||0===value&&0>1/value?1:0;for(value=Math.abs(value),isNaN(value)||1/0===value?(m=isNaN(value)?1:0,e=eMax):(e=Math.floor(Math.log(value)/Math.LN2),1>value*(c=Math.pow(2,-e))&&(e--,c*=2),value+=e+eBias>=1?rt/c:rt*Math.pow(2,1-eBias),value*c>=2&&(e++,c/=2),e+eBias>=eMax?(m=0,e=eMax):e+eBias>=1?(m=(value*c-1)*Math.pow(2,mLen),e+=eBias):(m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen),e=0));mLen>=8;buffer[offset+i]=255&m,i+=d,m/=256,mLen-=8);for(e=e\u003C\u003CmLen|m,eLen+=mLen;eLen>0;buffer[offset+i]=255&e,i+=d,e/=256,eLen-=8);buffer[offset+i-d]|=128*s}},{}],76:[function(require,module){var colorNums={white:37,black:30,blue:34,cyan:36,green:32,magenta:35,red:31,yellow:33,brightBlack:90,brightRed:91,brightGreen:92,brightYellow:93,brightBlue:94,brightMagenta:95,brightCyan:96,brightWhite:97},colors={};Object.keys(colorNums).forEach(function(k){colors[k]=\"\u001b[\"+colorNums[k]+\"m:\u001b[39m\"}),module.exports=colors},{}],77:[function(require,module){require=function(e,t,n,r){function i(r){if(!n[r]){if(!t[r]){if(e)return e(r);throw Error(\"Cannot find module '\"+r+\"'\")}var s=n[r]={exports:{}};t[r][0](function(e){var n=t[r][1][e];return i(n?n:e)},s,s.exports)}return n[r].exports}for(var s=0;r.length>s;s++)i(r[s]);return i}(require!==void 0&&require,{1:[function(require,module,exports){exports.readIEEE754=function(buffer,offset,isBE,mLen,nBytes){var e,m,eLen=8*nBytes-mLen-1,eMax=(1\u003C\u003CeLen)-1,eBias=eMax>>1,nBits=-7,i=isBE?0:nBytes-1,d=isBE?1:-1,s=buffer[offset+i];for(i+=d,e=s&(1\u003C\u003C-nBits)-1,s>>=-nBits,nBits+=eLen;nBits>0;e=256*e+buffer[offset+i],i+=d,nBits-=8);for(m=e&(1\u003C\u003C-nBits)-1,e>>=-nBits,nBits+=mLen;nBits>0;m=256*m+buffer[offset+i],i+=d,nBits-=8);if(0===e)e=1-eBias;else{if(e===eMax)return m?0/0:1/0*(s?-1:1);m+=Math.pow(2,mLen),e-=eBias}return(s?-1:1)*m*Math.pow(2,e-mLen)},exports.writeIEEE754=function(buffer,value,offset,isBE,mLen,nBytes){var e,m,c,eLen=8*nBytes-mLen-1,eMax=(1\u003C\u003CeLen)-1,eBias=eMax>>1,rt=23===mLen?Math.pow(2,-24)-Math.pow(2,-77):0,i=isBE?nBytes-1:0,d=isBE?-1:1,s=0>value||0===value&&0>1/value?1:0;for(value=Math.abs(value),isNaN(value)||1/0===value?(m=isNaN(value)?1:0,e=eMax):(e=Math.floor(Math.log(value)/Math.LN2),1>value*(c=Math.pow(2,-e))&&(e--,c*=2),value+=e+eBias>=1?rt/c:rt*Math.pow(2,1-eBias),value*c>=2&&(e++,c/=2),e+eBias>=eMax?(m=0,e=eMax):e+eBias>=1?(m=(value*c-1)*Math.pow(2,mLen),e+=eBias):(m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen),e=0));mLen>=8;buffer[offset+i]=255&m,i+=d,m/=256,mLen-=8);for(e=e\u003C\u003CmLen|m,eLen+=mLen;eLen>0;buffer[offset+i]=255&e,i+=d,e/=256,eLen-=8);buffer[offset+i-d]|=128*s}},{}],2:[function(require,module){(function(){function objectKeys(object){if(Object.keys)return Object.keys(object);var result=[];for(var name in object)Object.prototype.hasOwnProperty.call(object,name)&&result.push(name);return result}function replacer(key,value){return void 0===value?\"\"+value:\"number\"!=typeof value||!isNaN(value)&&isFinite(value)?\"function\"==typeof value||value instanceof RegExp?\"\"+value:value:\"\"+value}function truncate(s,n){return\"string\"==typeof s?n>s.length?s:s.slice(0,n):s}function fail(actual,expected,message,operator,stackStartFunction){throw new assert.AssertionError({message:message,actual:actual,expected:expected,operator:operator,stackStartFunction:stackStartFunction})}function ok(value,message){value||fail(value,!0,message,\"==\",assert.ok)}function _deepEqual(actual,expected){if(actual===expected)return!0;if(Buffer.isBuffer(actual)&&Buffer.isBuffer(expected)){if(actual.length!=expected.length)return!1;for(var i=0;actual.length>i;i++)if(actual[i]!==expected[i])return!1;return!0}return actual instanceof Date&&expected instanceof Date?actual.getTime()===expected.getTime():\"object\"!=typeof actual&&\"object\"!=typeof expected?actual==expected:objEquiv(actual,expected)}function isUndefinedOrNull(value){return null===value||void 0===value}function isArguments(object){return\"[object Arguments]\"==Object.prototype.toString.call(object)}function objEquiv(a,b){if(isUndefinedOrNull(a)||isUndefinedOrNull(b))return!1;if(a.prototype!==b.prototype)return!1;if(isArguments(a))return isArguments(b)?(a=pSlice.call(a),b=pSlice.call(b),_deepEqual(a,b)):!1;try{var key,i,ka=objectKeys(a),kb=objectKeys(b)}catch(e){return!1}if(ka.length!=kb.length)return!1;for(ka.sort(),kb.sort(),i=ka.length-1;i>=0;i--)if(ka[i]!=kb[i])return!1;for(i=ka.length-1;i>=0;i--)if(key=ka[i],!_deepEqual(a[key],b[key]))return!1;return!0}function expectedException(actual,expected){return actual&&expected?expected instanceof RegExp?expected.test(actual):actual instanceof expected?!0:expected.call({},actual)===!0?!0:!1:!1}function _throws(shouldThrow,block,expected,message){var actual;\"string\"==typeof expected&&(message=expected,expected=null);try{block()}catch(e){actual=e}if(message=(expected&&expected.name?\" (\"+expected.name+\").\":\".\")+(message?\" \"+message:\".\"),shouldThrow&&!actual&&fail(\"Missing expected exception\"+message),!shouldThrow&&expectedException(actual,expected)&&fail(\"Got unwanted exception\"+message),shouldThrow&&actual&&expected&&!expectedException(actual,expected)||!shouldThrow&&actual)throw actual}var util=require(\"util\"),Buffer=require(\"buffer\").Buffer,pSlice=Array.prototype.slice,assert=module.exports=ok;assert.AssertionError=function(options){this.name=\"AssertionError\",this.message=options.message,this.actual=options.actual,this.expected=options.expected,this.operator=options.operator;var stackStartFunction=options.stackStartFunction||fail;Error.captureStackTrace&&Error.captureStackTrace(this,stackStartFunction)},util.inherits(assert.AssertionError,Error),assert.AssertionError.prototype.toString=function(){return this.message?[this.name+\":\",this.message].join(\" \"):[this.name+\":\",truncate(JSON.stringify(this.actual,replacer),128),this.operator,truncate(JSON.stringify(this.expected,replacer),128)].join(\" \")},assert.AssertionError.__proto__=Error.prototype,assert.fail=fail,assert.ok=ok,assert.equal=function(actual,expected,message){actual!=expected&&fail(actual,expected,message,\"==\",assert.equal)},assert.notEqual=function(actual,expected,message){actual==expected&&fail(actual,expected,message,\"!=\",assert.notEqual)},assert.deepEqual=function(actual,expected,message){_deepEqual(actual,expected)||fail(actual,expected,message,\"deepEqual\",assert.deepEqual)},assert.notDeepEqual=function(actual,expected,message){_deepEqual(actual,expected)&&fail(actual,expected,message,\"notDeepEqual\",assert.notDeepEqual)},assert.strictEqual=function(actual,expected,message){actual!==expected&&fail(actual,expected,message,\"===\",assert.strictEqual)},assert.notStrictEqual=function(actual,expected,message){actual===expected&&fail(actual,expected,message,\"!==\",assert.notStrictEqual)},assert.throws=function(){_throws.apply(this,[!0].concat(pSlice.call(arguments)))},assert.doesNotThrow=function(){_throws.apply(this,[!1].concat(pSlice.call(arguments)))},assert.ifError=function(err){if(err)throw err}})()},{util:3,buffer:4}],\"buffer-browserify\":[function(require,module){module.exports=require(\"q9TxCC\")},{}],q9TxCC:[function(require,module,exports){(function(){function SlowBuffer(size){this.length=size}function toHex(n){return 16>n?\"0\"+n.toString(16):n.toString(16)}function utf8ToBytes(str){for(var byteArray=[],i=0;str.length>i;i++)if(127>=str.charCodeAt(i))byteArray.push(str.charCodeAt(i));else for(var h=encodeURIComponent(str.charAt(i)).substr(1).split(\"%\"),j=0;h.length>j;j++)byteArray.push(parseInt(h[j],16));return byteArray}function asciiToBytes(str){for(var byteArray=[],i=0;str.length>i;i++)byteArray.push(255&str.charCodeAt(i));return byteArray}function base64ToBytes(str){return require(\"base64-js\").toByteArray(str)}function blitBuffer(src,dst,offset,length){for(var i=0;length>i&&!(i+offset>=dst.length||i>=src.length);)dst[i+offset]=src[i],i++;return i}function decodeUtf8Char(str){try{return decodeURIComponent(str)}catch(err){return String.fromCharCode(65533)}}function coerce(length){return length=~~Math.ceil(+length),0>length?0:length}function Buffer(subject,encoding,offset){if(!(this instanceof Buffer))return new Buffer(subject,encoding,offset);var type;if(\"number\"==typeof offset)this.length=coerce(encoding),this.parent=subject,this.offset=offset;else{switch(type=typeof subject){case\"number\":this.length=coerce(subject);break;case\"string\":this.length=Buffer.byteLength(subject,encoding);break;case\"object\":this.length=coerce(subject.length);break;default:throw Error(\"First argument needs to be a number, array or string.\")}if(this.length>Buffer.poolSize?(this.parent=new SlowBuffer(this.length),this.offset=0):((!pool||pool.length-pool.used\u003Cthis.length)&&allocPool(),this.parent=pool,this.offset=pool.used,pool.used+=this.length),isArrayIsh(subject))for(var i=0;this.length>i;i++)this.parent[i+this.offset]=subject instanceof Buffer?subject.readUInt8(i):subject[i];else\"string\"==type&&(this.length=this.write(subject,0,encoding))}}function isArrayIsh(subject){return Array.isArray(subject)||Buffer.isBuffer(subject)||subject&&\"object\"==typeof subject&&\"number\"==typeof subject.length}function allocPool(){pool=new SlowBuffer(Buffer.poolSize),pool.used=0}function readUInt16(buffer,offset,isBigEndian,noAssert){var val=0;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to read beyond buffer length\")),offset>=buffer.length?0:(isBigEndian?(val=buffer.parent[buffer.offset+offset]\u003C\u003C8,buffer.length>offset+1&&(val|=buffer.parent[buffer.offset+offset+1])):(val=buffer.parent[buffer.offset+offset],buffer.length>offset+1&&(val|=buffer.parent[buffer.offset+offset+1]\u003C\u003C8)),val)}function readUInt32(buffer,offset,isBigEndian,noAssert){var val=0;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),offset>=buffer.length?0:(isBigEndian?(buffer.length>offset+1&&(val=buffer.parent[buffer.offset+offset+1]\u003C\u003C16),buffer.length>offset+2&&(val|=buffer.parent[buffer.offset+offset+2]\u003C\u003C8),buffer.length>offset+3&&(val|=buffer.parent[buffer.offset+offset+3]),val+=buffer.parent[buffer.offset+offset]\u003C\u003C24>>>0):(buffer.length>offset+2&&(val=buffer.parent[buffer.offset+offset+2]\u003C\u003C16),buffer.length>offset+1&&(val|=buffer.parent[buffer.offset+offset+1]\u003C\u003C8),val|=buffer.parent[buffer.offset+offset],buffer.length>offset+3&&(val+=buffer.parent[buffer.offset+offset+3]\u003C\u003C24>>>0)),val)}function readInt16(buffer,offset,isBigEndian,noAssert){var neg,val;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to read beyond buffer length\")),val=readUInt16(buffer,offset,isBigEndian,noAssert),neg=32768&val,neg?-1*(65535-val+1):val}function readInt32(buffer,offset,isBigEndian,noAssert){var neg,val;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),val=readUInt32(buffer,offset,isBigEndian,noAssert),neg=2147483648&val,neg?-1*(4294967295-val+1):val}function readFloat(buffer,offset,isBigEndian,noAssert){return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),require(\"./buffer_ieee754\").readIEEE754(buffer,offset,isBigEndian,23,4)}function readDouble(buffer,offset,isBigEndian,noAssert){return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(buffer.length>offset+7,\"Trying to read beyond buffer length\")),require(\"./buffer_ieee754\").readIEEE754(buffer,offset,isBigEndian,52,8)}function verifuint(value,max){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(value>=0,\"specified a negative value for writing an unsigned value\"),assert.ok(max>=value,\"value is larger than maximum value for type\"),assert.ok(Math.floor(value)===value,\"value has a fractional component\")}function writeUInt16(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"trying to write beyond buffer length\"),verifuint(value,65535));for(var i=0;Math.min(buffer.length-offset,2)>i;i++)buffer.parent[buffer.offset+offset+i]=(value&255\u003C\u003C8*(isBigEndian?1-i:i))>>>8*(isBigEndian?1-i:i)}function writeUInt32(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"trying to write beyond buffer length\"),verifuint(value,4294967295));for(var i=0;Math.min(buffer.length-offset,4)>i;i++)buffer.parent[buffer.offset+offset+i]=255&value>>>8*(isBigEndian?3-i:i)}function verifsint(value,max,min){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(max>=value,\"value larger than maximum allowed value\"),assert.ok(value>=min,\"value smaller than minimum allowed value\"),assert.ok(Math.floor(value)===value,\"value has a fractional component\")}function verifIEEE754(value,max,min){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(max>=value,\"value larger than maximum allowed value\"),assert.ok(value>=min,\"value smaller than minimum allowed value\")}function writeInt16(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to write beyond buffer length\"),verifsint(value,32767,-32768)),value>=0?writeUInt16(buffer,value,offset,isBigEndian,noAssert):writeUInt16(buffer,65535+value+1,offset,isBigEndian,noAssert)}function writeInt32(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to write beyond buffer length\"),verifsint(value,2147483647,-2147483648)),value>=0?writeUInt32(buffer,value,offset,isBigEndian,noAssert):writeUInt32(buffer,4294967295+value+1,offset,isBigEndian,noAssert)}function writeFloat(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to write beyond buffer length\"),verifIEEE754(value,3.4028234663852886e38,-3.4028234663852886e38)),require(\"./buffer_ieee754\").writeIEEE754(buffer,value,offset,isBigEndian,23,4)}function writeDouble(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+7,\"Trying to write beyond buffer length\"),verifIEEE754(value,1.7976931348623157e308,-1.7976931348623157e308)),require(\"./buffer_ieee754\").writeIEEE754(buffer,value,offset,isBigEndian,52,8)}var assert=require(\"assert\");exports.INSPECT_MAX_BYTES=50,SlowBuffer.byteLength=function(str,encoding){switch(encoding||\"utf8\"){case\"hex\":return str.length/2;case\"utf8\":case\"utf-8\":return utf8ToBytes(str).length;case\"ascii\":case\"binary\":return str.length;case\"base64\":return base64ToBytes(str).length;default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.utf8Write=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(utf8ToBytes(string),this,offset,length)},SlowBuffer.prototype.asciiWrite=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(asciiToBytes(string),this,offset,length)},SlowBuffer.prototype.binaryWrite=SlowBuffer.prototype.asciiWrite,SlowBuffer.prototype.base64Write=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(base64ToBytes(string),this,offset,length)},SlowBuffer.prototype.base64Slice=function(){var bytes=Array.prototype.slice.apply(this,arguments);return require(\"base64-js\").fromByteArray(bytes)},SlowBuffer.prototype.utf8Slice=function(){for(var bytes=Array.prototype.slice.apply(this,arguments),res=\"\",tmp=\"\",i=0;bytes.length>i;)127>=bytes[i]?(res+=decodeUtf8Char(tmp)+String.fromCharCode(bytes[i]),tmp=\"\"):tmp+=\"%\"+bytes[i].toString(16),i++;return res+decodeUtf8Char(tmp)},SlowBuffer.prototype.asciiSlice=function(){for(var bytes=Array.prototype.slice.apply(this,arguments),ret=\"\",i=0;bytes.length>i;i++)ret+=String.fromCharCode(bytes[i]);return ret},SlowBuffer.prototype.binarySlice=SlowBuffer.prototype.asciiSlice,SlowBuffer.prototype.inspect=function(){for(var out=[],len=this.length,i=0;len>i;i++)if(out[i]=toHex(this[i]),i==exports.INSPECT_MAX_BYTES){out[i+1]=\"...\";break}return\"\u003CSlowBuffer \"+out.join(\" \")+\">\"},SlowBuffer.prototype.hexSlice=function(start,end){var len=this.length;(!start||0>start)&&(start=0),(!end||0>end||end>len)&&(end=len);for(var out=\"\",i=start;end>i;i++)out+=toHex(this[i]);return out},SlowBuffer.prototype.toString=function(encoding,start,end){if(encoding=((encoding||\"utf8\")+\"\").toLowerCase(),start=+start||0,end===void 0&&(end=this.length),+end==start)return\"\";switch(encoding){case\"hex\":return this.hexSlice(start,end);case\"utf8\":case\"utf-8\":return this.utf8Slice(start,end);case\"ascii\":return this.asciiSlice(start,end);case\"binary\":return this.binarySlice(start,end);case\"base64\":return this.base64Slice(start,end);case\"ucs2\":case\"ucs-2\":return this.ucs2Slice(start,end);default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.hexWrite=function(string,offset,length){offset=+offset||0;var remaining=this.length-offset;length?(length=+length,length>remaining&&(length=remaining)):length=remaining;var strLen=string.length;if(strLen%2)throw Error(\"Invalid hex string\");length>strLen/2&&(length=strLen/2);for(var i=0;length>i;i++){var byte=parseInt(string.substr(2*i,2),16);if(isNaN(byte))throw Error(\"Invalid hex string\");this[offset+i]=byte}return SlowBuffer._charsWritten=2*i,i},SlowBuffer.prototype.write=function(string,offset,length,encoding){if(isFinite(offset))isFinite(length)||(encoding=length,length=void 0);else{var swap=encoding;encoding=offset,offset=length,length=swap}offset=+offset||0;var remaining=this.length-offset;switch(length?(length=+length,length>remaining&&(length=remaining)):length=remaining,encoding=((encoding||\"utf8\")+\"\").toLowerCase()){case\"hex\":return this.hexWrite(string,offset,length);case\"utf8\":case\"utf-8\":return this.utf8Write(string,offset,length);case\"ascii\":return this.asciiWrite(string,offset,length);case\"binary\":return this.binaryWrite(string,offset,length);case\"base64\":return this.base64Write(string,offset,length);case\"ucs2\":case\"ucs-2\":return this.ucs2Write(string,offset,length);default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.slice=function(start,end){if(void 0===end&&(end=this.length),end>this.length)throw Error(\"oob\");if(start>end)throw Error(\"oob\");return new Buffer(this,end-start,+start)},SlowBuffer.prototype.copy=function(target,targetstart,sourcestart,sourceend){for(var temp=[],i=sourcestart;sourceend>i;i++)assert.ok(this[i]!==void 0,\"copying undefined buffer bytes!\"),temp.push(this[i]);for(var i=targetstart;targetstart+temp.length>i;i++)target[i]=temp[i-targetstart]},SlowBuffer.prototype.fill=function(value,start,end){if(end>this.length)throw Error(\"oob\");if(start>end)throw Error(\"oob\");for(var i=start;end>i;i++)this[i]=value},exports.SlowBuffer=SlowBuffer,exports.Buffer=Buffer,Buffer.poolSize=8192;var pool;Buffer.isBuffer=function(b){return b instanceof Buffer||b instanceof SlowBuffer},Buffer.concat=function(list,totalLength){if(!Array.isArray(list))throw Error(\"Usage: Buffer.concat(list, [totalLength])\\n list should be an Array.\");if(0===list.length)return new Buffer(0);if(1===list.length)return list[0];if(\"number\"!=typeof totalLength){totalLength=0;for(var i=0;list.length>i;i++){var buf=list[i];totalLength+=buf.length}}for(var buffer=new Buffer(totalLength),pos=0,i=0;list.length>i;i++){var buf=list[i];buf.copy(buffer,pos),pos+=buf.length}return buffer},Buffer.prototype.inspect=function(){for(var out=[],len=this.length,i=0;len>i;i++)if(out[i]=toHex(this.parent[i+this.offset]),i==exports.INSPECT_MAX_BYTES){out[i+1]=\"...\";break}return\"\u003CBuffer \"+out.join(\" \")+\">\"},Buffer.prototype.get=function(i){if(0>i||i>=this.length)throw Error(\"oob\");return this.parent[this.offset+i]},Buffer.prototype.set=function(i,v){if(0>i||i>=this.length)throw Error(\"oob\");return this.parent[this.offset+i]=v},Buffer.prototype.write=function(string,offset,length,encoding){if(isFinite(offset))isFinite(length)||(encoding=length,length=void 0);else{var swap=encoding;encoding=offset,offset=length,length=swap}offset=+offset||0;var remaining=this.length-offset;length?(length=+length,length>remaining&&(length=remaining)):length=remaining,encoding=((encoding||\"utf8\")+\"\").toLowerCase();var ret;switch(encoding){case\"hex\":ret=this.parent.hexWrite(string,this.offset+offset,length);break;\ncase\"utf8\":case\"utf-8\":ret=this.parent.utf8Write(string,this.offset+offset,length);break;case\"ascii\":ret=this.parent.asciiWrite(string,this.offset+offset,length);break;case\"binary\":ret=this.parent.binaryWrite(string,this.offset+offset,length);break;case\"base64\":ret=this.parent.base64Write(string,this.offset+offset,length);break;case\"ucs2\":case\"ucs-2\":ret=this.parent.ucs2Write(string,this.offset+offset,length);break;default:throw Error(\"Unknown encoding\")}return Buffer._charsWritten=SlowBuffer._charsWritten,ret},Buffer.prototype.toString=function(encoding,start,end){switch(encoding=((encoding||\"utf8\")+\"\").toLowerCase(),start===void 0||0>start?start=0:start>this.length&&(start=this.length),end===void 0||end>this.length?end=this.length:0>end&&(end=0),start+=this.offset,end+=this.offset,encoding){case\"hex\":return this.parent.hexSlice(start,end);case\"utf8\":case\"utf-8\":return this.parent.utf8Slice(start,end);case\"ascii\":return this.parent.asciiSlice(start,end);case\"binary\":return this.parent.binarySlice(start,end);case\"base64\":return this.parent.base64Slice(start,end);case\"ucs2\":case\"ucs-2\":return this.parent.ucs2Slice(start,end);default:throw Error(\"Unknown encoding\")}},Buffer.byteLength=SlowBuffer.byteLength,Buffer.prototype.fill=function(value,start,end){if(value||(value=0),start||(start=0),end||(end=this.length),\"string\"==typeof value&&(value=value.charCodeAt(0)),\"number\"!=typeof value||isNaN(value))throw Error(\"value is not a number\");if(start>end)throw Error(\"end \u003C start\");if(end===start)return 0;if(0==this.length)return 0;if(0>start||start>=this.length)throw Error(\"start out of bounds\");if(0>end||end>this.length)throw Error(\"end out of bounds\");return this.parent.fill(value,start+this.offset,end+this.offset)},Buffer.prototype.copy=function(target,target_start,start,end){var source=this;if(start||(start=0),end||(end=this.length),target_start||(target_start=0),start>end)throw Error(\"sourceEnd \u003C sourceStart\");if(end===start)return 0;if(0==target.length||0==source.length)return 0;if(0>target_start||target_start>=target.length)throw Error(\"targetStart out of bounds\");if(0>start||start>=source.length)throw Error(\"sourceStart out of bounds\");if(0>end||end>source.length)throw Error(\"sourceEnd out of bounds\");return end>this.length&&(end=this.length),end-start>target.length-target_start&&(end=target.length-target_start+start),this.parent.copy(target.parent,target_start+target.offset,start+this.offset,end+this.offset)},Buffer.prototype.slice=function(start,end){if(void 0===end&&(end=this.length),end>this.length)throw Error(\"oob\");if(start>end)throw Error(\"oob\");return new Buffer(this.parent,end-start,+start+this.offset)},Buffer.prototype.utf8Slice=function(start,end){return this.toString(\"utf8\",start,end)},Buffer.prototype.binarySlice=function(start,end){return this.toString(\"binary\",start,end)},Buffer.prototype.asciiSlice=function(start,end){return this.toString(\"ascii\",start,end)},Buffer.prototype.utf8Write=function(string,offset){return this.write(string,offset,\"utf8\")},Buffer.prototype.binaryWrite=function(string,offset){return this.write(string,offset,\"binary\")},Buffer.prototype.asciiWrite=function(string,offset){return this.write(string,offset,\"ascii\")},Buffer.prototype.readUInt8=function(offset,noAssert){var buffer=this;return noAssert||(assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to read beyond buffer length\")),offset>=buffer.length?void 0:buffer.parent[buffer.offset+offset]},Buffer.prototype.readUInt16LE=function(offset,noAssert){return readUInt16(this,offset,!1,noAssert)},Buffer.prototype.readUInt16BE=function(offset,noAssert){return readUInt16(this,offset,!0,noAssert)},Buffer.prototype.readUInt32LE=function(offset,noAssert){return readUInt32(this,offset,!1,noAssert)},Buffer.prototype.readUInt32BE=function(offset,noAssert){return readUInt32(this,offset,!0,noAssert)},Buffer.prototype.readInt8=function(offset,noAssert){var neg,buffer=this;return noAssert||(assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to read beyond buffer length\")),offset>=buffer.length?void 0:(neg=128&buffer.parent[buffer.offset+offset],neg?-1*(255-buffer.parent[buffer.offset+offset]+1):buffer.parent[buffer.offset+offset])},Buffer.prototype.readInt16LE=function(offset,noAssert){return readInt16(this,offset,!1,noAssert)},Buffer.prototype.readInt16BE=function(offset,noAssert){return readInt16(this,offset,!0,noAssert)},Buffer.prototype.readInt32LE=function(offset,noAssert){return readInt32(this,offset,!1,noAssert)},Buffer.prototype.readInt32BE=function(offset,noAssert){return readInt32(this,offset,!0,noAssert)},Buffer.prototype.readFloatLE=function(offset,noAssert){return readFloat(this,offset,!1,noAssert)},Buffer.prototype.readFloatBE=function(offset,noAssert){return readFloat(this,offset,!0,noAssert)},Buffer.prototype.readDoubleLE=function(offset,noAssert){return readDouble(this,offset,!1,noAssert)},Buffer.prototype.readDoubleBE=function(offset,noAssert){return readDouble(this,offset,!0,noAssert)},Buffer.prototype.writeUInt8=function(value,offset,noAssert){var buffer=this;noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"trying to write beyond buffer length\"),verifuint(value,255)),buffer.length>offset&&(buffer.parent[buffer.offset+offset]=value)},Buffer.prototype.writeUInt16LE=function(value,offset,noAssert){writeUInt16(this,value,offset,!1,noAssert)},Buffer.prototype.writeUInt16BE=function(value,offset,noAssert){writeUInt16(this,value,offset,!0,noAssert)},Buffer.prototype.writeUInt32LE=function(value,offset,noAssert){writeUInt32(this,value,offset,!1,noAssert)},Buffer.prototype.writeUInt32BE=function(value,offset,noAssert){writeUInt32(this,value,offset,!0,noAssert)},Buffer.prototype.writeInt8=function(value,offset,noAssert){var buffer=this;noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to write beyond buffer length\"),verifsint(value,127,-128)),value>=0?buffer.writeUInt8(value,offset,noAssert):buffer.writeUInt8(255+value+1,offset,noAssert)},Buffer.prototype.writeInt16LE=function(value,offset,noAssert){writeInt16(this,value,offset,!1,noAssert)},Buffer.prototype.writeInt16BE=function(value,offset,noAssert){writeInt16(this,value,offset,!0,noAssert)},Buffer.prototype.writeInt32LE=function(value,offset,noAssert){writeInt32(this,value,offset,!1,noAssert)},Buffer.prototype.writeInt32BE=function(value,offset,noAssert){writeInt32(this,value,offset,!0,noAssert)},Buffer.prototype.writeFloatLE=function(value,offset,noAssert){writeFloat(this,value,offset,!1,noAssert)},Buffer.prototype.writeFloatBE=function(value,offset,noAssert){writeFloat(this,value,offset,!0,noAssert)},Buffer.prototype.writeDoubleLE=function(value,offset,noAssert){writeDouble(this,value,offset,!1,noAssert)},Buffer.prototype.writeDoubleBE=function(value,offset,noAssert){writeDouble(this,value,offset,!0,noAssert)},SlowBuffer.prototype.readUInt8=Buffer.prototype.readUInt8,SlowBuffer.prototype.readUInt16LE=Buffer.prototype.readUInt16LE,SlowBuffer.prototype.readUInt16BE=Buffer.prototype.readUInt16BE,SlowBuffer.prototype.readUInt32LE=Buffer.prototype.readUInt32LE,SlowBuffer.prototype.readUInt32BE=Buffer.prototype.readUInt32BE,SlowBuffer.prototype.readInt8=Buffer.prototype.readInt8,SlowBuffer.prototype.readInt16LE=Buffer.prototype.readInt16LE,SlowBuffer.prototype.readInt16BE=Buffer.prototype.readInt16BE,SlowBuffer.prototype.readInt32LE=Buffer.prototype.readInt32LE,SlowBuffer.prototype.readInt32BE=Buffer.prototype.readInt32BE,SlowBuffer.prototype.readFloatLE=Buffer.prototype.readFloatLE,SlowBuffer.prototype.readFloatBE=Buffer.prototype.readFloatBE,SlowBuffer.prototype.readDoubleLE=Buffer.prototype.readDoubleLE,SlowBuffer.prototype.readDoubleBE=Buffer.prototype.readDoubleBE,SlowBuffer.prototype.writeUInt8=Buffer.prototype.writeUInt8,SlowBuffer.prototype.writeUInt16LE=Buffer.prototype.writeUInt16LE,SlowBuffer.prototype.writeUInt16BE=Buffer.prototype.writeUInt16BE,SlowBuffer.prototype.writeUInt32LE=Buffer.prototype.writeUInt32LE,SlowBuffer.prototype.writeUInt32BE=Buffer.prototype.writeUInt32BE,SlowBuffer.prototype.writeInt8=Buffer.prototype.writeInt8,SlowBuffer.prototype.writeInt16LE=Buffer.prototype.writeInt16LE,SlowBuffer.prototype.writeInt16BE=Buffer.prototype.writeInt16BE,SlowBuffer.prototype.writeInt32LE=Buffer.prototype.writeInt32LE,SlowBuffer.prototype.writeInt32BE=Buffer.prototype.writeInt32BE,SlowBuffer.prototype.writeFloatLE=Buffer.prototype.writeFloatLE,SlowBuffer.prototype.writeFloatBE=Buffer.prototype.writeFloatBE,SlowBuffer.prototype.writeDoubleLE=Buffer.prototype.writeDoubleLE,SlowBuffer.prototype.writeDoubleBE=Buffer.prototype.writeDoubleBE})()},{assert:2,\"./buffer_ieee754\":1,\"base64-js\":5}],3:[function(require,module,exports){function isArray(ar){return ar instanceof Array||Array.isArray(ar)||ar&&ar!==Object.prototype&&isArray(ar.__proto__)}function isRegExp(re){return re instanceof RegExp||\"object\"==typeof re&&\"[object RegExp]\"===Object.prototype.toString.call(re)}function isDate(d){if(d instanceof Date)return!0;if(\"object\"!=typeof d)return!1;var properties=Date.prototype&&Object_getOwnPropertyNames(Date.prototype),proto=d.__proto__&&Object_getOwnPropertyNames(d.__proto__);return JSON.stringify(proto)===JSON.stringify(properties)}require(\"events\"),exports.isArray=isArray,exports.isDate=function(obj){return\"[object Date]\"===Object.prototype.toString.call(obj)},exports.isRegExp=function(obj){return\"[object RegExp]\"===Object.prototype.toString.call(obj)},exports.print=function(){},exports.puts=function(){},exports.debug=function(){},exports.inspect=function(obj,showHidden,depth,colors){function format(value,recurseTimes){if(value&&\"function\"==typeof value.inspect&&value!==exports&&(!value.constructor||value.constructor.prototype!==value))return value.inspect(recurseTimes);switch(typeof value){case\"undefined\":return stylize(\"undefined\",\"undefined\");case\"string\":var simple=\"'\"+JSON.stringify(value).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return stylize(simple,\"string\");case\"number\":return stylize(\"\"+value,\"number\");case\"boolean\":return stylize(\"\"+value,\"boolean\")}if(null===value)return stylize(\"null\",\"null\");var visible_keys=Object_keys(value),keys=showHidden?Object_getOwnPropertyNames(value):visible_keys;if(\"function\"==typeof value&&0===keys.length){if(isRegExp(value))return stylize(\"\"+value,\"regexp\");var name=value.name?\": \"+value.name:\"\";return stylize(\"[Function\"+name+\"]\",\"special\")}if(isDate(value)&&0===keys.length)return stylize(value.toUTCString(),\"date\");var base,type,braces;if(isArray(value)?(type=\"Array\",braces=[\"[\",\"]\"]):(type=\"Object\",braces=[\"{\",\"}\"]),\"function\"==typeof value){var n=value.name?\": \"+value.name:\"\";base=isRegExp(value)?\" \"+value:\" [Function\"+n+\"]\"}else base=\"\";if(isDate(value)&&(base=\" \"+value.toUTCString()),0===keys.length)return braces[0]+base+braces[1];if(0>recurseTimes)return isRegExp(value)?stylize(\"\"+value,\"regexp\"):stylize(\"[Object]\",\"special\");seen.push(value);var output=keys.map(function(key){var name,str;if(value.__lookupGetter__&&(value.__lookupGetter__(key)?str=value.__lookupSetter__(key)?stylize(\"[Getter/Setter]\",\"special\"):stylize(\"[Getter]\",\"special\"):value.__lookupSetter__(key)&&(str=stylize(\"[Setter]\",\"special\"))),0>visible_keys.indexOf(key)&&(name=\"[\"+key+\"]\"),str||(0>seen.indexOf(value[key])?(str=null===recurseTimes?format(value[key]):format(value[key],recurseTimes-1),str.indexOf(\"\\n\")>-1&&(str=isArray(value)?str.split(\"\\n\").map(function(line){return\" \"+line}).join(\"\\n\").substr(2):\"\\n\"+str.split(\"\\n\").map(function(line){return\" \"+line}).join(\"\\n\"))):str=stylize(\"[Circular]\",\"special\")),name===void 0){if(\"Array\"===type&&key.match(/^\\d+$/))return str;name=JSON.stringify(\"\"+key),name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(name=name.substr(1,name.length-2),name=stylize(name,\"name\")):(name=name.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),name=stylize(name,\"string\"))}return name+\": \"+str});seen.pop();var numLinesEst=0,length=output.reduce(function(prev,cur){return numLinesEst++,cur.indexOf(\"\\n\")>=0&&numLinesEst++,prev+cur.length+1},0);return output=length>50?braces[0]+(\"\"===base?\"\":base+\"\\n \")+\" \"+output.join(\",\\n \")+\" \"+braces[1]:braces[0]+base+\" \"+output.join(\", \")+\" \"+braces[1]}var seen=[],stylize=function(str,styleType){var styles={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},style={special:\"cyan\",number:\"blue\",\"boolean\":\"yellow\",undefined:\"grey\",\"null\":\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"}[styleType];return style?\"\u001b[\"+styles[style][0]+\"m\"+str+\"\u001b[\"+styles[style][1]+\"m\":str};return colors||(stylize=function(str){return str}),format(obj,depth===void 0?2:depth)},exports.log=function(){},exports.pump=null;var Object_keys=Object.keys||function(obj){var res=[];for(var key in obj)res.push(key);return res},Object_getOwnPropertyNames=Object.getOwnPropertyNames||function(obj){var res=[];for(var key in obj)Object.hasOwnProperty.call(obj,key)&&res.push(key);return res},Object_create=Object.create||function(prototype,properties){var object;if(null===prototype)object={__proto__:null};else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != 'object'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return properties!==void 0&&Object.defineProperties&&Object.defineProperties(object,properties),object};exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object_create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})};var formatRegExp=/%[sdj%]/g;exports.format=function(f){if(\"string\"!=typeof f){for(var objects=[],i=0;arguments.length>i;i++)objects.push(exports.inspect(arguments[i]));return objects.join(\" \")}for(var i=1,args=arguments,len=args.length,str=(f+\"\").replace(formatRegExp,function(x){if(\"%%\"===x)return\"%\";if(i>=len)return x;switch(x){case\"%s\":return args[i++]+\"\";case\"%d\":return Number(args[i++]);case\"%j\":return JSON.stringify(args[i++]);default:return x}}),x=args[i];len>i;x=args[++i])str+=null===x||\"object\"!=typeof x?\" \"+x:\" \"+exports.inspect(x);return str}},{events:6}],5:[function(require,module){(function(){\"use strict\";function b64ToByteArray(b64){var i,j,l,tmp,placeHolders,arr;if(b64.length%4>0)throw\"Invalid string. Length must be a multiple of 4\";for(placeHolders=b64.indexOf(\"=\"),placeHolders=placeHolders>0?b64.length-placeHolders:0,arr=[],l=placeHolders>0?b64.length-4:b64.length,i=0,j=0;l>i;i+=4,j+=3)tmp=lookup.indexOf(b64[i])\u003C\u003C18|lookup.indexOf(b64[i+1])\u003C\u003C12|lookup.indexOf(b64[i+2])\u003C\u003C6|lookup.indexOf(b64[i+3]),arr.push((16711680&tmp)>>16),arr.push((65280&tmp)>>8),arr.push(255&tmp);return 2===placeHolders?(tmp=lookup.indexOf(b64[i])\u003C\u003C2|lookup.indexOf(b64[i+1])>>4,arr.push(255&tmp)):1===placeHolders&&(tmp=lookup.indexOf(b64[i])\u003C\u003C10|lookup.indexOf(b64[i+1])\u003C\u003C4|lookup.indexOf(b64[i+2])>>2,arr.push(255&tmp>>8),arr.push(255&tmp)),arr}function uint8ToBase64(uint8){function tripletToBase64(num){return lookup[63&num>>18]+lookup[63&num>>12]+lookup[63&num>>6]+lookup[63&num]}var i,temp,length,extraBytes=uint8.length%3,output=\"\";for(i=0,length=uint8.length-extraBytes;length>i;i+=3)temp=(uint8[i]\u003C\u003C16)+(uint8[i+1]\u003C\u003C8)+uint8[i+2],output+=tripletToBase64(temp);switch(extraBytes){case 1:temp=uint8[uint8.length-1],output+=lookup[temp>>2],output+=lookup[63&temp\u003C\u003C4],output+=\"==\";break;case 2:temp=(uint8[uint8.length-2]\u003C\u003C8)+uint8[uint8.length-1],output+=lookup[temp>>10],output+=lookup[63&temp>>4],output+=lookup[63&temp\u003C\u003C2],output+=\"=\"}return output}var lookup=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";module.exports.toByteArray=b64ToByteArray,module.exports.fromByteArray=uint8ToBase64})()},{}],7:[function(require,module,exports){exports.readIEEE754=function(buffer,offset,isBE,mLen,nBytes){var e,m,eLen=8*nBytes-mLen-1,eMax=(1\u003C\u003CeLen)-1,eBias=eMax>>1,nBits=-7,i=isBE?0:nBytes-1,d=isBE?1:-1,s=buffer[offset+i];for(i+=d,e=s&(1\u003C\u003C-nBits)-1,s>>=-nBits,nBits+=eLen;nBits>0;e=256*e+buffer[offset+i],i+=d,nBits-=8);for(m=e&(1\u003C\u003C-nBits)-1,e>>=-nBits,nBits+=mLen;nBits>0;m=256*m+buffer[offset+i],i+=d,nBits-=8);if(0===e)e=1-eBias;else{if(e===eMax)return m?0/0:1/0*(s?-1:1);m+=Math.pow(2,mLen),e-=eBias}return(s?-1:1)*m*Math.pow(2,e-mLen)},exports.writeIEEE754=function(buffer,value,offset,isBE,mLen,nBytes){var e,m,c,eLen=8*nBytes-mLen-1,eMax=(1\u003C\u003CeLen)-1,eBias=eMax>>1,rt=23===mLen?Math.pow(2,-24)-Math.pow(2,-77):0,i=isBE?nBytes-1:0,d=isBE?-1:1,s=0>value||0===value&&0>1/value?1:0;for(value=Math.abs(value),isNaN(value)||1/0===value?(m=isNaN(value)?1:0,e=eMax):(e=Math.floor(Math.log(value)/Math.LN2),1>value*(c=Math.pow(2,-e))&&(e--,c*=2),value+=e+eBias>=1?rt/c:rt*Math.pow(2,1-eBias),value*c>=2&&(e++,c/=2),e+eBias>=eMax?(m=0,e=eMax):e+eBias>=1?(m=(value*c-1)*Math.pow(2,mLen),e+=eBias):(m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen),e=0));mLen>=8;buffer[offset+i]=255&m,i+=d,m/=256,mLen-=8);for(e=e\u003C\u003CmLen|m,eLen+=mLen;eLen>0;buffer[offset+i]=255&e,i+=d,e/=256,eLen-=8);buffer[offset+i-d]|=128*s}},{}],8:[function(require,module){var process=module.exports={};process.nextTick=function(){var canSetImmediate=\"undefined\"!=typeof window&&window.setImmediate,canPost=\"undefined\"!=typeof window&&window.postMessage&&window.addEventListener;if(canSetImmediate)return function(f){return window.setImmediate(f)};if(canPost){var queue=[];return window.addEventListener(\"message\",function(ev){if(ev.source===window&&\"process-tick\"===ev.data&&(ev.stopPropagation(),queue.length>0)){var fn=queue.shift();fn()}},!0),function(fn){queue.push(fn),window.postMessage(\"process-tick\",\"*\")}}return function(fn){setTimeout(fn,0)}}(),process.title=\"browser\",process.browser=!0,process.env={},process.argv=[],process.binding=function(){throw Error(\"process.binding is not supported\")},process.cwd=function(){return\"/\"},process.chdir=function(){throw Error(\"process.chdir is not supported\")}},{}],6:[function(require,module,exports){(function(process){function indexOf(xs,x){if(xs.indexOf)return xs.indexOf(x);for(var i=0;xs.length>i;i++)if(x===xs[i])return i;return-1}process.EventEmitter||(process.EventEmitter=function(){});var EventEmitter=exports.EventEmitter=process.EventEmitter,isArray=\"function\"==typeof Array.isArray?Array.isArray:function(xs){return\"[object Array]\"===Object.prototype.toString.call(xs)},defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){this._events||(this._events={}),this._events.maxListeners=n},EventEmitter.prototype.emit=function(type){if(\"error\"===type&&(!this._events||!this._events.error||isArray(this._events.error)&&!this._events.error.length))throw arguments[1]instanceof Error?arguments[1]:Error(\"Uncaught, unspecified 'error' event.\");if(!this._events)return!1;var handler=this._events[type];if(!handler)return!1;if(\"function\"==typeof handler){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:var args=Array.prototype.slice.call(arguments,1);handler.apply(this,args)}return!0}if(isArray(handler)){for(var args=Array.prototype.slice.call(arguments,1),listeners=handler.slice(),i=0,l=listeners.length;l>i;i++)listeners[i].apply(this,args);return!0}return!1},EventEmitter.prototype.addListener=function(type,listener){if(\"function\"!=typeof listener)throw Error(\"addListener only takes instances of Function\");if(this._events||(this._events={}),this.emit(\"newListener\",type,listener),this._events[type])if(isArray(this._events[type])){if(!this._events[type].warned){var m;m=void 0!==this._events.maxListeners?this._events.maxListeners:defaultMaxListeners,m&&m>0&&this._events[type].length>m&&(this._events[type].warned=!0,console.error(\"(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.\",this._events[type].length),console.trace())}this._events[type].push(listener)}else this._events[type]=[this._events[type],listener];else this._events[type]=listener;return this},EventEmitter.prototype.on=EventEmitter.prototype.addListener,EventEmitter.prototype.once=function(type,listener){var self=this;return self.on(type,function g(){self.removeListener(type,g),listener.apply(this,arguments)}),this},EventEmitter.prototype.removeListener=function(type,listener){if(\"function\"!=typeof listener)throw Error(\"removeListener only takes instances of Function\");if(!this._events||!this._events[type])return this;var list=this._events[type];if(isArray(list)){var i=indexOf(list,listener);if(0>i)return this;list.splice(i,1),0==list.length&&delete this._events[type]}else this._events[type]===listener&&delete this._events[type];return this},EventEmitter.prototype.removeAllListeners=function(type){return 0===arguments.length?(this._events={},this):(type&&this._events&&this._events[type]&&(this._events[type]=null),this)},EventEmitter.prototype.listeners=function(type){return this._events||(this._events={}),this._events[type]||(this._events[type]=[]),isArray(this._events[type])||(this._events[type]=[this._events[type]]),this._events[type]}})(require(\"__browserify_process\"))},{__browserify_process:8}],4:[function(require,module,exports){(function(){function SlowBuffer(size){this.length=size}function toHex(n){return 16>n?\"0\"+n.toString(16):n.toString(16)}function utf8ToBytes(str){for(var byteArray=[],i=0;str.length>i;i++)if(127>=str.charCodeAt(i))byteArray.push(str.charCodeAt(i));else for(var h=encodeURIComponent(str.charAt(i)).substr(1).split(\"%\"),j=0;h.length>j;j++)byteArray.push(parseInt(h[j],16));return byteArray}function asciiToBytes(str){for(var byteArray=[],i=0;str.length>i;i++)byteArray.push(255&str.charCodeAt(i));return byteArray}function base64ToBytes(str){return require(\"base64-js\").toByteArray(str)}function blitBuffer(src,dst,offset,length){for(var i=0;length>i&&!(i+offset>=dst.length||i>=src.length);)dst[i+offset]=src[i],i++;return i}function decodeUtf8Char(str){try{return decodeURIComponent(str)}catch(err){return String.fromCharCode(65533)}}function coerce(length){return length=~~Math.ceil(+length),0>length?0:length}function Buffer(subject,encoding,offset){if(!(this instanceof Buffer))return new Buffer(subject,encoding,offset);var type;if(\"number\"==typeof offset)this.length=coerce(encoding),this.parent=subject,this.offset=offset;else{switch(type=typeof subject){case\"number\":this.length=coerce(subject);break;case\"string\":this.length=Buffer.byteLength(subject,encoding);break;case\"object\":this.length=coerce(subject.length);break;default:throw Error(\"First argument needs to be a number, array or string.\")}if(this.length>Buffer.poolSize?(this.parent=new SlowBuffer(this.length),this.offset=0):((!pool||pool.length-pool.used\u003Cthis.length)&&allocPool(),this.parent=pool,this.offset=pool.used,pool.used+=this.length),isArrayIsh(subject))for(var i=0;this.length>i;i++)this.parent[i+this.offset]=subject[i];else\"string\"==type&&(this.length=this.write(subject,0,encoding))}}function isArrayIsh(subject){return Array.isArray(subject)||Buffer.isBuffer(subject)||subject&&\"object\"==typeof subject&&\"number\"==typeof subject.length}function allocPool(){pool=new SlowBuffer(Buffer.poolSize),pool.used=0}function readUInt16(buffer,offset,isBigEndian,noAssert){var val=0;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to read beyond buffer length\")),isBigEndian?(val=buffer.parent[buffer.offset+offset]\u003C\u003C8,val|=buffer.parent[buffer.offset+offset+1]):(val=buffer.parent[buffer.offset+offset],val|=buffer.parent[buffer.offset+offset+1]\u003C\u003C8),val}function readUInt32(buffer,offset,isBigEndian,noAssert){var val=0;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),isBigEndian?(val=buffer.parent[buffer.offset+offset+1]\u003C\u003C16,val|=buffer.parent[buffer.offset+offset+2]\u003C\u003C8,val|=buffer.parent[buffer.offset+offset+3],val+=buffer.parent[buffer.offset+offset]\u003C\u003C24>>>0):(val=buffer.parent[buffer.offset+offset+2]\u003C\u003C16,val|=buffer.parent[buffer.offset+offset+1]\u003C\u003C8,val|=buffer.parent[buffer.offset+offset],val+=buffer.parent[buffer.offset+offset+3]\u003C\u003C24>>>0),val}function readInt16(buffer,offset,isBigEndian,noAssert){var neg,val;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to read beyond buffer length\")),val=readUInt16(buffer,offset,isBigEndian,noAssert),neg=32768&val,neg?-1*(65535-val+1):val}function readInt32(buffer,offset,isBigEndian,noAssert){var neg,val;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),val=readUInt32(buffer,offset,isBigEndian,noAssert),neg=2147483648&val,neg?-1*(4294967295-val+1):val}function readFloat(buffer,offset,isBigEndian,noAssert){return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),require(\"./buffer_ieee754\").readIEEE754(buffer,offset,isBigEndian,23,4)}function readDouble(buffer,offset,isBigEndian,noAssert){return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(buffer.length>offset+7,\"Trying to read beyond buffer length\")),require(\"./buffer_ieee754\").readIEEE754(buffer,offset,isBigEndian,52,8)}function verifuint(value,max){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(value>=0,\"specified a negative value for writing an unsigned value\"),assert.ok(max>=value,\"value is larger than maximum value for type\"),assert.ok(Math.floor(value)===value,\"value has a fractional component\")}function writeUInt16(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"trying to write beyond buffer length\"),verifuint(value,65535)),isBigEndian?(buffer.parent[buffer.offset+offset]=(65280&value)>>>8,buffer.parent[buffer.offset+offset+1]=255&value):(buffer.parent[buffer.offset+offset+1]=(65280&value)>>>8,buffer.parent[buffer.offset+offset]=255&value)}function writeUInt32(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"trying to write beyond buffer length\"),verifuint(value,4294967295)),isBigEndian?(buffer.parent[buffer.offset+offset]=255&value>>>24,buffer.parent[buffer.offset+offset+1]=255&value>>>16,buffer.parent[buffer.offset+offset+2]=255&value>>>8,buffer.parent[buffer.offset+offset+3]=255&value):(buffer.parent[buffer.offset+offset+3]=255&value>>>24,buffer.parent[buffer.offset+offset+2]=255&value>>>16,buffer.parent[buffer.offset+offset+1]=255&value>>>8,buffer.parent[buffer.offset+offset]=255&value)}function verifsint(value,max,min){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(max>=value,\"value larger than maximum allowed value\"),assert.ok(value>=min,\"value smaller than minimum allowed value\"),assert.ok(Math.floor(value)===value,\"value has a fractional component\")}function verifIEEE754(value,max,min){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(max>=value,\"value larger than maximum allowed value\"),assert.ok(value>=min,\"value smaller than minimum allowed value\")}function writeInt16(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to write beyond buffer length\"),verifsint(value,32767,-32768)),value>=0?writeUInt16(buffer,value,offset,isBigEndian,noAssert):writeUInt16(buffer,65535+value+1,offset,isBigEndian,noAssert)}function writeInt32(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to write beyond buffer length\"),verifsint(value,2147483647,-2147483648)),value>=0?writeUInt32(buffer,value,offset,isBigEndian,noAssert):writeUInt32(buffer,4294967295+value+1,offset,isBigEndian,noAssert)}function writeFloat(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to write beyond buffer length\"),verifIEEE754(value,3.4028234663852886e38,-3.4028234663852886e38)),require(\"./buffer_ieee754\").writeIEEE754(buffer,value,offset,isBigEndian,23,4)}function writeDouble(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+7,\"Trying to write beyond buffer length\"),verifIEEE754(value,1.7976931348623157e308,-1.7976931348623157e308)),require(\"./buffer_ieee754\").writeIEEE754(buffer,value,offset,isBigEndian,52,8)}var assert=require(\"assert\");exports.INSPECT_MAX_BYTES=50,SlowBuffer.byteLength=function(str,encoding){switch(encoding||\"utf8\"){case\"hex\":return str.length/2;case\"utf8\":case\"utf-8\":return utf8ToBytes(str).length;case\"ascii\":return str.length;case\"base64\":return base64ToBytes(str).length;default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.utf8Write=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(utf8ToBytes(string),this,offset,length)},SlowBuffer.prototype.asciiWrite=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(asciiToBytes(string),this,offset,length)},SlowBuffer.prototype.base64Write=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(base64ToBytes(string),this,offset,length)},SlowBuffer.prototype.base64Slice=function(){var bytes=Array.prototype.slice.apply(this,arguments);return require(\"base64-js\").fromByteArray(bytes)},SlowBuffer.prototype.utf8Slice=function(){for(var bytes=Array.prototype.slice.apply(this,arguments),res=\"\",tmp=\"\",i=0;bytes.length>i;)127>=bytes[i]?(res+=decodeUtf8Char(tmp)+String.fromCharCode(bytes[i]),tmp=\"\"):tmp+=\"%\"+bytes[i].toString(16),i++;return res+decodeUtf8Char(tmp)},SlowBuffer.prototype.asciiSlice=function(){for(var bytes=Array.prototype.slice.apply(this,arguments),ret=\"\",i=0;bytes.length>i;i++)ret+=String.fromCharCode(bytes[i]);return ret},SlowBuffer.prototype.inspect=function(){for(var out=[],len=this.length,i=0;len>i;i++)if(out[i]=toHex(this[i]),i==exports.INSPECT_MAX_BYTES){out[i+1]=\"...\";break}return\"\u003CSlowBuffer \"+out.join(\" \")+\">\"},SlowBuffer.prototype.hexSlice=function(start,end){var len=this.length;(!start||0>start)&&(start=0),(!end||0>end||end>len)&&(end=len);for(var out=\"\",i=start;end>i;i++)out+=toHex(this[i]);return out},SlowBuffer.prototype.toString=function(encoding,start,end){if(encoding=((encoding||\"utf8\")+\"\").toLowerCase(),start=+start||0,end===void 0&&(end=this.length),+end==start)return\"\";\nswitch(encoding){case\"hex\":return this.hexSlice(start,end);case\"utf8\":case\"utf-8\":return this.utf8Slice(start,end);case\"ascii\":return this.asciiSlice(start,end);case\"binary\":return this.binarySlice(start,end);case\"base64\":return this.base64Slice(start,end);case\"ucs2\":case\"ucs-2\":return this.ucs2Slice(start,end);default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.hexWrite=function(string,offset,length){offset=+offset||0;var remaining=this.length-offset;length?(length=+length,length>remaining&&(length=remaining)):length=remaining;var strLen=string.length;if(strLen%2)throw Error(\"Invalid hex string\");length>strLen/2&&(length=strLen/2);for(var i=0;length>i;i++){var byte=parseInt(string.substr(2*i,2),16);if(isNaN(byte))throw Error(\"Invalid hex string\");this[offset+i]=byte}return SlowBuffer._charsWritten=2*i,i},SlowBuffer.prototype.write=function(string,offset,length,encoding){if(isFinite(offset))isFinite(length)||(encoding=length,length=void 0);else{var swap=encoding;encoding=offset,offset=length,length=swap}offset=+offset||0;var remaining=this.length-offset;switch(length?(length=+length,length>remaining&&(length=remaining)):length=remaining,encoding=((encoding||\"utf8\")+\"\").toLowerCase()){case\"hex\":return this.hexWrite(string,offset,length);case\"utf8\":case\"utf-8\":return this.utf8Write(string,offset,length);case\"ascii\":return this.asciiWrite(string,offset,length);case\"binary\":return this.binaryWrite(string,offset,length);case\"base64\":return this.base64Write(string,offset,length);case\"ucs2\":case\"ucs-2\":return this.ucs2Write(string,offset,length);default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.slice=function(start,end){if(void 0===end&&(end=this.length),end>this.length)throw Error(\"oob\");if(start>end)throw Error(\"oob\");return new Buffer(this,end-start,+start)},SlowBuffer.prototype.copy=function(target,targetstart,sourcestart,sourceend){for(var temp=[],i=sourcestart;sourceend>i;i++)assert.ok(this[i]!==void 0,\"copying undefined buffer bytes!\"),temp.push(this[i]);for(var i=targetstart;targetstart+temp.length>i;i++)target[i]=temp[i-targetstart]},exports.SlowBuffer=SlowBuffer,exports.Buffer=Buffer,Buffer.poolSize=8192;var pool;Buffer.isBuffer=function(b){return b instanceof Buffer||b instanceof SlowBuffer},Buffer.concat=function(list,totalLength){if(!Array.isArray(list))throw Error(\"Usage: Buffer.concat(list, [totalLength])\\n list should be an Array.\");if(0===list.length)return new Buffer(0);if(1===list.length)return list[0];if(\"number\"!=typeof totalLength){totalLength=0;for(var i=0;list.length>i;i++){var buf=list[i];totalLength+=buf.length}}for(var buffer=new Buffer(totalLength),pos=0,i=0;list.length>i;i++){var buf=list[i];buf.copy(buffer,pos),pos+=buf.length}return buffer},Buffer.prototype.inspect=function(){for(var out=[],len=this.length,i=0;len>i;i++)if(out[i]=toHex(this.parent[i+this.offset]),i==exports.INSPECT_MAX_BYTES){out[i+1]=\"...\";break}return\"\u003CBuffer \"+out.join(\" \")+\">\"},Buffer.prototype.get=function(i){if(0>i||i>=this.length)throw Error(\"oob\");return this.parent[this.offset+i]},Buffer.prototype.set=function(i,v){if(0>i||i>=this.length)throw Error(\"oob\");return this.parent[this.offset+i]=v},Buffer.prototype.write=function(string,offset,length,encoding){if(isFinite(offset))isFinite(length)||(encoding=length,length=void 0);else{var swap=encoding;encoding=offset,offset=length,length=swap}offset=+offset||0;var remaining=this.length-offset;length?(length=+length,length>remaining&&(length=remaining)):length=remaining,encoding=((encoding||\"utf8\")+\"\").toLowerCase();var ret;switch(encoding){case\"hex\":ret=this.parent.hexWrite(string,this.offset+offset,length);break;case\"utf8\":case\"utf-8\":ret=this.parent.utf8Write(string,this.offset+offset,length);break;case\"ascii\":ret=this.parent.asciiWrite(string,this.offset+offset,length);break;case\"binary\":ret=this.parent.binaryWrite(string,this.offset+offset,length);break;case\"base64\":ret=this.parent.base64Write(string,this.offset+offset,length);break;case\"ucs2\":case\"ucs-2\":ret=this.parent.ucs2Write(string,this.offset+offset,length);break;default:throw Error(\"Unknown encoding\")}return Buffer._charsWritten=SlowBuffer._charsWritten,ret},Buffer.prototype.toString=function(encoding,start,end){switch(encoding=((encoding||\"utf8\")+\"\").toLowerCase(),start===void 0||0>start?start=0:start>this.length&&(start=this.length),end===void 0||end>this.length?end=this.length:0>end&&(end=0),start+=this.offset,end+=this.offset,encoding){case\"hex\":return this.parent.hexSlice(start,end);case\"utf8\":case\"utf-8\":return this.parent.utf8Slice(start,end);case\"ascii\":return this.parent.asciiSlice(start,end);case\"binary\":return this.parent.binarySlice(start,end);case\"base64\":return this.parent.base64Slice(start,end);case\"ucs2\":case\"ucs-2\":return this.parent.ucs2Slice(start,end);default:throw Error(\"Unknown encoding\")}},Buffer.byteLength=SlowBuffer.byteLength,Buffer.prototype.fill=function(value,start,end){if(value||(value=0),start||(start=0),end||(end=this.length),\"string\"==typeof value&&(value=value.charCodeAt(0)),\"number\"!=typeof value||isNaN(value))throw Error(\"value is not a number\");if(start>end)throw Error(\"end \u003C start\");if(end===start)return 0;if(0==this.length)return 0;if(0>start||start>=this.length)throw Error(\"start out of bounds\");if(0>end||end>this.length)throw Error(\"end out of bounds\");return this.parent.fill(value,start+this.offset,end+this.offset)},Buffer.prototype.copy=function(target,target_start,start,end){var source=this;if(start||(start=0),end||(end=this.length),target_start||(target_start=0),start>end)throw Error(\"sourceEnd \u003C sourceStart\");if(end===start)return 0;if(0==target.length||0==source.length)return 0;if(0>target_start||target_start>=target.length)throw Error(\"targetStart out of bounds\");if(0>start||start>=source.length)throw Error(\"sourceStart out of bounds\");if(0>end||end>source.length)throw Error(\"sourceEnd out of bounds\");return end>this.length&&(end=this.length),end-start>target.length-target_start&&(end=target.length-target_start+start),this.parent.copy(target.parent,target_start+target.offset,start+this.offset,end+this.offset)},Buffer.prototype.slice=function(start,end){if(void 0===end&&(end=this.length),end>this.length)throw Error(\"oob\");if(start>end)throw Error(\"oob\");return new Buffer(this.parent,end-start,+start+this.offset)},Buffer.prototype.utf8Slice=function(start,end){return this.toString(\"utf8\",start,end)},Buffer.prototype.binarySlice=function(start,end){return this.toString(\"binary\",start,end)},Buffer.prototype.asciiSlice=function(start,end){return this.toString(\"ascii\",start,end)},Buffer.prototype.utf8Write=function(string,offset){return this.write(string,offset,\"utf8\")},Buffer.prototype.binaryWrite=function(string,offset){return this.write(string,offset,\"binary\")},Buffer.prototype.asciiWrite=function(string,offset){return this.write(string,offset,\"ascii\")},Buffer.prototype.readUInt8=function(offset,noAssert){var buffer=this;return noAssert||(assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to read beyond buffer length\")),buffer.parent[buffer.offset+offset]},Buffer.prototype.readUInt16LE=function(offset,noAssert){return readUInt16(this,offset,!1,noAssert)},Buffer.prototype.readUInt16BE=function(offset,noAssert){return readUInt16(this,offset,!0,noAssert)},Buffer.prototype.readUInt32LE=function(offset,noAssert){return readUInt32(this,offset,!1,noAssert)},Buffer.prototype.readUInt32BE=function(offset,noAssert){return readUInt32(this,offset,!0,noAssert)},Buffer.prototype.readInt8=function(offset,noAssert){var neg,buffer=this;return noAssert||(assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to read beyond buffer length\")),neg=128&buffer.parent[buffer.offset+offset],neg?-1*(255-buffer.parent[buffer.offset+offset]+1):buffer.parent[buffer.offset+offset]},Buffer.prototype.readInt16LE=function(offset,noAssert){return readInt16(this,offset,!1,noAssert)},Buffer.prototype.readInt16BE=function(offset,noAssert){return readInt16(this,offset,!0,noAssert)},Buffer.prototype.readInt32LE=function(offset,noAssert){return readInt32(this,offset,!1,noAssert)},Buffer.prototype.readInt32BE=function(offset,noAssert){return readInt32(this,offset,!0,noAssert)},Buffer.prototype.readFloatLE=function(offset,noAssert){return readFloat(this,offset,!1,noAssert)},Buffer.prototype.readFloatBE=function(offset,noAssert){return readFloat(this,offset,!0,noAssert)},Buffer.prototype.readDoubleLE=function(offset,noAssert){return readDouble(this,offset,!1,noAssert)},Buffer.prototype.readDoubleBE=function(offset,noAssert){return readDouble(this,offset,!0,noAssert)},Buffer.prototype.writeUInt8=function(value,offset,noAssert){var buffer=this;noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"trying to write beyond buffer length\"),verifuint(value,255)),buffer.parent[buffer.offset+offset]=value},Buffer.prototype.writeUInt16LE=function(value,offset,noAssert){writeUInt16(this,value,offset,!1,noAssert)},Buffer.prototype.writeUInt16BE=function(value,offset,noAssert){writeUInt16(this,value,offset,!0,noAssert)},Buffer.prototype.writeUInt32LE=function(value,offset,noAssert){writeUInt32(this,value,offset,!1,noAssert)},Buffer.prototype.writeUInt32BE=function(value,offset,noAssert){writeUInt32(this,value,offset,!0,noAssert)},Buffer.prototype.writeInt8=function(value,offset,noAssert){var buffer=this;noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to write beyond buffer length\"),verifsint(value,127,-128)),value>=0?buffer.writeUInt8(value,offset,noAssert):buffer.writeUInt8(255+value+1,offset,noAssert)},Buffer.prototype.writeInt16LE=function(value,offset,noAssert){writeInt16(this,value,offset,!1,noAssert)},Buffer.prototype.writeInt16BE=function(value,offset,noAssert){writeInt16(this,value,offset,!0,noAssert)},Buffer.prototype.writeInt32LE=function(value,offset,noAssert){writeInt32(this,value,offset,!1,noAssert)},Buffer.prototype.writeInt32BE=function(value,offset,noAssert){writeInt32(this,value,offset,!0,noAssert)},Buffer.prototype.writeFloatLE=function(value,offset,noAssert){writeFloat(this,value,offset,!1,noAssert)},Buffer.prototype.writeFloatBE=function(value,offset,noAssert){writeFloat(this,value,offset,!0,noAssert)},Buffer.prototype.writeDoubleLE=function(value,offset,noAssert){writeDouble(this,value,offset,!1,noAssert)},Buffer.prototype.writeDoubleBE=function(value,offset,noAssert){writeDouble(this,value,offset,!0,noAssert)},SlowBuffer.prototype.readUInt8=Buffer.prototype.readUInt8,SlowBuffer.prototype.readUInt16LE=Buffer.prototype.readUInt16LE,SlowBuffer.prototype.readUInt16BE=Buffer.prototype.readUInt16BE,SlowBuffer.prototype.readUInt32LE=Buffer.prototype.readUInt32LE,SlowBuffer.prototype.readUInt32BE=Buffer.prototype.readUInt32BE,SlowBuffer.prototype.readInt8=Buffer.prototype.readInt8,SlowBuffer.prototype.readInt16LE=Buffer.prototype.readInt16LE,SlowBuffer.prototype.readInt16BE=Buffer.prototype.readInt16BE,SlowBuffer.prototype.readInt32LE=Buffer.prototype.readInt32LE,SlowBuffer.prototype.readInt32BE=Buffer.prototype.readInt32BE,SlowBuffer.prototype.readFloatLE=Buffer.prototype.readFloatLE,SlowBuffer.prototype.readFloatBE=Buffer.prototype.readFloatBE,SlowBuffer.prototype.readDoubleLE=Buffer.prototype.readDoubleLE,SlowBuffer.prototype.readDoubleBE=Buffer.prototype.readDoubleBE,SlowBuffer.prototype.writeUInt8=Buffer.prototype.writeUInt8,SlowBuffer.prototype.writeUInt16LE=Buffer.prototype.writeUInt16LE,SlowBuffer.prototype.writeUInt16BE=Buffer.prototype.writeUInt16BE,SlowBuffer.prototype.writeUInt32LE=Buffer.prototype.writeUInt32LE,SlowBuffer.prototype.writeUInt32BE=Buffer.prototype.writeUInt32BE,SlowBuffer.prototype.writeInt8=Buffer.prototype.writeInt8,SlowBuffer.prototype.writeInt16LE=Buffer.prototype.writeInt16LE,SlowBuffer.prototype.writeInt16BE=Buffer.prototype.writeInt16BE,SlowBuffer.prototype.writeInt32LE=Buffer.prototype.writeInt32LE,SlowBuffer.prototype.writeInt32BE=Buffer.prototype.writeInt32BE,SlowBuffer.prototype.writeFloatLE=Buffer.prototype.writeFloatLE,SlowBuffer.prototype.writeFloatBE=Buffer.prototype.writeFloatBE,SlowBuffer.prototype.writeDoubleLE=Buffer.prototype.writeDoubleLE,SlowBuffer.prototype.writeDoubleBE=Buffer.prototype.writeDoubleBE})()},{assert:2,\"./buffer_ieee754\":7,\"base64-js\":9}],9:[function(require,module){(function(){\"use strict\";function b64ToByteArray(b64){var i,j,l,tmp,placeHolders,arr;if(b64.length%4>0)throw\"Invalid string. Length must be a multiple of 4\";for(placeHolders=b64.indexOf(\"=\"),placeHolders=placeHolders>0?b64.length-placeHolders:0,arr=[],l=placeHolders>0?b64.length-4:b64.length,i=0,j=0;l>i;i+=4,j+=3)tmp=lookup.indexOf(b64[i])\u003C\u003C18|lookup.indexOf(b64[i+1])\u003C\u003C12|lookup.indexOf(b64[i+2])\u003C\u003C6|lookup.indexOf(b64[i+3]),arr.push((16711680&tmp)>>16),arr.push((65280&tmp)>>8),arr.push(255&tmp);return 2===placeHolders?(tmp=lookup.indexOf(b64[i])\u003C\u003C2|lookup.indexOf(b64[i+1])>>4,arr.push(255&tmp)):1===placeHolders&&(tmp=lookup.indexOf(b64[i])\u003C\u003C10|lookup.indexOf(b64[i+1])\u003C\u003C4|lookup.indexOf(b64[i+2])>>2,arr.push(255&tmp>>8),arr.push(255&tmp)),arr}function uint8ToBase64(uint8){function tripletToBase64(num){return lookup[63&num>>18]+lookup[63&num>>12]+lookup[63&num>>6]+lookup[63&num]}var i,temp,length,extraBytes=uint8.length%3,output=\"\";for(i=0,length=uint8.length-extraBytes;length>i;i+=3)temp=(uint8[i]\u003C\u003C16)+(uint8[i+1]\u003C\u003C8)+uint8[i+2],output+=tripletToBase64(temp);switch(extraBytes){case 1:temp=uint8[uint8.length-1],output+=lookup[temp>>2],output+=lookup[63&temp\u003C\u003C4],output+=\"==\";break;case 2:temp=(uint8[uint8.length-2]\u003C\u003C8)+uint8[uint8.length-1],output+=lookup[temp>>10],output+=lookup[63&temp>>4],output+=lookup[63&temp\u003C\u003C2],output+=\"=\"}return output}var lookup=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";module.exports.toByteArray=b64ToByteArray,module.exports.fromByteArray=uint8ToBase64})()},{}]},{},[]),module.exports=require(\"buffer-browserify\")},{}],67:[function(require,module){(function(Buffer){function clone(parent,circular){function _clone(parent,context,child,cIndex){var i;if(\"object\"==typeof parent){if(null==parent)return parent;for(i in circularParent)if(circularParent[i]===parent)return circularReplace.push({resolveTo:i,child:child,i:cIndex}),null;if(circularParent[context]=parent,util.isArray(parent)){child=[];for(i in parent)child[i]=_clone(parent[i],context+\"[\"+i+\"]\",child,i)}else if(util.isDate(parent))child=new Date(parent.getTime());else if(util.isRegExp(parent))child=RegExp(parent.source);else if(useBuffer&&Buffer.isBuffer(parent))child=new Buffer(parent.length),parent.copy(child);else{child={},child.__proto__=parent.__proto__;for(i in parent)child[i]=_clone(parent[i],context+\"[\"+i+\"]\",child,i)}circularResolved[context]=child}else child=parent;return child}circular===void 0&&(circular=!0);var i,useBuffer=Buffer!==void 0;if(circular){var circularParent={},circularResolved={},circularReplace=[],cloned=_clone(parent,\"*\");for(i in circularReplace){var c=circularReplace[i];c&&c.child&&c.i in c.child&&(c.child[c.i]=circularResolved[c.resolveTo])}return cloned}var child;if(\"object\"==typeof parent){if(null==parent)return parent;if(\"Array\"===parent.constructor.name){child=[];for(i in parent)child[i]=clone(parent[i],circular)}else if(util.isDate(parent))child=new Date(parent.getTime());else if(util.isRegExp(parent))child=RegExp(parent.source);else{child={},child.__proto__=parent.__proto__;for(i in parent)child[i]=clone(parent[i],circular)}}else child=parent;return child}var util=require(\"util\");module.exports=clone,clone.clonePrototype=require(\"./clonePrototype.js\")})(require(\"__browserify_buffer\").Buffer)},{util:6,\"./clonePrototype.js\":78,__browserify_buffer:77}],71:[function(require,module,exports){(function(){function SlowBuffer(size){this.length=size}function toHex(n){return 16>n?\"0\"+n.toString(16):n.toString(16)}function utf8ToBytes(str){for(var byteArray=[],i=0;str.length>i;i++)if(127>=str.charCodeAt(i))byteArray.push(str.charCodeAt(i));else for(var h=encodeURIComponent(str.charAt(i)).substr(1).split(\"%\"),j=0;h.length>j;j++)byteArray.push(parseInt(h[j],16));return byteArray}function asciiToBytes(str){for(var byteArray=[],i=0;str.length>i;i++)byteArray.push(255&str.charCodeAt(i));return byteArray}function base64ToBytes(str){return require(\"base64-js\").toByteArray(str)}function blitBuffer(src,dst,offset,length){for(var i=0;length>i&&!(i+offset>=dst.length||i>=src.length);)dst[i+offset]=src[i],i++;return i}function decodeUtf8Char(str){try{return decodeURIComponent(str)}catch(err){return String.fromCharCode(65533)}}function coerce(length){return length=~~Math.ceil(+length),0>length?0:length}function Buffer(subject,encoding,offset){if(!(this instanceof Buffer))return new Buffer(subject,encoding,offset);var type;if(\"number\"==typeof offset)this.length=coerce(encoding),this.parent=subject,this.offset=offset;else{switch(type=typeof subject){case\"number\":this.length=coerce(subject);break;case\"string\":this.length=Buffer.byteLength(subject,encoding);break;case\"object\":this.length=coerce(subject.length);break;default:throw Error(\"First argument needs to be a number, array or string.\")}if(this.length>Buffer.poolSize?(this.parent=new SlowBuffer(this.length),this.offset=0):((!pool||pool.length-pool.used\u003Cthis.length)&&allocPool(),this.parent=pool,this.offset=pool.used,pool.used+=this.length),isArrayIsh(subject))for(var i=0;this.length>i;i++)this.parent[i+this.offset]=subject instanceof Buffer?subject.readUInt8(i):subject[i];else\"string\"==type&&(this.length=this.write(subject,0,encoding))}}function isArrayIsh(subject){return Array.isArray(subject)||Buffer.isBuffer(subject)||subject&&\"object\"==typeof subject&&\"number\"==typeof subject.length}function allocPool(){pool=new SlowBuffer(Buffer.poolSize),pool.used=0}function readUInt16(buffer,offset,isBigEndian,noAssert){var val=0;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to read beyond buffer length\")),offset>=buffer.length?0:(isBigEndian?(val=buffer.parent[buffer.offset+offset]\u003C\u003C8,buffer.length>offset+1&&(val|=buffer.parent[buffer.offset+offset+1])):(val=buffer.parent[buffer.offset+offset],buffer.length>offset+1&&(val|=buffer.parent[buffer.offset+offset+1]\u003C\u003C8)),val)}function readUInt32(buffer,offset,isBigEndian,noAssert){var val=0;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),offset>=buffer.length?0:(isBigEndian?(buffer.length>offset+1&&(val=buffer.parent[buffer.offset+offset+1]\u003C\u003C16),buffer.length>offset+2&&(val|=buffer.parent[buffer.offset+offset+2]\u003C\u003C8),buffer.length>offset+3&&(val|=buffer.parent[buffer.offset+offset+3]),val+=buffer.parent[buffer.offset+offset]\u003C\u003C24>>>0):(buffer.length>offset+2&&(val=buffer.parent[buffer.offset+offset+2]\u003C\u003C16),buffer.length>offset+1&&(val|=buffer.parent[buffer.offset+offset+1]\u003C\u003C8),val|=buffer.parent[buffer.offset+offset],buffer.length>offset+3&&(val+=buffer.parent[buffer.offset+offset+3]\u003C\u003C24>>>0)),val)}function readInt16(buffer,offset,isBigEndian,noAssert){var neg,val;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to read beyond buffer length\")),val=readUInt16(buffer,offset,isBigEndian,noAssert),neg=32768&val,neg?-1*(65535-val+1):val}function readInt32(buffer,offset,isBigEndian,noAssert){var neg,val;return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),val=readUInt32(buffer,offset,isBigEndian,noAssert),neg=2147483648&val,neg?-1*(4294967295-val+1):val}function readFloat(buffer,offset,isBigEndian,noAssert){return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(buffer.length>offset+3,\"Trying to read beyond buffer length\")),require(\"./buffer_ieee754\").readIEEE754(buffer,offset,isBigEndian,23,4)}function readDouble(buffer,offset,isBigEndian,noAssert){return noAssert||(assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(buffer.length>offset+7,\"Trying to read beyond buffer length\")),require(\"./buffer_ieee754\").readIEEE754(buffer,offset,isBigEndian,52,8)}function verifuint(value,max){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(value>=0,\"specified a negative value for writing an unsigned value\"),assert.ok(max>=value,\"value is larger than maximum value for type\"),assert.ok(Math.floor(value)===value,\"value has a fractional component\")}function writeUInt16(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"trying to write beyond buffer length\"),verifuint(value,65535));for(var i=0;Math.min(buffer.length-offset,2)>i;i++)buffer.parent[buffer.offset+offset+i]=(value&255\u003C\u003C8*(isBigEndian?1-i:i))>>>8*(isBigEndian?1-i:i)}function writeUInt32(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"trying to write beyond buffer length\"),verifuint(value,4294967295));for(var i=0;Math.min(buffer.length-offset,4)>i;i++)buffer.parent[buffer.offset+offset+i]=255&value>>>8*(isBigEndian?3-i:i)}function verifsint(value,max,min){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(max>=value,\"value larger than maximum allowed value\"),assert.ok(value>=min,\"value smaller than minimum allowed value\"),assert.ok(Math.floor(value)===value,\"value has a fractional component\")}function verifIEEE754(value,max,min){assert.ok(\"number\"==typeof value,\"cannot write a non-number as a number\"),assert.ok(max>=value,\"value larger than maximum allowed value\"),assert.ok(value>=min,\"value smaller than minimum allowed value\")}function writeInt16(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+1,\"Trying to write beyond buffer length\"),verifsint(value,32767,-32768)),value>=0?writeUInt16(buffer,value,offset,isBigEndian,noAssert):writeUInt16(buffer,65535+value+1,offset,isBigEndian,noAssert)}function writeInt32(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to write beyond buffer length\"),verifsint(value,2147483647,-2147483648)),value>=0?writeUInt32(buffer,value,offset,isBigEndian,noAssert):writeUInt32(buffer,4294967295+value+1,offset,isBigEndian,noAssert)}function writeFloat(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+3,\"Trying to write beyond buffer length\"),verifIEEE754(value,3.4028234663852886e38,-3.4028234663852886e38)),require(\"./buffer_ieee754\").writeIEEE754(buffer,value,offset,isBigEndian,23,4)}function writeDouble(buffer,value,offset,isBigEndian,noAssert){noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(\"boolean\"==typeof isBigEndian,\"missing or invalid endian\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset+7,\"Trying to write beyond buffer length\"),verifIEEE754(value,1.7976931348623157e308,-1.7976931348623157e308)),require(\"./buffer_ieee754\").writeIEEE754(buffer,value,offset,isBigEndian,52,8)}var assert=require(\"assert\");exports.INSPECT_MAX_BYTES=50,SlowBuffer.byteLength=function(str,encoding){switch(encoding||\"utf8\"){case\"hex\":return str.length/2;case\"utf8\":case\"utf-8\":return utf8ToBytes(str).length;case\"ascii\":case\"binary\":return str.length;case\"base64\":return base64ToBytes(str).length;default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.utf8Write=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(utf8ToBytes(string),this,offset,length)},SlowBuffer.prototype.asciiWrite=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(asciiToBytes(string),this,offset,length)},SlowBuffer.prototype.binaryWrite=SlowBuffer.prototype.asciiWrite,SlowBuffer.prototype.base64Write=function(string,offset,length){return SlowBuffer._charsWritten=blitBuffer(base64ToBytes(string),this,offset,length)},SlowBuffer.prototype.base64Slice=function(){var bytes=Array.prototype.slice.apply(this,arguments);return require(\"base64-js\").fromByteArray(bytes)},SlowBuffer.prototype.utf8Slice=function(){for(var bytes=Array.prototype.slice.apply(this,arguments),res=\"\",tmp=\"\",i=0;bytes.length>i;)127>=bytes[i]?(res+=decodeUtf8Char(tmp)+String.fromCharCode(bytes[i]),tmp=\"\"):tmp+=\"%\"+bytes[i].toString(16),i++;return res+decodeUtf8Char(tmp)},SlowBuffer.prototype.asciiSlice=function(){for(var bytes=Array.prototype.slice.apply(this,arguments),ret=\"\",i=0;bytes.length>i;i++)ret+=String.fromCharCode(bytes[i]);return ret},SlowBuffer.prototype.binarySlice=SlowBuffer.prototype.asciiSlice,SlowBuffer.prototype.inspect=function(){for(var out=[],len=this.length,i=0;len>i;i++)if(out[i]=toHex(this[i]),i==exports.INSPECT_MAX_BYTES){out[i+1]=\"...\";break}return\"\u003CSlowBuffer \"+out.join(\" \")+\">\"},SlowBuffer.prototype.hexSlice=function(start,end){var len=this.length;(!start||0>start)&&(start=0),(!end||0>end||end>len)&&(end=len);for(var out=\"\",i=start;end>i;i++)out+=toHex(this[i]);return out},SlowBuffer.prototype.toString=function(encoding,start,end){if(encoding=((encoding||\"utf8\")+\"\").toLowerCase(),start=+start||0,end===void 0&&(end=this.length),+end==start)return\"\";switch(encoding){case\"hex\":return this.hexSlice(start,end);case\"utf8\":case\"utf-8\":return this.utf8Slice(start,end);case\"ascii\":return this.asciiSlice(start,end);case\"binary\":return this.binarySlice(start,end);case\"base64\":return this.base64Slice(start,end);case\"ucs2\":case\"ucs-2\":return this.ucs2Slice(start,end);default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.hexWrite=function(string,offset,length){offset=+offset||0;var remaining=this.length-offset;length?(length=+length,length>remaining&&(length=remaining)):length=remaining;var strLen=string.length;if(strLen%2)throw Error(\"Invalid hex string\");length>strLen/2&&(length=strLen/2);for(var i=0;length>i;i++){var byte=parseInt(string.substr(2*i,2),16);if(isNaN(byte))throw Error(\"Invalid hex string\");this[offset+i]=byte}return SlowBuffer._charsWritten=2*i,i},SlowBuffer.prototype.write=function(string,offset,length,encoding){if(isFinite(offset))isFinite(length)||(encoding=length,length=void 0);else{var swap=encoding;encoding=offset,offset=length,length=swap}offset=+offset||0;var remaining=this.length-offset;switch(length?(length=+length,length>remaining&&(length=remaining)):length=remaining,encoding=((encoding||\"utf8\")+\"\").toLowerCase()){case\"hex\":return this.hexWrite(string,offset,length);case\"utf8\":case\"utf-8\":return this.utf8Write(string,offset,length);case\"ascii\":return this.asciiWrite(string,offset,length);case\"binary\":return this.binaryWrite(string,offset,length);case\"base64\":return this.base64Write(string,offset,length);case\"ucs2\":case\"ucs-2\":return this.ucs2Write(string,offset,length);default:throw Error(\"Unknown encoding\")}},SlowBuffer.prototype.slice=function(start,end){if(void 0===end&&(end=this.length),end>this.length)throw Error(\"oob\");if(start>end)throw Error(\"oob\");return new Buffer(this,end-start,+start)},SlowBuffer.prototype.copy=function(target,targetstart,sourcestart,sourceend){for(var temp=[],i=sourcestart;sourceend>i;i++)assert.ok(this[i]!==void 0,\"copying undefined buffer bytes!\"),temp.push(this[i]);for(var i=targetstart;targetstart+temp.length>i;i++)target[i]=temp[i-targetstart]},SlowBuffer.prototype.fill=function(value,start,end){if(end>this.length)throw Error(\"oob\");if(start>end)throw Error(\"oob\");for(var i=start;end>i;i++)this[i]=value},exports.SlowBuffer=SlowBuffer,exports.Buffer=Buffer,Buffer.poolSize=8192;var pool;Buffer.isBuffer=function(b){return b instanceof Buffer||b instanceof SlowBuffer},Buffer.concat=function(list,totalLength){if(!Array.isArray(list))throw Error(\"Usage: Buffer.concat(list, [totalLength])\\n list should be an Array.\");if(0===list.length)return new Buffer(0);if(1===list.length)return list[0];if(\"number\"!=typeof totalLength){totalLength=0;for(var i=0;list.length>i;i++){var buf=list[i];totalLength+=buf.length}}for(var buffer=new Buffer(totalLength),pos=0,i=0;list.length>i;i++){var buf=list[i];buf.copy(buffer,pos),pos+=buf.length}return buffer},Buffer.prototype.inspect=function(){for(var out=[],len=this.length,i=0;len>i;i++)if(out[i]=toHex(this.parent[i+this.offset]),i==exports.INSPECT_MAX_BYTES){out[i+1]=\"...\";break}return\"\u003CBuffer \"+out.join(\" \")+\">\"},Buffer.prototype.get=function(i){if(0>i||i>=this.length)throw Error(\"oob\");return this.parent[this.offset+i]},Buffer.prototype.set=function(i,v){if(0>i||i>=this.length)throw Error(\"oob\");return this.parent[this.offset+i]=v},Buffer.prototype.write=function(string,offset,length,encoding){if(isFinite(offset))isFinite(length)||(encoding=length,length=void 0);else{var swap=encoding;encoding=offset,offset=length,length=swap}offset=+offset||0;var remaining=this.length-offset;length?(length=+length,length>remaining&&(length=remaining)):length=remaining,encoding=((encoding||\"utf8\")+\"\").toLowerCase();var ret;switch(encoding){case\"hex\":ret=this.parent.hexWrite(string,this.offset+offset,length);break;case\"utf8\":case\"utf-8\":ret=this.parent.utf8Write(string,this.offset+offset,length);break;case\"ascii\":ret=this.parent.asciiWrite(string,this.offset+offset,length);break;case\"binary\":ret=this.parent.binaryWrite(string,this.offset+offset,length);break;case\"base64\":ret=this.parent.base64Write(string,this.offset+offset,length);break;case\"ucs2\":case\"ucs-2\":ret=this.parent.ucs2Write(string,this.offset+offset,length);break;default:throw Error(\"Unknown encoding\")}return Buffer._charsWritten=SlowBuffer._charsWritten,ret},Buffer.prototype.toString=function(encoding,start,end){switch(encoding=((encoding||\"utf8\")+\"\").toLowerCase(),start===void 0||0>start?start=0:start>this.length&&(start=this.length),end===void 0||end>this.length?end=this.length:0>end&&(end=0),start+=this.offset,end+=this.offset,encoding){case\"hex\":return this.parent.hexSlice(start,end);case\"utf8\":case\"utf-8\":return this.parent.utf8Slice(start,end);case\"ascii\":return this.parent.asciiSlice(start,end);case\"binary\":return this.parent.binarySlice(start,end);case\"base64\":return this.parent.base64Slice(start,end);case\"ucs2\":case\"ucs-2\":return this.parent.ucs2Slice(start,end);default:throw Error(\"Unknown encoding\")}},Buffer.byteLength=SlowBuffer.byteLength,Buffer.prototype.fill=function(value,start,end){if(value||(value=0),start||(start=0),end||(end=this.length),\"string\"==typeof value&&(value=value.charCodeAt(0)),\"number\"!=typeof value||isNaN(value))throw Error(\"value is not a number\");if(start>end)throw Error(\"end \u003C start\");if(end===start)return 0;if(0==this.length)return 0;if(0>start||start>=this.length)throw Error(\"start out of bounds\");\nif(0>end||end>this.length)throw Error(\"end out of bounds\");return this.parent.fill(value,start+this.offset,end+this.offset)},Buffer.prototype.copy=function(target,target_start,start,end){var source=this;if(start||(start=0),end||(end=this.length),target_start||(target_start=0),start>end)throw Error(\"sourceEnd \u003C sourceStart\");if(end===start)return 0;if(0==target.length||0==source.length)return 0;if(0>target_start||target_start>=target.length)throw Error(\"targetStart out of bounds\");if(0>start||start>=source.length)throw Error(\"sourceStart out of bounds\");if(0>end||end>source.length)throw Error(\"sourceEnd out of bounds\");return end>this.length&&(end=this.length),end-start>target.length-target_start&&(end=target.length-target_start+start),this.parent.copy(target.parent,target_start+target.offset,start+this.offset,end+this.offset)},Buffer.prototype.slice=function(start,end){if(void 0===end&&(end=this.length),end>this.length)throw Error(\"oob\");if(start>end)throw Error(\"oob\");return new Buffer(this.parent,end-start,+start+this.offset)},Buffer.prototype.utf8Slice=function(start,end){return this.toString(\"utf8\",start,end)},Buffer.prototype.binarySlice=function(start,end){return this.toString(\"binary\",start,end)},Buffer.prototype.asciiSlice=function(start,end){return this.toString(\"ascii\",start,end)},Buffer.prototype.utf8Write=function(string,offset){return this.write(string,offset,\"utf8\")},Buffer.prototype.binaryWrite=function(string,offset){return this.write(string,offset,\"binary\")},Buffer.prototype.asciiWrite=function(string,offset){return this.write(string,offset,\"ascii\")},Buffer.prototype.readUInt8=function(offset,noAssert){var buffer=this;return noAssert||(assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to read beyond buffer length\")),offset>=buffer.length?void 0:buffer.parent[buffer.offset+offset]},Buffer.prototype.readUInt16LE=function(offset,noAssert){return readUInt16(this,offset,!1,noAssert)},Buffer.prototype.readUInt16BE=function(offset,noAssert){return readUInt16(this,offset,!0,noAssert)},Buffer.prototype.readUInt32LE=function(offset,noAssert){return readUInt32(this,offset,!1,noAssert)},Buffer.prototype.readUInt32BE=function(offset,noAssert){return readUInt32(this,offset,!0,noAssert)},Buffer.prototype.readInt8=function(offset,noAssert){var neg,buffer=this;return noAssert||(assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to read beyond buffer length\")),offset>=buffer.length?void 0:(neg=128&buffer.parent[buffer.offset+offset],neg?-1*(255-buffer.parent[buffer.offset+offset]+1):buffer.parent[buffer.offset+offset])},Buffer.prototype.readInt16LE=function(offset,noAssert){return readInt16(this,offset,!1,noAssert)},Buffer.prototype.readInt16BE=function(offset,noAssert){return readInt16(this,offset,!0,noAssert)},Buffer.prototype.readInt32LE=function(offset,noAssert){return readInt32(this,offset,!1,noAssert)},Buffer.prototype.readInt32BE=function(offset,noAssert){return readInt32(this,offset,!0,noAssert)},Buffer.prototype.readFloatLE=function(offset,noAssert){return readFloat(this,offset,!1,noAssert)},Buffer.prototype.readFloatBE=function(offset,noAssert){return readFloat(this,offset,!0,noAssert)},Buffer.prototype.readDoubleLE=function(offset,noAssert){return readDouble(this,offset,!1,noAssert)},Buffer.prototype.readDoubleBE=function(offset,noAssert){return readDouble(this,offset,!0,noAssert)},Buffer.prototype.writeUInt8=function(value,offset,noAssert){var buffer=this;noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"trying to write beyond buffer length\"),verifuint(value,255)),buffer.length>offset&&(buffer.parent[buffer.offset+offset]=value)},Buffer.prototype.writeUInt16LE=function(value,offset,noAssert){writeUInt16(this,value,offset,!1,noAssert)},Buffer.prototype.writeUInt16BE=function(value,offset,noAssert){writeUInt16(this,value,offset,!0,noAssert)},Buffer.prototype.writeUInt32LE=function(value,offset,noAssert){writeUInt32(this,value,offset,!1,noAssert)},Buffer.prototype.writeUInt32BE=function(value,offset,noAssert){writeUInt32(this,value,offset,!0,noAssert)},Buffer.prototype.writeInt8=function(value,offset,noAssert){var buffer=this;noAssert||(assert.ok(void 0!==value&&null!==value,\"missing value\"),assert.ok(void 0!==offset&&null!==offset,\"missing offset\"),assert.ok(buffer.length>offset,\"Trying to write beyond buffer length\"),verifsint(value,127,-128)),value>=0?buffer.writeUInt8(value,offset,noAssert):buffer.writeUInt8(255+value+1,offset,noAssert)},Buffer.prototype.writeInt16LE=function(value,offset,noAssert){writeInt16(this,value,offset,!1,noAssert)},Buffer.prototype.writeInt16BE=function(value,offset,noAssert){writeInt16(this,value,offset,!0,noAssert)},Buffer.prototype.writeInt32LE=function(value,offset,noAssert){writeInt32(this,value,offset,!1,noAssert)},Buffer.prototype.writeInt32BE=function(value,offset,noAssert){writeInt32(this,value,offset,!0,noAssert)},Buffer.prototype.writeFloatLE=function(value,offset,noAssert){writeFloat(this,value,offset,!1,noAssert)},Buffer.prototype.writeFloatBE=function(value,offset,noAssert){writeFloat(this,value,offset,!0,noAssert)},Buffer.prototype.writeDoubleLE=function(value,offset,noAssert){writeDouble(this,value,offset,!1,noAssert)},Buffer.prototype.writeDoubleBE=function(value,offset,noAssert){writeDouble(this,value,offset,!0,noAssert)},SlowBuffer.prototype.readUInt8=Buffer.prototype.readUInt8,SlowBuffer.prototype.readUInt16LE=Buffer.prototype.readUInt16LE,SlowBuffer.prototype.readUInt16BE=Buffer.prototype.readUInt16BE,SlowBuffer.prototype.readUInt32LE=Buffer.prototype.readUInt32LE,SlowBuffer.prototype.readUInt32BE=Buffer.prototype.readUInt32BE,SlowBuffer.prototype.readInt8=Buffer.prototype.readInt8,SlowBuffer.prototype.readInt16LE=Buffer.prototype.readInt16LE,SlowBuffer.prototype.readInt16BE=Buffer.prototype.readInt16BE,SlowBuffer.prototype.readInt32LE=Buffer.prototype.readInt32LE,SlowBuffer.prototype.readInt32BE=Buffer.prototype.readInt32BE,SlowBuffer.prototype.readFloatLE=Buffer.prototype.readFloatLE,SlowBuffer.prototype.readFloatBE=Buffer.prototype.readFloatBE,SlowBuffer.prototype.readDoubleLE=Buffer.prototype.readDoubleLE,SlowBuffer.prototype.readDoubleBE=Buffer.prototype.readDoubleBE,SlowBuffer.prototype.writeUInt8=Buffer.prototype.writeUInt8,SlowBuffer.prototype.writeUInt16LE=Buffer.prototype.writeUInt16LE,SlowBuffer.prototype.writeUInt16BE=Buffer.prototype.writeUInt16BE,SlowBuffer.prototype.writeUInt32LE=Buffer.prototype.writeUInt32LE,SlowBuffer.prototype.writeUInt32BE=Buffer.prototype.writeUInt32BE,SlowBuffer.prototype.writeInt8=Buffer.prototype.writeInt8,SlowBuffer.prototype.writeInt16LE=Buffer.prototype.writeInt16LE,SlowBuffer.prototype.writeInt16BE=Buffer.prototype.writeInt16BE,SlowBuffer.prototype.writeInt32LE=Buffer.prototype.writeInt32LE,SlowBuffer.prototype.writeInt32BE=Buffer.prototype.writeInt32BE,SlowBuffer.prototype.writeFloatLE=Buffer.prototype.writeFloatLE,SlowBuffer.prototype.writeFloatBE=Buffer.prototype.writeFloatBE,SlowBuffer.prototype.writeDoubleLE=Buffer.prototype.writeDoubleLE,SlowBuffer.prototype.writeDoubleBE=Buffer.prototype.writeDoubleBE})()},{assert:73,\"./buffer_ieee754\":75,\"base64-js\":79}],72:[function(require,module){\"use strict\";function newlinesIn(src){if(!src)return 0;var newlines=src.match(/\\n/g);return newlines?newlines.length:0}var difflet=require(\"difflet\"),prettydiff=difflet({comment:!0,indent:2}),compactdiff=difflet({comment:!0});module.exports=function(before,after,opts){opts=opts||{};var joinLinesAt=opts.joinLinesAt||20,maxLineLength=opts.maxLineLength||380,result=prettydiff.compare(before,after);return newlinesIn(result)>=joinLinesAt&&(result=compactdiff.compare(before,after)),result.split(\"\\n\").map(function(line){return line.length>=maxLineLength?line.slice(0,maxLineLength)+\"....\":line}).join(\"\\n\").replace(/\\/\\/ != undefined/g,\"\")}},{difflet:80}],78:[function(require,module){function clonePrototype(parent){if(null===parent)return null;var ctor=function(){};return ctor.prototype=parent,new ctor}module.exports=clonePrototype},{}],79:[function(require,module){(function(){\"use strict\";function b64ToByteArray(b64){var i,j,l,tmp,placeHolders,arr;if(b64.length%4>0)throw\"Invalid string. Length must be a multiple of 4\";for(placeHolders=b64.indexOf(\"=\"),placeHolders=placeHolders>0?b64.length-placeHolders:0,arr=[],l=placeHolders>0?b64.length-4:b64.length,i=0,j=0;l>i;i+=4,j+=3)tmp=lookup.indexOf(b64[i])\u003C\u003C18|lookup.indexOf(b64[i+1])\u003C\u003C12|lookup.indexOf(b64[i+2])\u003C\u003C6|lookup.indexOf(b64[i+3]),arr.push((16711680&tmp)>>16),arr.push((65280&tmp)>>8),arr.push(255&tmp);return 2===placeHolders?(tmp=lookup.indexOf(b64[i])\u003C\u003C2|lookup.indexOf(b64[i+1])>>4,arr.push(255&tmp)):1===placeHolders&&(tmp=lookup.indexOf(b64[i])\u003C\u003C10|lookup.indexOf(b64[i+1])\u003C\u003C4|lookup.indexOf(b64[i+2])>>2,arr.push(255&tmp>>8),arr.push(255&tmp)),arr}function uint8ToBase64(uint8){function tripletToBase64(num){return lookup[63&num>>18]+lookup[63&num>>12]+lookup[63&num>>6]+lookup[63&num]}var i,temp,length,extraBytes=uint8.length%3,output=\"\";for(i=0,length=uint8.length-extraBytes;length>i;i+=3)temp=(uint8[i]\u003C\u003C16)+(uint8[i+1]\u003C\u003C8)+uint8[i+2],output+=tripletToBase64(temp);switch(extraBytes){case 1:temp=uint8[uint8.length-1],output+=lookup[temp>>2],output+=lookup[63&temp\u003C\u003C4],output+=\"==\";break;case 2:temp=(uint8[uint8.length-2]\u003C\u003C8)+uint8[uint8.length-1],output+=lookup[temp>>10],output+=lookup[63&temp>>4],output+=lookup[63&temp\u003C\u003C2],output+=\"=\"}return output}var lookup=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";module.exports.toByteArray=b64ToByteArray,module.exports.fromByteArray=uint8ToBase64})()},{}],62:[function(require,module){function trimEmptyLines(lines){for(var line=lines.pop();!line||!line.length;)line=lines.pop();line&&lines.push(line)}function addLinenos(highlightedCode,firstline){function getDigits(n){return 10>n?1:100>n?2:1e3>n?3:1e4>n?4:5}function pad(n,totalDigits){var padDigits=totalDigits-getDigits(n);switch(padDigits){case 0:return\"\"+n;case 1:return\" \"+n;case 2:return\" \"+n;case 3:return\" \"+n;case 4:return\" \"+n;case 5:return\" \"+n}}var highlightedLines=highlightedCode.split(\"\\n\");trimEmptyLines(highlightedLines);var totalDigits,lineno,linesLen=highlightedLines.length,lines=[];totalDigits=getDigits(linesLen+firstline-1);for(var i=0;linesLen>i;i++)lineno=[colorSurround[0],pad(i+firstline,totalDigits),\": \",colorSurround[1]].join(\"\"),lines.push(lineno+highlightedLines[i]);return lines.join(\"\\n\")}var redeyed=require(\"redeyed\"),theme=require(\"../themes/default\"),colors=require(\"../colors\"),colorSurround=colors.brightBlack.split(\":\");module.exports=function(code,opts){opts=opts||{};try{var result=redeyed(code,opts.theme||theme),firstline=opts.firstline&&!isNaN(opts.firstline)?opts.firstline:1;return opts.linenos?addLinenos(result.code,firstline):result.code}catch(e){throw e.message=\"Unable to perform highlight. The code contained syntax errors: \"+e.message,e}}},{\"../themes/default\":81,\"../colors\":76,redeyed:82}],81:[function(require,module){var colors=require(\"../colors\");module.exports={Boolean:{\"true\":void 0,\"false\":void 0,_default:colors.brightRed},Identifier:{undefined:colors.brightBlack,self:colors.brightRed,console:colors.blue,log:colors.blue,warn:colors.red,error:colors.brightRed,_default:colors.white},Null:{_default:colors.brightBlack},Numeric:{_default:colors.blue},String:{_default:colors.brightGreen},Keyword:{\"break\":void 0,\"case\":void 0,\"catch\":colors.cyan,\"continue\":void 0,\"debugger\":void 0,\"default\":void 0,\"delete\":colors.red,\"do\":void 0,\"else\":void 0,\"finally\":colors.cyan,\"for\":void 0,\"function\":void 0,\"if\":void 0,\"in\":void 0,\"instanceof\":void 0,\"new\":colors.red,\"return\":colors.red,\"switch\":void 0,\"this\":colors.brightRed,\"throw\":void 0,\"try\":colors.cyan,\"typeof\":void 0,\"var\":colors.green,\"void\":void 0,\"while\":void 0,\"with\":void 0,_default:colors.brightBlue},Punctuator:{\";\":colors.brightBlack,\".\":colors.green,\",\":colors.green,\"{\":colors.yellow,\"}\":colors.yellow,\"(\":colors.brightBlack,\")\":colors.brightBlack,\"[\":colors.yellow,\"]\":colors.yellow,\"\u003C\":void 0,\">\":void 0,\"+\":void 0,\"-\":void 0,\"*\":void 0,\"%\":void 0,\"&\":void 0,\"|\":void 0,\"^\":void 0,\"!\":void 0,\"~\":void 0,\"?\":void 0,\":\":void 0,\"=\":void 0,\"\u003C=\":void 0,\">=\":void 0,\"==\":void 0,\"!=\":void 0,\"++\":void 0,\"--\":void 0,\"\u003C\u003C\":void 0,\">>\":void 0,\"&&\":void 0,\"||\":void 0,\"+=\":void 0,\"-=\":void 0,\"*=\":void 0,\"%=\":void 0,\"&=\":void 0,\"|=\":void 0,\"^=\":void 0,\"/=\":void 0,\"===\":void 0,\"!==\":void 0,\">>>\":void 0,\"\u003C\u003C=\":void 0,\">>=\":void 0,\">>>=\":void 0,_default:colors.brightYellow},Line:{_default:colors.brightBlack},Block:{_default:colors.brightBlack},_default:void 0}},{\"../colors\":76}],83:[function(require,module){function Traverse(obj){this.value=obj}function walk(root,cb,immutable){var path=[],parents=[],alive=!0;return function walker(node_){function updateState(){if(\"object\"==typeof state.node&&null!==state.node){state.keys&&state.node_===state.node||(state.keys=objectKeys(state.node)),state.isLeaf=0==state.keys.length;for(var i=0;parents.length>i;i++)if(parents[i].node_===node_){state.circular=parents[i];break}}else state.isLeaf=!0,state.keys=null;state.notLeaf=!state.isLeaf,state.notRoot=!state.isRoot}var node=immutable?copy(node_):node_,modifiers={},keepGoing=!0,state={node:node,node_:node_,path:[].concat(path),parent:parents[parents.length-1],parents:parents,key:path.slice(-1)[0],isRoot:0===path.length,level:path.length,circular:null,update:function(x,stopHere){state.isRoot||(state.parent.node[state.key]=x),state.node=x,stopHere&&(keepGoing=!1)},\"delete\":function(stopHere){delete state.parent.node[state.key],stopHere&&(keepGoing=!1)},remove:function(stopHere){isArray(state.parent.node)?state.parent.node.splice(state.key,1):delete state.parent.node[state.key],stopHere&&(keepGoing=!1)},keys:null,before:function(f){modifiers.before=f},after:function(f){modifiers.after=f},pre:function(f){modifiers.pre=f},post:function(f){modifiers.post=f},stop:function(){alive=!1},block:function(){keepGoing=!1}};if(!alive)return state;updateState();var ret=cb.call(state,state.node);return void 0!==ret&&state.update&&state.update(ret),modifiers.before&&modifiers.before.call(state,state.node),keepGoing?(\"object\"!=typeof state.node||null===state.node||state.circular||(parents.push(state),updateState(),forEach(state.keys,function(key,i){path.push(key),modifiers.pre&&modifiers.pre.call(state,state.node[key],key);var child=walker(state.node[key]);immutable&&Object.hasOwnProperty.call(state.node,key)&&(state.node[key]=child.node),child.isLast=i==state.keys.length-1,child.isFirst=0==i,modifiers.post&&modifiers.post.call(state,child),path.pop()}),parents.pop()),modifiers.after&&modifiers.after.call(state,state.node),state):state}(root).node}function copy(src){if(\"object\"==typeof src&&null!==src){var dst;if(isArray(src))dst=[];else if(isDate(src))dst=new Date(src);else if(isRegExp(src))dst=RegExp(src);else if(isError(src))dst={message:src.message};else if(isBoolean(src))dst=new Boolean(src);else if(isNumber(src))dst=new Number(src);else if(isString(src))dst=new String(src);else if(Object.create&&Object.getPrototypeOf)dst=Object.create(Object.getPrototypeOf(src));else if(src.constructor===Object)dst={};else{var proto=src.constructor&&src.constructor.prototype||src.__proto__||{},T=function(){};T.prototype=proto,dst=new T}return forEach(objectKeys(src),function(key){dst[key]=src[key]}),dst}return src}function toS(obj){return Object.prototype.toString.call(obj)}function isDate(obj){return\"[object Date]\"===toS(obj)}function isRegExp(obj){return\"[object RegExp]\"===toS(obj)}function isError(obj){return\"[object Error]\"===toS(obj)}function isBoolean(obj){return\"[object Boolean]\"===toS(obj)}function isNumber(obj){return\"[object Number]\"===toS(obj)}function isString(obj){return\"[object String]\"===toS(obj)}var traverse=module.exports=function(obj){return new Traverse(obj)};Traverse.prototype.get=function(ps){for(var node=this.value,i=0;ps.length>i;i++){var key=ps[i];if(!Object.hasOwnProperty.call(node,key)){node=void 0;break}node=node[key]}return node},Traverse.prototype.has=function(ps){for(var node=this.value,i=0;ps.length>i;i++){var key=ps[i];if(!Object.hasOwnProperty.call(node,key))return!1;node=node[key]}return!0},Traverse.prototype.set=function(ps,value){for(var node=this.value,i=0;ps.length-1>i;i++){var key=ps[i];Object.hasOwnProperty.call(node,key)||(node[key]={}),node=node[key]}return node[ps[i]]=value,value},Traverse.prototype.map=function(cb){return walk(this.value,cb,!0)},Traverse.prototype.forEach=function(cb){return this.value=walk(this.value,cb,!1),this.value},Traverse.prototype.reduce=function(cb,init){var skip=1===arguments.length,acc=skip?this.value:init;return this.forEach(function(x){this.isRoot&&skip||(acc=cb.call(this,acc,x))}),acc},Traverse.prototype.paths=function(){var acc=[];return this.forEach(function(){acc.push(this.path)}),acc},Traverse.prototype.nodes=function(){var acc=[];return this.forEach(function(){acc.push(this.node)}),acc},Traverse.prototype.clone=function(){var parents=[],nodes=[];return function clone(src){for(var i=0;parents.length>i;i++)if(parents[i]===src)return nodes[i];if(\"object\"==typeof src&&null!==src){var dst=copy(src);return parents.push(src),nodes.push(dst),forEach(objectKeys(src),function(key){dst[key]=clone(src[key])}),parents.pop(),nodes.pop(),dst}return src}(this.value)};var objectKeys=Object.keys||function(obj){var res=[];for(var key in obj)res.push(key);return res},isArray=Array.isArray||function isArray(xs){return\"[object Array]\"===Object.prototype.toString.call(xs)},forEach=function(xs,fn){if(xs.forEach)return xs.forEach(fn);for(var i=0;xs.length>i;i++)fn(xs[i],i,xs)};forEach(objectKeys(Traverse.prototype),function(key){traverse[key]=function(obj){var args=[].slice.call(arguments,1),t=new Traverse(obj);return t[key].apply(t,args)}})},{}],80:[function(require,module){(function(process){function difflet(opts,prev,next){function set(type){0===levels&&opts.start(type,stream),levels++}function unset(type){0===--levels&&opts.stop(type,stream)}function stringifier(insertable,node,opts){var indent=opts.indent;if(insertable)var prevNode=traverse.get(prev,this.path||[]);var indentx,inserted=insertable&&void 0===prevNode;try{indentx=indent?Array(((this.path||[]).length+1)*indent+1).join(\" \"):\"\"}catch(e){indentx=\"\"}if(commaFirst&&(indentx=indentx.slice(indent)),Array.isArray(node)){var updated=(prevNode||traverse.has(prev,this.path))&&!Array.isArray(prevNode);updated&&set(\"updated\"),opts.comment&&!Array.isArray(prevNode)&&(indent=0),this.before(function(){inserted&&set(\"inserted\"),indent&&commaFirst?0===(this.path||[]).length||Array.isArray(this.parent.node)?write(\"[ \"):write(\"\\n\"+indentx+\"[ \"):indent?write(\"[\\n\"+indentx):write(\"[\")}),this.post(function(child){child.isLast||indent&&commaFirst||write(\",\");var prev=prevNode&&prevNode[child.key];indent&&opts.comment&&child.node!==prev&&(\"object\"!=typeof child.node||\"object\"!=typeof prev)&&(set(\"comment\"),write(\" // != \"),traverse(prev).forEach(function(x){plainStringify.call(this,x,{indent:0})}),unset(\"comment\")),child.isLast||(indent&&commaFirst?write(\"\\n\"+indentx+\", \"):indent&&write(\"\\n\"+indentx))}),this.after(function(){indent&&commaFirst?write(\"\\n\"+indentx):indent&&write(\"\\n\"+indentx.slice(indent)),write(\"]\"),updated&&unset(\"updated\"),inserted&&unset(\"inserted\")})}else if(isRegExp(node))this.block(),inserted?(set(\"inserted\"),write(\"\"+node),unset(\"inserted\")):insertable&&prevNode!==node?(set(\"updated\"),write(\"\"+node),unset(\"updated\")):write(\"\"+node);else if(\"object\"==typeof node&&node&&\"function\"==typeof node.inspect)this.block(),inserted?(set(\"inserted\"),write(node.inspect()),unset(\"inserted\")):prevNode&&\"function\"==typeof prevNode.inspect&&prevNode.inspect()===node.inspect()?write(node.inspect()):(set(\"updated\"),write(node.inspect()),unset(\"updated\"));else if(\"object\"==typeof node&&null!==node){var insertedKey=!1,deleted=insertable&&\"object\"==typeof prevNode&&prevNode?Object.keys(prevNode).filter(function(key){return!Object.hasOwnProperty.call(node,key)}):[];this.before(function(){inserted&&set(\"inserted\"),write(indent&&commaFirst&&!this.isRoot?\"\\n\"+indentx+\"{ \":\"{\")}),this.pre(function(x,key){if(insertable){var obj=traverse.get(prev,this.path.concat(key));void 0===obj&&(insertedKey=!0,set(\"inserted\"))}indent&&!commaFirst&&write(\"\\n\"+indentx),plainStringify(key),write(indent?\" : \":\":\")}),this.post(function(child){child.isLast||indent&&commaFirst||write(\",\"),child.isLast&&deleted.length?(insertedKey&&unset(\"inserted\"),insertedKey=!1):insertedKey&&(unset(\"inserted\"),insertedKey=!1);var prev=prevNode&&prevNode[child.key];indent&&opts.comment&&child.node!==prev&&(\"object\"!=typeof child.node||\"object\"!=typeof prev)&&(set(\"comment\"),write(\" // != \"),traverse(prev).forEach(function(x){plainStringify.call(this,x,{indent:0})}),unset(\"comment\")),child.isLast&&deleted.length?(insertedKey&&unset(\"inserted\"),insertedKey=!1,indent&&commaFirst?write(\"\\n\"+indentx+\", \"):opts.comment&&indent?write(\"\\n\"+indentx):indent?write(\",\\n\"+indentx):write(\",\")):child.isLast||indent&&commaFirst&&write(\"\\n\"+indentx+\", \")}),this.after(function(){inserted&&unset(\"inserted\"),deleted.length&&(indent&&!commaFirst&&0===Object.keys(node).length&&write(\"\\n\"+indentx),set(\"deleted\"),deleted.forEach(function(key,ix){indent&&opts.comment&&(unset(\"deleted\"),set(\"comment\"),write(\"// \"),unset(\"comment\"),set(\"deleted\")),plainStringify(key),write(indent?\" : \":\":\"),traverse(prevNode[key]).forEach(function(x){plainStringify.call(this,x,{indent:0})});var last=ix===deleted.length-1;insertable&&!last&&(indent&&commaFirst?write(\"\\n\"+indentx+\", \"):indent?write(\",\\n\"+indentx):write(\",\"))}),unset(\"deleted\")),commaFirst&&indent?write(indentx.slice(indent)+\" }\"):indent?write(\"\\n\"+indentx.slice(indent)+\"}\"):write(\"}\")})}else{var changed=!1;inserted?set(\"inserted\"):insertable&&!deepEqual(prevNode,node)&&(changed=!0,set(\"updated\")),\"string\"==typeof node?write('\"'+(\"\"+node).replace(/\"/g,'\\\\\"')+'\"'):isRegExp(node)?write(\"\"+node):\"function\"==typeof node?write(node.name?\"[Function: \"+node.name+\"]\":\"[Function]\"):void 0===node?write(\"undefined\"):null===node?write(\"null\"):write(\"\"+node),inserted?unset(\"inserted\"):changed&&unset(\"updated\")}}var stream=opts.stream||new Stream;if(opts.stream||(stream.readable=!0,stream.writable=!0,stream.write=function(buf){this.emit(\"data\",buf)},stream.end=function(){this.emit(\"end\")}),opts||(opts={}),void 0===opts.start&&void 0===opts.stop){var c=charm(stream);opts.start=function(type){c.foreground({inserted:\"green\",updated:\"blue\",deleted:\"red\",comment:\"cyan\"}[type]),c.display(\"bright\")},opts.stop=function(){c.display(\"reset\")}}var write=function(buf){opts.write?opts.write(buf,stream):stream.write(buf)},commaFirst=\"first\"===opts.comma,stringify=function(node,params){return stringifier.call(this,!0,node,params||opts)},plainStringify=function(node,params){return stringifier.call(this,!1,node,params||opts)},levels=0;return opts.stream?traverse(next).forEach(stringify):process.nextTick(function(){traverse(next).forEach(stringify),stream.emit(\"end\")}),stream}function isRegExp(node){return node instanceof RegExp||node&&\"function\"==typeof node.test&&\"function\"==typeof node.exec&&\"function\"==typeof node.compile&&node.constructor&&\"RegExp\"===node.constructor.name}var traverse=require(\"traverse\"),Stream=require(\"stream\").Stream,charm=require(\"charm\"),deepEqual=require(\"deep-is\"),exports=module.exports=function(opts_){var fn=difflet.bind(null,opts_);return fn.compare=function(prev,next){var opts=Object.keys(opts_||{}).reduce(function(acc,key){return acc[key]=opts_[key],acc},{}),s=opts.stream=new Stream,data=\"\";return s.write=function(buf){data+=buf},s.end=function(){},s.readable=!0,s.writable=!0,difflet(opts,prev,next),data},fn};exports.compare=function(prev,next){return exports({}).compare(prev,next)}})(require(\"__browserify_process\"))},{stream:58,traverse:83,charm:84,\"deep-is\":69,__browserify_process:16}],85:[function(require,module,exports){exports.isatty=function(){},exports.setRawMode=function(){}},{}],84:[function(require,module){(function(process){var tty=require(\"tty\"),encode=require(\"./lib/encode\"),EventEmitter=require(\"events\").EventEmitter,exports=module.exports=function(){function setInput(s){if(input)throw Error(\"multiple inputs specified\");input=s}function setOutput(s){if(output)throw Error(\"multiple outputs specified\");output=s}for(var input=null,output=null,i=0;arguments.length>i;i++){var arg=arguments[i];arg&&(arg.readable?setInput(arg):(arg.stdin||arg.input)&&setInput(arg.stdin||arg.input),arg.writable?setOutput(arg):(arg.stdout||arg.output)&&setOutput(arg.stdout||arg.output))}return new Charm(input,output)},Charm=exports.Charm=function(input,output){var self=this;self.input=input,self.output=output,self.pending=[],output||self.emit(\"error\",Error(\"output stream required\")),input&&\"number\"==typeof input.fd&&tty.isatty(input.fd)&&(process.stdin.setRawMode?process.stdin.setRawMode(!0):tty.setRawMode(!0),input.resume()),input&&input.on(\"data\",function(buf){if(self.pending.length){for(var codes=extractCodes(buf),matched=!1,i=0;codes.length>i;i++)for(var j=0;self.pending.length>j;j++){var cb=self.pending[j];if(cb(codes[i])){matched=!0,self.pending.splice(j,1);break}}if(matched)return}self.emit(\"data\",buf),1===buf.length&&(3===buf[0]&&self.emit(\"^C\"),4===buf[0]&&self.emit(\"^D\"))})};Charm.prototype=new EventEmitter,Charm.prototype.destroy=function(){this.input&&this.input.destroy()},Charm.prototype.write=function(msg){return this.output.write(msg),this},Charm.prototype.reset=function(){return this.write(encode(\"c\")),this},Charm.prototype.position=function(x,y){if(\"function\"==typeof x){var cb=x;this.pending.push(function(buf){if(27===buf[0]&&buf[1]===encode.ord(\"[\")&&buf[buf.length-1]===encode.ord(\"R\")){var pos=(\"\"+buf).slice(2,-1).split(\";\").map(Number);return cb(pos[1],pos[0]),!0}}),this.write(encode(\"[6n\"))}else this.write(encode(\"[\"+Math.floor(y)+\";\"+Math.floor(x)+\"f\"));return this},Charm.prototype.move=function(x,y){return 0>y?this.up(-y):y>0&&this.down(y),x>0?this.right(x):0>x&&this.left(-x),this},Charm.prototype.up=function(y){return void 0===y&&(y=1),this.write(encode(\"[\"+Math.floor(y)+\"A\")),this},Charm.prototype.down=function(y){return void 0===y&&(y=1),this.write(encode(\"[\"+Math.floor(y)+\"B\")),this},Charm.prototype.right=function(x){return void 0===x&&(x=1),this.write(encode(\"[\"+Math.floor(x)+\"C\")),this},Charm.prototype.left=function(x){return void 0===x&&(x=1),this.write(encode(\"[\"+Math.floor(x)+\"D\")),this},Charm.prototype.column=function(x){return this.write(encode(\"[\"+Math.floor(x)+\"G\")),this},Charm.prototype.push=function(withAttributes){return this.write(encode(withAttributes?\"7\":\"[s\")),this},Charm.prototype.pop=function(withAttributes){return this.write(encode(withAttributes?\"8\":\"[u\")),this},Charm.prototype.erase=function(s){return\"end\"===s||\"$\"===s?this.write(encode(\"[K\")):\"start\"===s||\"^\"===s?this.write(encode(\"[1K\")):\"line\"===s?this.write(encode(\"[2K\")):\"down\"===s?this.write(encode(\"[J\")):\"up\"===s?this.write(encode(\"[1J\")):\"screen\"===s?this.write(encode(\"[1J\")):this.emit(\"error\",Error(\"Unknown erase type: \"+s)),this},Charm.prototype.display=function(attr){var c={reset:0,bright:1,dim:2,underscore:4,blink:5,reverse:7,hidden:8}[attr];return void 0===c&&this.emit(\"error\",Error(\"Unknown attribute: \"+attr)),this.write(encode(\"[\"+c+\"m\")),this},Charm.prototype.foreground=function(color){if(\"number\"==typeof color)(0>color||color>=256)&&this.emit(\"error\",Error(\"Color out of range: \"+color)),this.write(encode(\"[38;5;\"+color+\"m\"));else{var c={black:30,red:31,green:32,yellow:33,blue:34,magenta:35,cyan:36,white:37}[color.toLowerCase()];c||this.emit(\"error\",Error(\"Unknown color: \"+color)),this.write(encode(\"[\"+c+\"m\"))}return this},Charm.prototype.background=function(color){if(\"number\"==typeof color)(0>color||color>=256)&&this.emit(\"error\",Error(\"Color out of range: \"+color)),this.write(encode(\"[48;5;\"+color+\"m\"));else{var c={black:40,red:41,green:42,yellow:43,blue:44,magenta:45,cyan:46,white:47}[color.toLowerCase()];c||this.emit(\"error\",Error(\"Unknown color: \"+color)),this.write(encode(\"[\"+c+\"m\"))}return this},Charm.prototype.cursor=function(visible){return this.write(encode(visible?\"[?25h\":\"[?25l\")),this};var extractCodes=exports.extractCodes=function(buf){for(var codes=[],start=-1,i=0;buf.length>i;i++)27===buf[i]?(start>=0&&codes.push(buf.slice(start,i)),start=i):start>=0&&i===buf.length-1&&codes.push(buf.slice(start));return codes}})(require(\"__browserify_process\"))},{tty:85,events:15,\"./lib/encode\":86,__browserify_process:16}],82:[function(require,module){(function(){(function(){\"use strict\";function bootstrap(esprima,exportFn){function isFunction(obj){return\"[object Function]\"===toString.call(obj)}function isString(obj){return\"[object String]\"===toString.call(obj)}function isObject(obj){return\"[object Object]\"===toString.call(obj)}function surroundWith(before,after){return function(s){return before+s+after}}function isNonCircular(key){return\"_parent\"!==key}function objectizeString(value){var vals=value.split(\":\");if(0===vals.length||vals.length>2)throw Error(\"illegal string config: \"+value+'\\nShould be of format \"before:after\"');return 1===vals.length||0===vals[1].length?0>vals.indexOf(\":\")?{_before:vals[0]}:{_after:vals[0]}:{_before:vals[0],_after:vals[1]}}function objectize(node){function resolve(value,key){if(!value._parent)return void 0;if(value._parent._default&&value._parent._default[key])return value._parent._default[key];var root=value._parent._parent;return root?root._default?root._default[key]:void 0:void 0}function process(key){var value=node[key];if(value&&!isFunction(value)){if(isString(value)&&(node[key]=value=objectizeString(value)),value._parent=node,isObject(value))return value._before||value._after?(value._before=value._before||resolve(value,\"_before\"),value._after=value._after||resolve(value,\"_after\"),void 0):objectize(value);throw Error(\"nodes need to be either {String}, {Object} or {Function}.\"+value+\" is neither.\")}}node._default&&process(\"_default\"),Object.keys(node).filter(function(key){return isNonCircular(key)&&node.hasOwnProperty(key)&&\"_before\"!==key&&\"_after\"!==key&&\"_default\"!==key}).forEach(process)}function functionize(node){Object.keys(node).filter(function(key){return isNonCircular(key)&&node.hasOwnProperty(key)}).forEach(function(key){var value=node[key];if(!isFunction(value)&&isObject(value)){if(!value._before&&!value._after)return functionize(value);var before=value._before||\"\",after=value._after||\"\";return node[key]=surroundWith(before,after)}})}function normalize(root){objectize(root),functionize(root)}function mergeTokensAndComments(tokens,comments){function addToAllByRangeStart(t){all[t.range[0]]=t}var all={};return tokens.forEach(addToAllByRangeStart),comments.forEach(addToAllByRangeStart),Object.keys(all).map(function(k){return all[k]})}function redeyed(code,config,opts){function tokenIndex(tokens,tkn,start){var current,rangeStart=tkn.range[0];for(current=start;tokens.length>current;current++)if(tokens[current].range[0]===rangeStart)return current;throw Error(\"Token %s not found at or after index: %d\",tkn,start)}function process(surround){var result,currentIndex,nextIndex,splitEnd,skip=0;return result=surround(code.slice(start,end),info),isObject(result)?(splits.push(result.replacement),currentIndex=info.tokenIndex,nextIndex=tokenIndex(info.tokens,result.skipPastToken,currentIndex),skip=nextIndex-currentIndex,splitEnd=skip>0?tokens[nextIndex-1].range[1]:end):(splits.push(result),splitEnd=end),{skip:skip,splitEnd:splitEnd}}function addSplit(start,end,surround){var result,skip=0;if(!(start>=end))return surround?(result=process(surround),skip=result.skip,lastSplitEnd=result.splitEnd):(splits.push(code.slice(start,end)),lastSplitEnd=end),skip}opts=opts||{},code=code.replace(/^\\#\\!.*/,\"\");var transformedCode,all,info,ast=esprima.parse(code,{tokens:!0,comment:!0,range:!0,tolerant:!0}),tokens=ast.tokens,comments=ast.comments,lastSplitEnd=0,splits=[];\nnormalize(config),all=mergeTokensAndComments(tokens,comments);for(var tokenIdx=0;all.length>tokenIdx;tokenIdx++){var surround,start,end,token=all[tokenIdx],surroundForType=config[token.type];surroundForType&&(surround=surroundForType&&surroundForType.hasOwnProperty(token.value)&&surroundForType[token.value]&&isFunction(surroundForType[token.value])?surroundForType[token.value]:surroundForType._default,start=token.range[0],end=token.range[1],addSplit(lastSplitEnd,start),info={tokenIndex:tokenIdx,tokens:all,ast:ast,code:code},tokenIdx+=addSplit(start,end,surround,info))}return code.length>lastSplitEnd&&addSplit(lastSplitEnd,code.length),transformedCode=opts.nojoin?void 0:splits.join(\"\"),{ast:ast,tokens:tokens,comments:comments,splits:splits,code:transformedCode}}return exportFn?exportFn(redeyed):redeyed}var esprima,exportFn,toString=Object.prototype.toString;\"object\"==typeof module&&\"object\"==typeof module.exports&&\"function\"==typeof require?(esprima=require(\"esprima\"),exportFn=function(redeyed){module.exports=redeyed},bootstrap(esprima,exportFn)):\"function\"==typeof define&&define.amd?define([\"esprima\"],function(esprima){return bootstrap(esprima)}):\"object\"==typeof window&&(window.redeyed=bootstrap(window.esprima))})()})()},{esprima:70}],86:[function(require,module){(function(Buffer){var encode=module.exports=function(xs){function bytes(s){return\"string\"==typeof s?s.split(\"\").map(ord):Array.isArray(s)?s.reduce(function(acc,c){return acc.concat(bytes(c))},[]):void 0}return new Buffer([27].concat(bytes(xs)))},ord=encode.ord=function ord(c){return c.charCodeAt(0)}})(require(\"__browserify_buffer\").Buffer)},{__browserify_buffer:77}]},{},[1]);\n\n\u003C/script>","tags":"$:/tags/RawMarkup","title":"$:/webxr-notebook/scriptie-talkie-embed.js","modified":"20230427072656645"}, {"created":"20230426064319911","text":"\n\u003C!-- shader-doodle.js -->\n\u003Cscript>\n'use strict';(function(z,A){\"object\"===typeof exports&&\"undefined\"!==typeof module?A(exports):\"function\"===typeof define&&define.amd?define([\"exports\"],A):(z=z||self,A(z.ShaderDoodle={}))})(this,function(z){function A(a){function b(a){console.log(a);e.add(a.targetElement)}function d(b){e.has(b.targetElement)?e.delete(b.targetElement):(b=a.createBufferSource(),b.buffer=a.createBuffer(1,1,a.sampleRate),b.connect(a.destination),b.start(0),\"function\"===typeof a.resume&&a.resume().then(c),f())}function c(){v.forEach(a=>\n{a()})}function f(){p.forEach(a=>{a.removeEventListener(\"touchstart\",d);a.removeEventListener(\"touchmove\",b);a.removeEventListener(\"touchend\",d);a.removeEventListener(\"mouseup\",d)});p.clear();e.clear()}let e=new Set,p=new Set,v=[];return{onStart:function(b){\"running\"===a.state?(console.log(\"already\"),b()):v.push(b)},register:function(a){a.addEventListener(\"touchstart\",d);a.addEventListener(\"touchmove\",b);a.addEventListener(\"touchend\",d);a.addEventListener(\"mouseup\",d);p.add(a)},dispose:f}}function ca(){function a(a){d[0].value[0]=\na.alpha;d[0].value[1]=a.beta;d[0].value[2]=a.gamma}let b=!1,d=JSON.parse(JSON.stringify(L));return{get ustate(){return d},setup:function(){b||(b=!0,\"object\"===typeof DeviceOrientationEvent&&\"function\"===typeof DeviceOrientationEvent.requestPermission?DeviceOrientationEvent.requestPermission().then(b=>{\"granted\"===b&&window.addEventListener(\"deviceorientation\",a)}).catch(console.error):window.addEventListener(\"deviceorientation\",a))},dispose:function(){window.removeEventListener(\"deviceorientation\",\na)}}}function da(a){let b={},d=a.getExtension.bind(a);return{get:function(a){if(void 0!==b[a])return b[a];let c=d(a)||d(\"MOZ_\".concat(a))||d(\"WEBKIT_\".concat(a));null===c&&console.warn(\"\u003Cshader-doodle /> \".concat(a,\" extension not supported.\"));return b[a]=c}}}function C(){function a(a,b){if(a>n||b>h)a=Math.max(a,n),b=Math.max(b,h),a!==n&&(n=a,c.width=Math.floor(1*n)),b!==h&&(h=b,c.height=Math.floor(1*h))}function b(a){let b=l?(a-l)/1E3:0;l=a;k[0].value+=b;k[1].value=b;k[3].value++;a=new Date;k[2].value[0]=\na.getFullYear();k[2].value[1]=a.getMonth()+1;k[2].value[2]=a.getDate();k[2].value[3]=3600*a.getHours()+60*a.getMinutes()+a.getSeconds()+.001*a.getMilliseconds()}function d(f){if(m.size){b(f);var u=[...k,...e.ustate];m.forEach(b=>b.render(c,a,n,h,1,u));q=requestAnimationFrame(d)}else q=void 0}let c=document.createElementNS(\"http://www.w3.org/1999/xhtml\",\"canvas\"),f=c.getContext(\"webgl\")||c.getContext(\"experimental-webgl\"),e=ca(),p=new (window.AudioContext||window.webkitAudioContext),v=new A(p);p.onStart=\nv.onStart;f.blendFunc(f.SRC_ALPHA,f.ONE_MINUS_SRC_ALPHA);f.enable(f.BLEND);let n=0,h=0,q,l,m=new Set,k=JSON.parse(JSON.stringify(M)),w=da(f);w.get(\"OES_texture_float\");w.get(\"OES_texture_float_linear\");w.get(\"OES_texture_half_float\");w.get(\"OES_texture_half_float_linear\");f.clearColor(0,0,0,0);return Object.freeze({get gl(){return f},get wa(){return p},addSurface:function(a){v.register(a.dom);a.addClick(e.setup);m.add(a);q||(q=requestAnimationFrame(d))},removeSurface:function(a){m.delete(a)},addUniform:function(a,\nb,c){for(let d=0;d\u003Ck.length;d++)if(k[d].name===a){k[d].value=b;k[d].type=c;return}k.push({name:a,value:b,type:c,toyname:a})},setUniform:function(a,b){for(let c=0;c\u003Ck.length;c++)if(k[c].name===a){k[c].value=b;break}},dispose:function(){m.forEach(a=>a.dispose());m.clear();m=void 0;cancelAnimationFrame(q);e.dispose();v.dispose()}})}function ea(a,b){let d={},c=a.getProgramParameter(b,a.ACTIVE_ATTRIBUTES);for(let f=0;f\u003Cc;f++){let {name:c}=a.getActiveAttrib(b,f);d[c]=a.getAttribLocation(b,c)}return d}function N(a){function b(b){a.texParameteri(a.TEXTURE_2D,\na.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,b?a.NEAREST:a.LINEAR);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,b?a.NEAREST:a.LINEAR)}let d,c,f=a.createFramebuffer();a.bindFramebuffer(a.FRAMEBUFFER,f);let e=a.createTexture();if(!e)throw Error(\"createTexture returned null\");a.bindTexture(a.TEXTURE_2D,e);b(!0);a.framebufferTexture2D(a.FRAMEBUFFER,a.COLOR_ATTACHMENT0,a.TEXTURE_2D,e,0);return{get handle(){return f},\nget texture(){return e},updateTexture:b,bind:function(){a.bindFramebuffer(a.FRAMEBUFFER,f);a.viewport(0,0,d,c)},updateResolution:function(b,f){if(b!==d||f!==c)d=b,c=f,a.bindTexture(a.TEXTURE_2D,e),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,b,f,0,a.RGBA,a.FLOAT,null)},dispose:function(){a.deleteFramebuffer(f);a.deleteTexture(e)}}}function O(a,b,d){b=a.createShader(b);a.shaderSource(b,d);a.compileShader(b);if(!a.getShaderParameter(b,a.COMPILE_STATUS)){let c=a.getShaderInfoLog(b);a.deleteShader(b);console.warn(c,\n\"\\nin shader:\\n\",d)}return b}function H(a,b){if(a.length!==b.length)return!1;for(let d=0,c=a.length;d\u003Cc;d++)if(a[d]!==b[d])return!1;return!0}function I(a,b){for(let d=0,c=b.length;d\u003Cc;d++)a[d]=b[d]}function fa(a,b,d,c){a[0]!==c&&(d.uniform1f(b,c),a[0]=c)}function ha(a,b,d,c){H(a,c)||(d.uniform2fv(b,c),I(a,c))}function ia(a,b,d,c){H(a,c)||(d.uniform3fv(b,c),I(a,c))}function ja(a,b,d,c){H(a,c)||(d.uniform4fv(b,c),I(a,c))}function ka(a,b,d,c){a[0]!==c&&(d.uniform1i(b,c),a[0]=c)}function la(a){switch(a){case 5126:return fa;\ncase 35664:return ha;case 35665:return ia;case 35666:return ja;case 35678:case 36198:return ka}}function ma(a,b,d){let c=[],f=la(b.type);return{get location(){return d},get name(){return b.name},setValue:function(...b){f(c,d,a,...b)}}}function na(a,b){let d={},c=a.getProgramParameter(b,a.ACTIVE_UNIFORMS);for(let e=0;e\u003Cc;e++){var f=a.getActiveUniform(b,e);let c=a.getUniformLocation(b,f.name);f=ma(a,f,c);d[f.name]=f}return d}function oa(a,b){if(b){let b=a.match(P);a=a.replace(\"mainImage\",\"main\");a=\na.replace(P,\"()\");a=(b?\"#define \".concat(b[1],\" gl_FragColor\\n#define \").concat(b[2],\" gl_FragCoord.xy\\n\"):\"\")+a}a=pa(qa,b)+a;return\"precision highp float;\\n\"+a}function ra(a,b,d,c,f=!1){function e(a){let b=r[F(a,f,\"name\")];b&&b.setValue(F(a,f,\"value\"))}function p(b){b.forEach(e);t.forEach(a=>a.update(e));k&&r.u_prevbuffer&&(b=r.u_prevbuffer)&&(b.setValue(w),a.activeTexture(a[\"TEXTURE\".concat(w)]),a.bindTexture(a.TEXTURE_2D,k.texture),k.updateTexture());g.forEach(b=>{r[b.name].setValue(b.u);a.activeTexture(a[\"TEXTURE\".concat(b.u)]);\na.bindTexture(a.TEXTURE_2D,b.fbo.texture);b.fbo.updateTexture()})}let v=sa++,n=a.createProgram(),h=a.createBuffer();b=O(a,a.VERTEX_SHADER,b);d=O(a,a.FRAGMENT_SHADER,oa(d,f));a.attachShader(n,b);a.attachShader(n,d);a.linkProgram(n);let q,l,m,k,w,u=ea(a,n),r=na(a,n),g=new Set,t=new Set,x=0;if(!a.getProgramParameter(n,a.LINK_STATUS)){let b=a.getProgramInfoLog(n);console.warn(b)}a.detachShader(n,b);a.detachShader(n,d);a.deleteShader(b);a.deleteShader(d);b=u.position;a.bindBuffer(a.ARRAY_BUFFER,h);a.bufferData(a.ARRAY_BUFFER,\nc,a.STATIC_DRAW);a.enableVertexAttribArray(b);a.vertexAttribPointer(b,2,a.FLOAT,!1,0,0);return{get id(){return v},get nodes(){return g},get fbo(){return m},get name(){return q},get u(){return l},render:function(b,c,d){g.size&&g.forEach(a=>a.render(b,c,d));if(m){if(k){let a=m;m=k;k=a;k.bind();k.updateResolution(b,c)}m.updateResolution(b,c);m.bind()}else a.bindFramebuffer(a.FRAMEBUFFER,null),a.viewport(0,0,b,c);a.clear(a.COLOR_BUFFER_BIT);a.useProgram(n);p(d);a.drawArrays(a.TRIANGLES,0,6)},addNode:function(a,\nb,c){a.toFbo(b,x++,c);g.add(a)},removeNode:function(a){g.delete(a)},addTexture:function(a){t.add(a)},removeTexture:function(a){t.delete(a)},getTexUnit:function(){return x++},update:p,toFbo:function(b,c,d){q=b;l=c;m=N(a);d&&(k=N(a),w=x++)},dispose:function(){t.forEach(a=>a.dispose());t.clear();a.deleteProgram(n)}}}function Q(a){if(!a)return[0,0];let b=(a.tagName||\"\").toLowerCase();return\"video\"===b?[a.videoWidth,a.videoHeight]:\"img\"===b?[a.naturalWidth,a.naturalHeight]:[a.width,a.height]}function R(a,\nb,d={}){function c(){a.getParameter(a.ACTIVE_TEXTURE)!==b&&a.activeTexture(a[\"TEXTURE\".concat(b)])}function f(){h.forEach(b=>{a.texParameteri(p,b[0],b[1])})}function e(b){if(\"object\"===typeof b){Object.assign(n,b);c();a.bindTexture(p,v);var {level:d,internalFormat:e,offsetX:h,offsetY:r,width:g,height:t,border:m,format:B,type:D,flipY:z,buffer:y,pixels:A}=n;f();a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,z);if(A){let [c,d]=Q(A);if(0===c||0===d){console.warn(\"Texture size is invalid \".concat(c,\" x \").concat(d,\n\". Update is skipped;\"));return}{({pixels:b}=n);var J=a.getTexParameter(p,a.TEXTURE_WRAP_S);let c=a.getTexParameter(p,a.TEXTURE_WRAP_T),d=a.getTexParameter(p,a.TEXTURE_MIN_FILTER),f=G(b.width)&&G(b.height);(J=J!==a.CLAMP_TO_EDGE||c!==a.CLAMP_TO_EDGE||d!==a.LINEAR&&d!==a.NEAREST)&&!f&&(l||(l=document.createElement(\"canvas\"),l.width=2**Math.floor(Math.log(b.width)/Math.LN2),l.height=2**Math.floor(Math.log(b.height)/Math.LN2),console.warn(\"Texture is not power of two \".concat(b.width,\" x \").concat(b.height,\n\". Resized to \").concat(l.width,\" x \").concat(l.height,\";\"))),l.getContext(\"2d\").drawImage(b,0,0,l.width,l.height));q=J&&l||b}}\"number\"===typeof h&&\"number\"===typeof r?q?a.texSubImage2D(p,d,h,r,B,D,q):a.texSubImage2D(p,d,h,r,g,t,B,D,y):q?a.texImage2D(p,d,e,B,D,q):a.texImage2D(p,d,e,g,t,m,B,D,y);q&&G(q.width)&&G(q.height)&&(b=a.getTexParameter(p,a.TEXTURE_MIN_FILTER),b!==a.LINEAR&&b!==a.NEAREST&&a.generateMipmap(p))}}let p=a.TEXTURE_2D,v=a.createTexture(),n={},h=[],q,l;e(Object.assign({level:0,internalFormat:a.RGBA,\noffsetX:null,offsetY:null,width:1,height:1,border:0,format:a.RGBA,type:a.UNSIGNED_BYTE,flipY:!0,buffer:ta,pixels:null},\"object\"===typeof d?d:{}));return{setParameters:function(b){c();h.length=0;b.forEach(b=>{h.push(b);a.texParameteri(p,b[0],b[1])})},shallow:function(){c();a.bindTexture(p,v);f()},update:e,dispose:function(){a.deleteTexture(v)}}}function ua(a){return new Promise((b,d)=>{let c=new XMLHttpRequest;c.open(\"GET\",a,!0);c.responseType=\"arraybuffer\";c.onreadystatechange=()=>{c.readyState===\nXMLHttpRequest.DONE&&(200===c.status||206===c.status?b(c.response):(console.log(c),d(c.status)))};c.send()})}function va(a,b){return new Promise((d,c)=>{b.decodeAudioData(a,d,c)})}function wa(a,b,d,c,f,e,p,v){async function n(){g=l.createBufferSource();g.buffer=await va(await ua(c),l);g.loop=e;g.start();t=!0}function h(){let a=document.querySelector(c);a&&a instanceof HTMLAudioElement&&(r=a,g=l.createMediaElementSource(a))}function q(a,b){a.connect(m);m.connect(b)}f=a.gl;let l=a.wa,m=l.createAnalyser();\nm.fftSize=1024;let k=new Uint8Array(m.frequencyBinCount),w=new Uint8Array(m.frequencyBinCount),u=R(f,b,{internalFormat:f.LUMINANCE,width:w.length,height:2,format:f.LUMINANCE,buffer:null});u.setParameters([[f.TEXTURE_WRAP_S,f.CLAMP_TO_EDGE],[f.TEXTURE_WRAP_T,f.CLAMP_TO_EDGE],[f.TEXTURE_MIN_FILTER,f.NEAREST]]);let r,g,t=!1,x=[{name:d,value:b}];\"#\"===c[0]?h():c&&n();g&&q(g,l.destination);return{dispose:function(){u.dispose()},update:function(a){x.forEach(a);if(t||r&&2\u003Cr.readyState&&!r.paused&&!r.ended&&\nr.currentTime)m.getByteFrequencyData(k),m.getByteTimeDomainData(w),u.update({offsetX:0,offsetY:0,height:1,buffer:k}),u.update({offsetX:0,offsetY:1,height:1,buffer:w})}}}function S(a,b){var d=Object.keys(a);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(a);b&&(c=c.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable}));d.push.apply(d,c)}return d}function T(a){let b=document.createElement(\"div\");b.style.width=b.style.height=\"1px\";b.style.overflow=\"hidden\";b.style.position=\n\"absolute\";b.style.opacity=\"0\";b.style.pointerEvents=\"none\";b.style.zIndex=\"-1000\";b.appendChild(a);document.body.appendChild(b)}function xa(a,b,d,c,f,e,p,v,n,h){function q(){t=0;g=new Image;g.crossOrigin=\"anonymous\";g.onload=l;g.onerror=()=>{console.warn(\"failed loading src: \".concat(c))};g.src=c}function l(){k();r.setParameters([[u.TEXTURE_WRAP_S,e],[u.TEXTURE_WRAP_T,p],[u.TEXTURE_MIN_FILTER,v],[u.TEXTURE_MAG_FILTER,n]]);r.update({pixels:g})}function m(){t=2;let a=navigator.getUserMedia||navigator.webkitGetUserMedia||\nnavigator.mozGetUserMedia,b=a=>{g=document.createElement(\"video\");g.width=320;g.height=240;g.autoplay=!0;g.srcObject=a;T(g)},c=()=>{navigator.mediaDevices.getUserMedia({video:!0}).then(b).catch(a=>console.log(a.name+\": \"+a.message))},d=()=>{a({video:!0},b,a=>a)};navigator.mediaDevices&&navigator.mediaDevices.getUserMedia?c():a&&d()}function k(){if(g){let [a,b]=Q(g);x[1].value[0]=a;x[1].value[1]=b}}function w(){return(2===t||1===t)&&g instanceof HTMLVideoElement}let u=a.gl,r=R(u,b),g,t,x=[{name:d,\nvalue:b},{name:d+\"_resolution\",value:[0,0]}],B=!1;if(f)m();else if(ya.test(c))t=1,g=document.createElement(\"video\"),g.autoplay=!0,g.muted=!0,g.loop=!0,g.playsInline=!0,g.crossOrigin=\"anonymous\",g.src=c,T(g),g.play();else if(za.test(c))q();else{try{g=document.querySelector(c)}catch(D){console.warn(\"src: \".concat(c,\": invalid selector\"))}g?g instanceof HTMLImageElement?(t=0,g.complete?l():g.addEventListener(\"load\",l)):g instanceof HTMLVideoElement?t=1:g instanceof HTMLCanvasElement?(t=3,l()):g instanceof\nK?(g=g.surface.dom,t=3,l()):console.warn(\"src: \".concat(c,\": element is not a valid texture source\")):console.warn(\"src: \".concat(c,\": no element could be selected\"))}return{dispose:function(){r.dispose()},update:function(a){x.forEach(a);h||w()&&g.readyState===g.HAVE_ENOUGH_DATA?(w()&&(B||(B=!0,k(),r.setParameters([[u.TEXTURE_WRAP_S,u.CLAMP_TO_EDGE],[u.TEXTURE_WRAP_T,u.CLAMP_TO_EDGE],[u.TEXTURE_MIN_FILTER,u.LINEAR]]))),r.update({pixels:g})):r.shallow()}}}function Aa(a){function b(a){n.forEach(a=>\n\"function\"===typeof a&&a());k=!0;a=U(a);let {top:b,left:c,height:d}=q;h[2].value[0]=h[2].value[2]=a[0]-Math.floor(c);h[2].value[1]=h[2].value[3]=Math.floor(d)-(a[1]-Math.floor(b))}function d(a){if(!m){a=U(a);let {top:b,left:c,height:d}=q;h[1].value[0]=a[0]-Math.floor(c);h[1].value[1]=Math.floor(d)-(a[1]-Math.floor(b));k&&(h[2].value[0]=h[1].value[0],h[2].value[1]=h[1].value[1]);m=!0}}function c(a){k=!1;1===Math.sign(h[2].value[2])&&(h[2].value[2]*=-1);1===Math.sign(h[2].value[3])&&(h[2].value[3]*=\n-1)}function f(){let b=e.getBoundingClientRect();l=0\u003C=b.top+b.height&&0\u003C=b.left+b.width&&b.bottom-b.height\u003C=(window.innerHeight||document.documentElement.clientHeight)&&b.right-b.width\u003C=(window.innerWidth||document.documentElement.clientWidth);let c=0\u003Ca.height?a.height:b.height,d=0\u003Ca.width?a.width:b.width;d!==h[0].value[0]&&(e.width=h[0].value[0]=d);c!==h[0].value[1]&&(e.height=h[0].value[1]=c);q=b}let e=a.canvas instanceof HTMLCanvasElement?a.canvas:document.createElementNS(\"http://www.w3.org/1999/xhtml\",\n\"canvas\"),p=e.getContext(\"2d\"),v=a.program,n=new Set,h=JSON.parse(JSON.stringify(V)),q={},l,m,k;e.addEventListener(\"mousedown\",b);e.addEventListener(\"mousemove\",d);e.addEventListener(\"mouseup\",c);e.addEventListener(\"mouseout\",c);e.addEventListener(\"touchstart\",b);e.addEventListener(\"touchmove\",d);e.addEventListener(\"touchend\",c);f();return Object.freeze({get dom(){return e},render:function(a,b,c,d,e,k){f();m=!1;if(l&&v){var g=h[0].value[0]||0;c=h[0].value[1]||0;b(g,c);v.render(g,c,[...k,...h]);b=\ng*e;e*=c;p.clearRect(0,0,b,e);p.drawImage(a,0,d-e,b,e,0,0,b,e)}},addClick:function(a){n.add(a)},dispose:function(){n.clear();e.removeEventListener(\"mousedown\",b);e.removeEventListener(\"mousemove\",d);e.removeEventListener(\"mouseup\",c);e.removeEventListener(\"mouseout\",c);e.removeEventListener(\"touchstart\",b);e.removeEventListener(\"touchmove\",d);e.removeEventListener(\"touchend\",c)}})}var W={render(a,b){return\"\".concat(this.css(a,b),\"\\n \").concat(this.html())},map(a){return{canvas:a.querySelector(\"canvas\")}},\nhtml(a){return\"\u003Ccanvas>\u003C/canvas>\"},css(a,b){return\"\u003Cstyle>\\n :host {\\n position: relative;\\n display: inline-block;\\n width: \".concat(a||250,\"px;\\n height: \").concat(b||250,\"px;\\n }\\n :host > canvas {\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n border-radius: inherit;\\n }\\n \u003C/style>\")}};let M=[{name:\"u_time\",toyname:\"iTime\",type:\"float\",value:0},{name:\"u_delta\",toyname:\"iTimeDelta\",\ntype:\"float\",value:0},{name:\"u_date\",toyname:\"iDate\",type:\"vec4\",value:[0,0,0,0]},{name:\"u_frame\",toyname:\"iFrame\",type:\"int\",value:0}],V=[{name:\"u_resolution\",toyname:\"iResolution\",type:\"vec2\",value:[0,0]},{name:\"u_mouse\",toyname:\"iCurrentMouse\",type:\"vec2\",value:[0,0]},{name:\"u_mousedrag\",toyname:\"iMouse\",type:\"vec4\",value:[0,0,0,0]}],L=[{name:\"u_orientation\",toyname:\"iOrientation\",type:\"vec3\",value:[0,0,0]}],qa=[...M,...L,...V],P=/\\(\\s*out\\s+vec4\\s+(\\S+)\\s*,\\s*in\\s+vec2\\s+(\\S+)\\s*\\)/,y;C.singleton=\nfunction(){y||(y=C());return y};C.resetSingleton=function(){y&&y.dispose();y=C()};class E extends HTMLElement{get renderer(){return C.singleton()}get name(){return this.getAttribute(\"name\")}set name(a){this.setAttribute(\"name\",a)}}var F=(a,b,d)=>{if(!b)return a[d];b=\"toy\".concat(d);return a.hasOwnProperty(b)?a[b]:a[d]},pa=(a,b)=>Object.values(a).reduce((a,c)=>a+\"uniform \".concat(F(c,b,\"type\"),\" \").concat(F(c,b,\"name\"),\";\\n\"),\"\");let sa=0;var Ba=a=>new Promise((b,d)=>{let c=new XMLHttpRequest;c.open(\"GET\",\na);c.onreadystatechange=()=>{c.readyState===XMLHttpRequest.DONE&&(200===c.status?b(c.responseText):d(c.status))};c.send()}),X=async a=>a.src?Ba(a.src):a.text;let Y=new Float32Array([-1,1,1,1,1,-1,-1,1,1,-1,-1,-1]),Ca=0;class Z extends E{disconnectedCallback(){this.program.dispose();this.program=void 0}get shadertoy(){return this.hasAttribute(\"shadertoy\")}set shadertoy(a){a?this.setAttribute(\"shadertoy\",\"\"):this.removeAttribute(\"shadertoy\")}get prevbuffer(){return this.hasAttribute(\"prevbuffer\")}set prevbuffer(a){a?\nthis.setAttribute(\"prevbuffer\",\"\"):this.removeAttribute(\"prevbuffer\")}get vertices(){let a=this.getAttribute(\"vertices\");if(!a)return Y;a=JSON.parse(a);return Array.isArray(a)?new Float32Array(a):Y}set vertices(a){a&&Array.isArray(a)&&this.setAttribute(\"vertices\",JSON.stringify(a))}async init(a){a&&!this.name&&(this.name=\"\".concat(\"u_node\").concat(Ca++));let b=[],d,c;for(let a=0;a\u003Cthis.children.length;a++){let e=this.children[a];if(e instanceof E)b.push(e);else switch(e.getAttribute(\"type\")){case \"x-shader/x-fragment\":c=\nawait X(e);break;case \"x-shader/x-vertex\":d=await X(e)}}this.program=ra(this.renderer.gl,d||\"attribute vec2 position;\\nvoid main() {\\n gl_Position = vec4(position, 0.0, 1.0);\\n}\",c,this.vertices,this.shadertoy);b.forEach(a=>{a.init(this.program)});a&&a.addNode(this.program,this.name,this.prevbuffer)}}customElements.get(\"sd-node\")||customElements.define(\"sd-node\",Z);let ta=new Uint8Array([0,0,0,255]),G=a=>!(a&a-1)&&!!a,Da=0;class Ea extends E{disconnectedCallback(){this.program.removeTexture(this.texture);\nthis.texture.dispose()}get src(){return this.getAttribute(\"src\")}set src(a){this.setAttribute(\"src\",a)}get autoplay(){return this.hasAttribute(\"autoplay\")}set autoplay(a){a?this.setAttribute(\"autoplay\",\"\"):this.removeAttribute(\"autoplay\")}get loop(){return this.hasAttribute(\"loop\")}set loop(a){a?this.setAttribute(\"loop\",\"\"):this.removeAttribute(\"loop\")}get crossOrigin(){return this.getAttribute(\"crossorigin\")}set crossOrigin(a){this.setAttribute(\"crossorigin\",a)}get mic(){return this.hasAttribute(\"mic\")}set mic(a){a?\nthis.setAttribute(\"mic\",\"\"):this.removeAttribute(\"mic\")}init(a){this.name||(this.name=\"\".concat(\"u_audio\").concat(Da++));this.src&&(this.program=a,this.texture=wa(this.renderer,a.getTexUnit(),this.name,this.src,this.mic,this.loop,this.autoplay,this.crossOrigin),a.addTexture(this.texture))}}customElements.get(\"sd-audio\")||customElements.define(\"sd-audio\",Ea);let za=/\\w+\\.(jpg|jpeg|png|gif|bmp)(?=\\?|$)/i,ya=/\\w+\\.(mp4|3gp|webm|ogv)(?=\\?|$)/i,aa={NEAREST:9728,LINEAR:9729},Fa=function(a){for(var b=1;b\u003C\narguments.length;b++){var d=null!=arguments[b]?arguments[b]:{};b%2?S(d,!0).forEach(function(b){var c=d[b];b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(d)):S(d).forEach(function(b){Object.defineProperty(a,b,Object.getOwnPropertyDescriptor(d,b))})}return a}({},aa,{NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987}),\nba={REPEAT:10497,MIRRORED_REPEAT:33648,CLAMP_TO_EDGE:33071},Ga=0;class Ha extends E{static get observedAttributes(){return\"mag-filter min-filter name src wrap-s wrap-t\".split(\" \")}disconnectedCallback(){this.program.removeTexture(this.texture);this.texture.dispose()}get forceUpdate(){return this.hasAttribute(\"force-update\")}set forceUpdate(a){a?this.setAttribute(\"force-update\",\"\"):this.removeAttribute(\"force-update\")}get magFilter(){return aa[this.getAttribute(\"mag-filter\")]||9729}get minFilter(){return Fa[this.getAttribute(\"min-filter\")]||\n9987}get src(){return this.getAttribute(\"src\")}set src(a){this.setAttribute(\"src\",a)}get webcam(){return this.hasAttribute(\"webcam\")}set webcam(a){a?this.setAttribute(\"webcam\",\"\"):this.removeAttribute(\"webcam\")}get wrapS(){return ba[this.getAttribute(\"wrap-s\")]||10497}get wrapT(){return ba[this.getAttribute(\"wrap-t\")]||10497}init(a){this.name||(this.name=\"\".concat(\"u_texture\").concat(Ga++));if(this.src||this.webcam)this.program=a,this.texture=xa(this.renderer,a.getTexUnit(),this.name,this.src,this.webcam,\nthis.wrapS,this.wrapT,this.minFilter,this.magFilter,this.forceUpdate),a.addTexture(this.texture)}}customElements.get(\"sd-texture\")||customElements.define(\"sd-texture\",Ha);class Ia extends E{disconnectedCallback(){}get x(){return parseFloat(this.getAttribute(\"x\"))}set x(a){null!=a?this.setAttribute(\"x\",a):this.removeAttribute(\"x\")}get y(){return parseFloat(this.getAttribute(\"y\"))}set y(a){null!=a?this.setAttribute(\"y\",a):this.removeAttribute(\"y\")}get z(){return parseFloat(this.getAttribute(\"z\"))}set z(a){null!=\na?this.setAttribute(\"z\",a):this.removeAttribute(\"z\")}get w(){return parseFloat(this.getAttribute(\"w\"))}set w(a){null!=a?this.setAttribute(\"w\",a):this.removeAttribute(\"w\")}getValue(){switch(this.type){case \"vec2\":return[this.x,this.y];case \"vec3\":return[this.x,this.y,this.z];case \"vec4\":return[this.x,this.y,this.z,this.w];default:return this.x}}get type(){return this.getAttribute(\"type\")}set type(a){null!=a?this.setAttribute(\"type\",a):this.removeAttribute(\"type\")}static get observedAttributes(){return[\"x\",\n\"y\",\"z\",\"w\"]}attributeChangedCallback(a,b,d){switch(a){case \"x\":case \"y\":case \"z\":case \"w\":null!=d&&this.renderer.setUniform(this.name,this.getValue())}}init(a){this.name?(this.program=a,this.renderer.addUniform(this.name,this.getValue(),this.type)):console.warn(\"sd-uniform created without a name.\")}}customElements.get(\"sd-uniform\")||customElements.define(\"sd-uniform\",Ia);let Ja=new Set([\"touchstart\",\"touchmove\",\"touchend\"]);var U=a=>{a=Ja.has(a.type)&&\"object\"===typeof a.touches[0]?a.touches[0]:\na;return[a.clientX||0,a.clientY||0]};class K extends Z{static get observedAttributes(){return[\"height\",\"width\"]}constructor(){super();this.shadow=this.attachShadow({mode:\"open\"})}connectedCallback(){this.shadow.innerHTML=W.render(this.width,this.height);this.canvas=W.map(this.shadow).canvas;setTimeout(()=>{try{this.init()}catch(a){console.error(a&&a.message||\"Error in shader-doodle.\")}})}disconnectedCallback(){super.disconnectedCallback();this.renderer.removeSurface(this.surface);this.surface.dispose();\nthis.surface=void 0}attributeChangedCallback(a){let b=this.shadow.styleSheets;if((\"height\"===a||\"width\"===a)&&0\u003Cb.length){let d=this[a];b[0].cssRules[0].style[a]=Number.isInteger(d)?\"\".concat(d,\"px\"):\"250px\"}}get height(){let a=parseInt(this.getAttribute(\"height\"));return Number.isInteger(a)?a:void 0}set height(a){let b=parseInt(a);Number.isInteger(b)&&this.setAttribute(\"height\",a)}get width(){let a=parseInt(this.getAttribute(\"width\"));return Number.isInteger(a)?a:void 0}set width(a){a=parseInt(a);\nNumber.isInteger(a)&&this.setAttribute(\"width\",a)}async init(){await super.init();this.surface=Aa(this);this.renderer.addSurface(this.surface)}}customElements.get(\"shader-doodle\")||customElements.define(\"shader-doodle\",K);z.ShaderDoodleElement=K;Object.defineProperty(z,\"__esModule\",{value:!0})})\n\u003C/script>","tags":"$:/tags/RawMarkup","title":"$:/webxr-notebook/shader-doodle.js","modified":"20230426064515285"}, -{"created":"20230427155228509","text":"\n\u003C!-- dist/xrfragment.js -->\n\u003Cscript>\nvar $hx_exports = typeof exports != \"undefined\" ? exports : typeof window != \"undefined\" ? window : typeof self != \"undefined\" ? self : this;\n(function ($global) { \"use strict\";\n$hx_exports[\"xrfragment\"] = $hx_exports[\"xrfragment\"] || {};\nvar EReg = function(r,opt) {\n\tthis.r = new RegExp(r,opt.split(\"u\").join(\"\"));\n};\nEReg.__name__ = true;\nEReg.prototype = {\n\tmatch: function(s) {\n\t\tif(this.r.global) {\n\t\t\tthis.r.lastIndex = 0;\n\t\t}\n\t\tthis.r.m = this.r.exec(s);\n\t\tthis.r.s = s;\n\t\treturn this.r.m != null;\n\t}\n\t,split: function(s) {\n\t\tvar d = \"#__delim__#\";\n\t\treturn s.replace(this.r,d).split(d);\n\t}\n};\nvar HxOverrides = function() { };\nHxOverrides.__name__ = true;\nHxOverrides.cca = function(s,index) {\n\tvar x = s.charCodeAt(index);\n\tif(x != x) {\n\t\treturn undefined;\n\t}\n\treturn x;\n};\nHxOverrides.substr = function(s,pos,len) {\n\tif(len == null) {\n\t\tlen = s.length;\n\t} else if(len \u003C 0) {\n\t\tif(pos == 0) {\n\t\t\tlen = s.length + len;\n\t\t} else {\n\t\t\treturn \"\";\n\t\t}\n\t}\n\treturn s.substr(pos,len);\n};\nHxOverrides.now = function() {\n\treturn Date.now();\n};\nMath.__name__ = true;\nvar Reflect = function() { };\nReflect.__name__ = true;\nReflect.field = function(o,field) {\n\ttry {\n\t\treturn o[field];\n\t} catch( _g ) {\n\t\treturn null;\n\t}\n};\nReflect.fields = function(o) {\n\tvar a = [];\n\tif(o != null) {\n\t\tvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\t\tfor( var f in o ) {\n\t\tif(f != \"__id__\" && f != \"hx__closures__\" && hasOwnProperty.call(o,f)) {\n\t\t\ta.push(f);\n\t\t}\n\t\t}\n\t}\n\treturn a;\n};\nReflect.deleteField = function(o,field) {\n\tif(!Object.prototype.hasOwnProperty.call(o,field)) {\n\t\treturn false;\n\t}\n\tdelete(o[field]);\n\treturn true;\n};\nvar Std = function() { };\nStd.__name__ = true;\nStd.string = function(s) {\n\treturn js_Boot.__string_rec(s,\"\");\n};\nStd.parseInt = function(x) {\n\tif(x != null) {\n\t\tvar _g = 0;\n\t\tvar _g1 = x.length;\n\t\twhile(_g \u003C _g1) {\n\t\t\tvar i = _g++;\n\t\t\tvar c = x.charCodeAt(i);\n\t\t\tif(c \u003C= 8 || c >= 14 && c != 32 && c != 45) {\n\t\t\t\tvar nc = x.charCodeAt(i + 1);\n\t\t\t\tvar v = parseInt(x,nc == 120 || nc == 88 ? 16 : 10);\n\t\t\t\tif(isNaN(v)) {\n\t\t\t\t\treturn null;\n\t\t\t\t} else {\n\t\t\t\t\treturn v;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n};\nvar StringTools = function() { };\nStringTools.__name__ = true;\nStringTools.isSpace = function(s,pos) {\n\tvar c = HxOverrides.cca(s,pos);\n\tif(!(c > 8 && c \u003C 14)) {\n\t\treturn c == 32;\n\t} else {\n\t\treturn true;\n\t}\n};\nStringTools.ltrim = function(s) {\n\tvar l = s.length;\n\tvar r = 0;\n\twhile(r \u003C l && StringTools.isSpace(s,r)) ++r;\n\tif(r > 0) {\n\t\treturn HxOverrides.substr(s,r,l - r);\n\t} else {\n\t\treturn s;\n\t}\n};\nStringTools.rtrim = function(s) {\n\tvar l = s.length;\n\tvar r = 0;\n\twhile(r \u003C l && StringTools.isSpace(s,l - r - 1)) ++r;\n\tif(r > 0) {\n\t\treturn HxOverrides.substr(s,0,l - r);\n\t} else {\n\t\treturn s;\n\t}\n};\nStringTools.trim = function(s) {\n\treturn StringTools.ltrim(StringTools.rtrim(s));\n};\nStringTools.replace = function(s,sub,by) {\n\treturn s.split(sub).join(by);\n};\nvar haxe_iterators_ArrayIterator = function(array) {\n\tthis.current = 0;\n\tthis.array = array;\n};\nhaxe_iterators_ArrayIterator.__name__ = true;\nhaxe_iterators_ArrayIterator.prototype = {\n\thasNext: function() {\n\t\treturn this.current \u003C this.array.length;\n\t}\n\t,next: function() {\n\t\treturn this.array[this.current++];\n\t}\n};\nvar js_Boot = function() { };\njs_Boot.__name__ = true;\njs_Boot.__string_rec = function(o,s) {\n\tif(o == null) {\n\t\treturn \"null\";\n\t}\n\tif(s.length >= 5) {\n\t\treturn \"\u003C...>\";\n\t}\n\tvar t = typeof(o);\n\tif(t == \"function\" && (o.__name__ || o.__ename__)) {\n\t\tt = \"object\";\n\t}\n\tswitch(t) {\n\tcase \"function\":\n\t\treturn \"\u003Cfunction>\";\n\tcase \"object\":\n\t\tif(((o) instanceof Array)) {\n\t\t\tvar str = \"[\";\n\t\t\ts += \"\\t\";\n\t\t\tvar _g = 0;\n\t\t\tvar _g1 = o.length;\n\t\t\twhile(_g \u003C _g1) {\n\t\t\t\tvar i = _g++;\n\t\t\t\tstr += (i > 0 ? \",\" : \"\") + js_Boot.__string_rec(o[i],s);\n\t\t\t}\n\t\t\tstr += \"]\";\n\t\t\treturn str;\n\t\t}\n\t\tvar tostr;\n\t\ttry {\n\t\t\ttostr = o.toString;\n\t\t} catch( _g ) {\n\t\t\treturn \"???\";\n\t\t}\n\t\tif(tostr != null && tostr != Object.toString && typeof(tostr) == \"function\") {\n\t\t\tvar s2 = o.toString();\n\t\t\tif(s2 != \"[object Object]\") {\n\t\t\t\treturn s2;\n\t\t\t}\n\t\t}\n\t\tvar str = \"{\\n\";\n\t\ts += \"\\t\";\n\t\tvar hasp = o.hasOwnProperty != null;\n\t\tvar k = null;\n\t\tfor( k in o ) {\n\t\tif(hasp && !o.hasOwnProperty(k)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif(k == \"prototype\" || k == \"__class__\" || k == \"__super__\" || k == \"__interfaces__\" || k == \"__properties__\") {\n\t\t\tcontinue;\n\t\t}\n\t\tif(str.length != 2) {\n\t\t\tstr += \", \\n\";\n\t\t}\n\t\tstr += s + k + \" : \" + js_Boot.__string_rec(o[k],s);\n\t\t}\n\t\ts = s.substring(1);\n\t\tstr += \"\\n\" + s + \"}\";\n\t\treturn str;\n\tcase \"string\":\n\t\treturn o;\n\tdefault:\n\t\treturn String(o);\n\t}\n};\nvar xrfragment_Parser = $hx_exports[\"xrfragment\"][\"Parser\"] = function() { };\nxrfragment_Parser.__name__ = true;\nxrfragment_Parser.parse = function(key,value,resultMap) {\n\tvar Frag_h = Object.create(null);\n\tFrag_h[\"prio\"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_INT;\n\tFrag_h[\"#\"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_PREDEFINED_VIEW;\n\tFrag_h[\"class\"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;\n\tFrag_h[\"src\"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_URL;\n\tFrag_h[\"pos\"] = xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.ROUNDROBIN | xrfragment_XRF.T_VECTOR3 | xrfragment_XRF.T_STRING_OBJ;\n\tFrag_h[\"href\"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_URL | xrfragment_XRF.T_PREDEFINED_VIEW;\n\tFrag_h[\"q\"] = xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_STRING;\n\tFrag_h[\"scale\"] = xrfragment_XRF.QUERY_OPERATOR | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.ROUNDROBIN | xrfragment_XRF.T_INT;\n\tFrag_h[\"rot\"] = xrfragment_XRF.QUERY_OPERATOR | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.ROUNDROBIN | xrfragment_XRF.T_VECTOR3;\n\tFrag_h[\"translate\"] = xrfragment_XRF.QUERY_OPERATOR | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.ROUNDROBIN | xrfragment_XRF.T_VECTOR3;\n\tFrag_h[\"visible\"] = xrfragment_XRF.QUERY_OPERATOR | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.ROUNDROBIN | xrfragment_XRF.T_INT;\n\tFrag_h[\"env\"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_STRING;\n\tFrag_h[\"t\"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.ROUNDROBIN | xrfragment_XRF.T_VECTOR2 | xrfragment_XRF.BROWSER_OVERRIDE;\n\tFrag_h[\"gravity\"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR3;\n\tFrag_h[\"physics\"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR3;\n\tFrag_h[\"scroll\"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_STRING;\n\tFrag_h[\"fov\"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_INT | xrfragment_XRF.BROWSER_OVERRIDE;\n\tFrag_h[\"clip\"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR2 | xrfragment_XRF.BROWSER_OVERRIDE;\n\tFrag_h[\"fog\"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_STRING | xrfragment_XRF.BROWSER_OVERRIDE;\n\tFrag_h[\"namespace\"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;\n\tFrag_h[\"SPFX\"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;\n\tFrag_h[\"unit\"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;\n\tFrag_h[\"description\"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;\n\tFrag_h[\"src_session\"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_URL | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.BROWSER_OVERRIDE | xrfragment_XRF.PROMPT;\n\tif(value.length == 0 && !Object.prototype.hasOwnProperty.call(Frag_h,key)) {\n\t\tresultMap[key] = new xrfragment_XRF(key,xrfragment_XRF.PV_EXECUTE | xrfragment_XRF.BROWSER_OVERRIDE);\n\t\treturn true;\n\t}\n\tif(key.split(\".\").length > 1 && value.split(\".\").length > 1) {\n\t\tresultMap[key] = new xrfragment_XRF(key,xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_STRING | xrfragment_XRF.PROP_BIND);\n\t\treturn true;\n\t}\n\tif(Object.prototype.hasOwnProperty.call(Frag_h,key)) {\n\t\tvar v = new xrfragment_XRF(key,Frag_h[key]);\n\t\tif(!v.validate(value)) {\n\t\t\tconsole.log(\"src/xrfragment/Parser.hx:75:\",\"[ i ] fragment '\" + key + \"' has incompatible value (\" + value + \")\");\n\t\t\treturn false;\n\t\t}\n\t\tresultMap[key] = v;\n\t} else {\n\t\tconsole.log(\"src/xrfragment/Parser.hx:79:\",\"[ i ] fragment '\" + key + \"' does not exist or has no type typed (yet)\");\n\t\treturn false;\n\t}\n\treturn true;\n};\nvar xrfragment_Query = $hx_exports[\"xrfragment\"][\"Query\"] = function(str) {\n\tthis.isNumber = new EReg(\"^[0-9\\\\.]+$\",\"\");\n\tthis.isClass = new EReg(\"^[-]?class$\",\"\");\n\tthis.isExclude = new EReg(\"^-\",\"\");\n\tthis.isProp = new EReg(\"^.*:[>\u003C=!]?\",\"\");\n\tthis.q = { };\n\tthis.str = \"\";\n\tif(str != null) {\n\t\tthis.parse(str);\n\t}\n};\nxrfragment_Query.__name__ = true;\nxrfragment_Query.prototype = {\n\ttoObject: function() {\n\t\treturn this.q;\n\t}\n\t,expandAliases: function(token) {\n\t\tvar classAlias = new EReg(\"^(-)?\\\\.\",\"\");\n\t\tif(classAlias.match(token)) {\n\t\t\treturn StringTools.replace(token,\".\",\"class:\");\n\t\t} else {\n\t\t\treturn token;\n\t\t}\n\t}\n\t,get: function() {\n\t\treturn this.q;\n\t}\n\t,parse: function(str,recurse) {\n\t\tif(recurse == null) {\n\t\t\trecurse = false;\n\t\t}\n\t\tvar _gthis = this;\n\t\tvar token = str.split(\" \");\n\t\tvar q = { };\n\t\tvar process = function(str,prefix) {\n\t\t\tif(prefix == null) {\n\t\t\t\tprefix = \"\";\n\t\t\t}\n\t\t\tstr = StringTools.trim(str);\n\t\t\tvar k = str.split(\":\")[0];\n\t\t\tvar v = str.split(\":\")[1];\n\t\t\tvar filter = { };\n\t\t\tif(q[prefix + k]) {\n\t\t\t\tfilter = q[prefix + k];\n\t\t\t}\n\t\t\tfilter[\"rules\"] = filter[\"rules\"] != null ? filter[\"rules\"] : [];\n\t\t\tif(_gthis.isProp.match(str)) {\n\t\t\t\tvar oper = \"\";\n\t\t\t\tif(str.indexOf(\"*\") != -1) {\n\t\t\t\t\toper = \"*\";\n\t\t\t\t}\n\t\t\t\tif(str.indexOf(\">\") != -1) {\n\t\t\t\t\toper = \">\";\n\t\t\t\t}\n\t\t\t\tif(str.indexOf(\"\u003C\") != -1) {\n\t\t\t\t\toper = \"\u003C\";\n\t\t\t\t}\n\t\t\t\tif(str.indexOf(\">=\") != -1) {\n\t\t\t\t\toper = \">=\";\n\t\t\t\t}\n\t\t\t\tif(str.indexOf(\"\u003C=\") != -1) {\n\t\t\t\t\toper = \"\u003C=\";\n\t\t\t\t}\n\t\t\t\tif(_gthis.isExclude.match(k)) {\n\t\t\t\t\toper = \"!=\";\n\t\t\t\t\tk = HxOverrides.substr(k,1,null);\n\t\t\t\t} else {\n\t\t\t\t\tv = HxOverrides.substr(v,oper.length,null);\n\t\t\t\t}\n\t\t\t\tif(oper.length == 0) {\n\t\t\t\t\toper = \"=\";\n\t\t\t\t}\n\t\t\t\tif(_gthis.isClass.match(k)) {\n\t\t\t\t\tfilter[prefix + k] = oper != \"!=\";\n\t\t\t\t\tq[v] = filter;\n\t\t\t\t} else {\n\t\t\t\t\tvar rule = { };\n\t\t\t\t\tif(_gthis.isNumber.match(v)) {\n\t\t\t\t\t\trule[oper] = parseFloat(v);\n\t\t\t\t\t} else {\n\t\t\t\t\t\trule[oper] = v;\n\t\t\t\t\t}\n\t\t\t\t\tfilter[\"rules\"].push(rule);\n\t\t\t\t\tq[k] = filter;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tfilter[\"id\"] = _gthis.isExclude.match(str) ? false : true;\n\t\t\t\tvar key = _gthis.isExclude.match(str) ? HxOverrides.substr(str,1,null) : str;\n\t\t\t\tq[key] = filter;\n\t\t\t}\n\t\t};\n\t\tvar _g = 0;\n\t\tvar _g1 = token.length;\n\t\twhile(_g \u003C _g1) {\n\t\t\tvar i = _g++;\n\t\t\tprocess(this.expandAliases(token[i]));\n\t\t}\n\t\treturn this.q = q;\n\t}\n\t,test: function(obj) {\n\t\tvar qualify = false;\n\t\tvar _g = 0;\n\t\tvar _g1 = Reflect.fields(obj);\n\t\twhile(_g \u003C _g1.length) {\n\t\t\tvar k = _g1[_g];\n\t\t\t++_g;\n\t\t\tvar v = Std.string(Reflect.field(obj,k));\n\t\t\tif(this.testProperty(k,v)) {\n\t\t\t\tqualify = true;\n\t\t\t}\n\t\t}\n\t\tvar _g = 0;\n\t\tvar _g1 = Reflect.fields(obj);\n\t\twhile(_g \u003C _g1.length) {\n\t\t\tvar k = _g1[_g];\n\t\t\t++_g;\n\t\t\tvar v = Std.string(Reflect.field(obj,k));\n\t\t\tif(this.testProperty(k,v,true)) {\n\t\t\t\tqualify = false;\n\t\t\t}\n\t\t}\n\t\treturn qualify;\n\t}\n\t,testProperty: function(property,value,exclude) {\n\t\tvar conds = 0;\n\t\tvar fails = 0;\n\t\tvar qualify = 0;\n\t\tvar testprop = function(expr) {\n\t\t\tconds += 1;\n\t\t\tfails += expr ? 0 : 1;\n\t\t\treturn expr;\n\t\t};\n\t\tif(this.q[value] != null) {\n\t\t\tvar v = this.q[value];\n\t\t\tif(v[property] != null) {\n\t\t\t\treturn v[property];\n\t\t\t}\n\t\t}\n\t\tvar _g = 0;\n\t\tvar _g1 = Reflect.fields(this.q);\n\t\twhile(_g \u003C _g1.length) {\n\t\t\tvar k = _g1[_g];\n\t\t\t++_g;\n\t\t\tvar filter = Reflect.field(this.q,k);\n\t\t\tif(filter.rules == null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvar rules = filter.rules;\n\t\t\tvar _g2 = 0;\n\t\t\twhile(_g2 \u003C rules.length) {\n\t\t\t\tvar rule = rules[_g2];\n\t\t\t\t++_g2;\n\t\t\t\tif(exclude) {\n\t\t\t\t\tif(Reflect.field(rule,\"!=\") != null && testprop((value == null ? \"null\" : \"\" + value) == Std.string(Reflect.field(rule,\"!=\"))) && exclude) {\n\t\t\t\t\t\t++qualify;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif(Reflect.field(rule,\"*\") != null && testprop(parseFloat(value) != null)) {\n\t\t\t\t\t\t++qualify;\n\t\t\t\t\t}\n\t\t\t\t\tif(Reflect.field(rule,\">\") != null && testprop(parseFloat(value) > parseFloat(Reflect.field(rule,\">\")))) {\n\t\t\t\t\t\t++qualify;\n\t\t\t\t\t}\n\t\t\t\t\tif(Reflect.field(rule,\"\u003C\") != null && testprop(parseFloat(value) \u003C parseFloat(Reflect.field(rule,\"\u003C\")))) {\n\t\t\t\t\t\t++qualify;\n\t\t\t\t\t}\n\t\t\t\t\tif(Reflect.field(rule,\">=\") != null && testprop(parseFloat(value) >= parseFloat(Reflect.field(rule,\">=\")))) {\n\t\t\t\t\t\t++qualify;\n\t\t\t\t\t}\n\t\t\t\t\tif(Reflect.field(rule,\"\u003C=\") != null && testprop(parseFloat(value) \u003C= parseFloat(Reflect.field(rule,\"\u003C=\")))) {\n\t\t\t\t\t\t++qualify;\n\t\t\t\t\t}\n\t\t\t\t\tif(Reflect.field(rule,\"=\") != null && (testprop(value == Reflect.field(rule,\"=\")) || testprop(parseFloat(value) == parseFloat(Reflect.field(rule,\"=\"))))) {\n\t\t\t\t\t\t++qualify;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn qualify > 0;\n\t}\n};\nvar xrfragment_URI = $hx_exports[\"xrfragment\"][\"URI\"] = function() { };\nxrfragment_URI.__name__ = true;\nxrfragment_URI.parse = function(qs,browser_override) {\n\tvar fragment = qs.split(\"#\");\n\tvar splitArray = fragment[1].split(\"&\");\n\tvar resultMap = { };\n\tvar _g = 0;\n\tvar _g1 = splitArray.length;\n\twhile(_g \u003C _g1) {\n\t\tvar i = _g++;\n\t\tvar splitByEqual = splitArray[i].split(\"=\");\n\t\tvar regexPlus = new EReg(\"\\\\+\",\"g\");\n\t\tvar key = splitByEqual[0];\n\t\tvar value = \"\";\n\t\tif(splitByEqual.length > 1) {\n\t\t\tvar s = regexPlus.split(splitByEqual[1]).join(\" \");\n\t\t\tvalue = decodeURIComponent(s.split(\"+\").join(\" \"));\n\t\t}\n\t\tvar ok = xrfragment_Parser.parse(key,value,resultMap);\n\t}\n\tif(browser_override) {\n\t\tvar _g = 0;\n\t\tvar _g1 = Reflect.fields(resultMap);\n\t\twhile(_g \u003C _g1.length) {\n\t\t\tvar key = _g1[_g];\n\t\t\t++_g;\n\t\t\tvar xrf = resultMap[key];\n\t\t\tif(!xrf.is(xrfragment_XRF.BROWSER_OVERRIDE)) {\n\t\t\t\tReflect.deleteField(resultMap,key);\n\t\t\t}\n\t\t}\n\t}\n\treturn resultMap;\n};\nvar xrfragment_XRF = function(_fragment,_flags) {\n\tthis.fragment = _fragment;\n\tthis.flags = _flags;\n};\nxrfragment_XRF.__name__ = true;\nxrfragment_XRF.prototype = {\n\tis: function(flag) {\n\t\treturn (this.flags & flag) != 0;\n\t}\n\t,validate: function(value) {\n\t\tthis.guessType(this,value);\n\t\tif(value.split(\"|\").length > 1) {\n\t\t\tthis.args = [];\n\t\t\tvar args = value.split(\"|\");\n\t\t\tvar _g = 0;\n\t\t\tvar _g1 = args.length;\n\t\t\twhile(_g \u003C _g1) {\n\t\t\t\tvar i = _g++;\n\t\t\t\tvar x = new xrfragment_XRF(this.fragment,this.flags);\n\t\t\t\tthis.guessType(x,args[i]);\n\t\t\t\tthis.args.push(x);\n\t\t\t}\n\t\t}\n\t\tif(this.fragment == \"q\") {\n\t\t\tthis.query = new xrfragment_Query(value).get();\n\t\t}\n\t\tvar ok = true;\n\t\tif(!((this.args) instanceof Array)) {\n\t\t\tif(this.is(xrfragment_XRF.T_VECTOR3) && !(typeof(this.x) == \"number\" && typeof(this.y) == \"number\" && typeof(this.z) == \"number\")) {\n\t\t\t\tok = false;\n\t\t\t}\n\t\t\tif(this.is(xrfragment_XRF.T_VECTOR2) && !(typeof(this.x) == \"number\" && typeof(this.y) == \"number\")) {\n\t\t\t\tok = false;\n\t\t\t}\n\t\t\tvar tmp;\n\t\t\tif(this.is(xrfragment_XRF.T_INT)) {\n\t\t\t\tvar v = this.int;\n\t\t\t\ttmp = !(typeof(v) == \"number\" && ((v | 0) === v));\n\t\t\t} else {\n\t\t\t\ttmp = false;\n\t\t\t}\n\t\t\tif(tmp) {\n\t\t\t\tok = false;\n\t\t\t}\n\t\t}\n\t\treturn ok;\n\t}\n\t,guessType: function(v,str) {\n\t\tv.string = str;\n\t\tif(str.split(\",\").length > 1) {\n\t\t\tvar xyz = str.split(\",\");\n\t\t\tif(xyz.length > 0) {\n\t\t\t\tv.x = parseFloat(xyz[0]);\n\t\t\t}\n\t\t\tif(xyz.length > 1) {\n\t\t\t\tv.y = parseFloat(xyz[1]);\n\t\t\t}\n\t\t\tif(xyz.length > 2) {\n\t\t\t\tv.z = parseFloat(xyz[2]);\n\t\t\t}\n\t\t}\n\t\tif(xrfragment_XRF.isColor.match(str)) {\n\t\t\tv.color = str;\n\t\t}\n\t\tif(xrfragment_XRF.isFloat.match(str)) {\n\t\t\tv.float = parseFloat(str);\n\t\t}\n\t\tif(xrfragment_XRF.isInt.match(str)) {\n\t\t\tv.int = Std.parseInt(str);\n\t\t}\n\t}\n};\nif(typeof(performance) != \"undefined\" ? typeof(performance.now) == \"function\" : false) {\n\tHxOverrides.now = performance.now.bind(performance);\n}\nString.__name__ = true;\nArray.__name__ = true;\njs_Boot.__toStr = ({ }).toString;\nxrfragment_Parser.error = \"\";\nxrfragment_XRF.ASSET = 1;\nxrfragment_XRF.PROP_BIND = 2;\nxrfragment_XRF.QUERY_OPERATOR = 4;\nxrfragment_XRF.PROMPT = 8;\nxrfragment_XRF.ROUNDROBIN = 16;\nxrfragment_XRF.BROWSER_OVERRIDE = 32;\nxrfragment_XRF.PV_OVERRIDE = 64;\nxrfragment_XRF.PV_EXECUTE = 128;\nxrfragment_XRF.T_INT = 512;\nxrfragment_XRF.T_VECTOR2 = 2048;\nxrfragment_XRF.T_VECTOR3 = 4096;\nxrfragment_XRF.T_URL = 8192;\nxrfragment_XRF.T_PREDEFINED_VIEW = 16384;\nxrfragment_XRF.T_STRING = 32768;\nxrfragment_XRF.T_STRING_OBJ = 65536;\nxrfragment_XRF.isColor = new EReg(\"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$\",\"\");\nxrfragment_XRF.isInt = new EReg(\"^[0-9]+$\",\"\");\nxrfragment_XRF.isFloat = new EReg(\"^[0-9]+\\\\.[0-9]+$\",\"\");\n})({});\nvar xrfragment = $hx_exports[\"xrfragment\"];\n\n\u003C/script>","tags":"$:/tags/RawMarkup","title":"$:/xrfragment/xrfragment.js","modified":"20230427155406561"}, +{"created":"20230427155228509","text":"\n\u003C!-- dist/xrfragment.js -->\n\u003Cscript>\nvar $hx_exports = typeof exports != \"undefined\" ? exports : typeof window != \"undefined\" ? window : typeof self != \"undefined\" ? self : this;\n(function ($global) { \"use strict\";\n$hx_exports[\"xrfragment\"] = $hx_exports[\"xrfragment\"] || {};\nvar EReg = function(r,opt) {\n\tthis.r = new RegExp(r,opt.split(\"u\").join(\"\"));\n};\nEReg.__name__ = true;\nEReg.prototype = {\n\tmatch: function(s) {\n\t\tif(this.r.global) {\n\t\t\tthis.r.lastIndex = 0;\n\t\t}\n\t\tthis.r.m = this.r.exec(s);\n\t\tthis.r.s = s;\n\t\treturn this.r.m != null;\n\t}\n\t,split: function(s) {\n\t\tvar d = \"#__delim__#\";\n\t\treturn s.replace(this.r,d).split(d);\n\t}\n};\nvar HxOverrides = function() { };\nHxOverrides.__name__ = true;\nHxOverrides.cca = function(s,index) {\n\tvar x = s.charCodeAt(index);\n\tif(x != x) {\n\t\treturn undefined;\n\t}\n\treturn x;\n};\nHxOverrides.substr = function(s,pos,len) {\n\tif(len == null) {\n\t\tlen = s.length;\n\t} else if(len \u003C 0) {\n\t\tif(pos == 0) {\n\t\t\tlen = s.length + len;\n\t\t} else {\n\t\t\treturn \"\";\n\t\t}\n\t}\n\treturn s.substr(pos,len);\n};\nHxOverrides.now = function() {\n\treturn Date.now();\n};\nMath.__name__ = true;\nvar Reflect = function() { };\nReflect.__name__ = true;\nReflect.field = function(o,field) {\n\ttry {\n\t\treturn o[field];\n\t} catch( _g ) {\n\t\treturn null;\n\t}\n};\nReflect.fields = function(o) {\n\tvar a = [];\n\tif(o != null) {\n\t\tvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\t\tfor( var f in o ) {\n\t\tif(f != \"__id__\" && f != \"hx__closures__\" && hasOwnProperty.call(o,f)) {\n\t\t\ta.push(f);\n\t\t}\n\t\t}\n\t}\n\treturn a;\n};\nReflect.deleteField = function(o,field) {\n\tif(!Object.prototype.hasOwnProperty.call(o,field)) {\n\t\treturn false;\n\t}\n\tdelete(o[field]);\n\treturn true;\n};\nvar Std = function() { };\nStd.__name__ = true;\nStd.string = function(s) {\n\treturn js_Boot.__string_rec(s,\"\");\n};\nStd.parseInt = function(x) {\n\tif(x != null) {\n\t\tvar _g = 0;\n\t\tvar _g1 = x.length;\n\t\twhile(_g \u003C _g1) {\n\t\t\tvar i = _g++;\n\t\t\tvar c = x.charCodeAt(i);\n\t\t\tif(c \u003C= 8 || c >= 14 && c != 32 && c != 45) {\n\t\t\t\tvar nc = x.charCodeAt(i + 1);\n\t\t\t\tvar v = parseInt(x,nc == 120 || nc == 88 ? 16 : 10);\n\t\t\t\tif(isNaN(v)) {\n\t\t\t\t\treturn null;\n\t\t\t\t} else {\n\t\t\t\t\treturn v;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n};\nvar StringTools = function() { };\nStringTools.__name__ = true;\nStringTools.isSpace = function(s,pos) {\n\tvar c = HxOverrides.cca(s,pos);\n\tif(!(c > 8 && c \u003C 14)) {\n\t\treturn c == 32;\n\t} else {\n\t\treturn true;\n\t}\n};\nStringTools.ltrim = function(s) {\n\tvar l = s.length;\n\tvar r = 0;\n\twhile(r \u003C l && StringTools.isSpace(s,r)) ++r;\n\tif(r > 0) {\n\t\treturn HxOverrides.substr(s,r,l - r);\n\t} else {\n\t\treturn s;\n\t}\n};\nStringTools.rtrim = function(s) {\n\tvar l = s.length;\n\tvar r = 0;\n\twhile(r \u003C l && StringTools.isSpace(s,l - r - 1)) ++r;\n\tif(r > 0) {\n\t\treturn HxOverrides.substr(s,0,l - r);\n\t} else {\n\t\treturn s;\n\t}\n};\nStringTools.trim = function(s) {\n\treturn StringTools.ltrim(StringTools.rtrim(s));\n};\nStringTools.replace = function(s,sub,by) {\n\treturn s.split(sub).join(by);\n};\nvar haxe_iterators_ArrayIterator = function(array) {\n\tthis.current = 0;\n\tthis.array = array;\n};\nhaxe_iterators_ArrayIterator.__name__ = true;\nhaxe_iterators_ArrayIterator.prototype = {\n\thasNext: function() {\n\t\treturn this.current \u003C this.array.length;\n\t}\n\t,next: function() {\n\t\treturn this.array[this.current++];\n\t}\n};\nvar js_Boot = function() { };\njs_Boot.__name__ = true;\njs_Boot.__string_rec = function(o,s) {\n\tif(o == null) {\n\t\treturn \"null\";\n\t}\n\tif(s.length >= 5) {\n\t\treturn \"\u003C...>\";\n\t}\n\tvar t = typeof(o);\n\tif(t == \"function\" && (o.__name__ || o.__ename__)) {\n\t\tt = \"object\";\n\t}\n\tswitch(t) {\n\tcase \"function\":\n\t\treturn \"\u003Cfunction>\";\n\tcase \"object\":\n\t\tif(((o) instanceof Array)) {\n\t\t\tvar str = \"[\";\n\t\t\ts += \"\\t\";\n\t\t\tvar _g = 0;\n\t\t\tvar _g1 = o.length;\n\t\t\twhile(_g \u003C _g1) {\n\t\t\t\tvar i = _g++;\n\t\t\t\tstr += (i > 0 ? \",\" : \"\") + js_Boot.__string_rec(o[i],s);\n\t\t\t}\n\t\t\tstr += \"]\";\n\t\t\treturn str;\n\t\t}\n\t\tvar tostr;\n\t\ttry {\n\t\t\ttostr = o.toString;\n\t\t} catch( _g ) {\n\t\t\treturn \"???\";\n\t\t}\n\t\tif(tostr != null && tostr != Object.toString && typeof(tostr) == \"function\") {\n\t\t\tvar s2 = o.toString();\n\t\t\tif(s2 != \"[object Object]\") {\n\t\t\t\treturn s2;\n\t\t\t}\n\t\t}\n\t\tvar str = \"{\\n\";\n\t\ts += \"\\t\";\n\t\tvar hasp = o.hasOwnProperty != null;\n\t\tvar k = null;\n\t\tfor( k in o ) {\n\t\tif(hasp && !o.hasOwnProperty(k)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif(k == \"prototype\" || k == \"__class__\" || k == \"__super__\" || k == \"__interfaces__\" || k == \"__properties__\") {\n\t\t\tcontinue;\n\t\t}\n\t\tif(str.length != 2) {\n\t\t\tstr += \", \\n\";\n\t\t}\n\t\tstr += s + k + \" : \" + js_Boot.__string_rec(o[k],s);\n\t\t}\n\t\ts = s.substring(1);\n\t\tstr += \"\\n\" + s + \"}\";\n\t\treturn str;\n\tcase \"string\":\n\t\treturn o;\n\tdefault:\n\t\treturn String(o);\n\t}\n};\nvar xrfragment_Parser = $hx_exports[\"xrfragment\"][\"Parser\"] = function() { };\nxrfragment_Parser.__name__ = true;\nxrfragment_Parser.parse = function(key,value,resultMap) {\n\tvar Frag_h = Object.create(null);\n\tFrag_h[\"prio\"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_INT;\n\tFrag_h[\"#\"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_PREDEFINED_VIEW;\n\tFrag_h[\"class\"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;\n\tFrag_h[\"src\"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_URL;\n\tFrag_h[\"pos\"] = xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.ROUNDROBIN | xrfragment_XRF.T_VECTOR3 | xrfragment_XRF.T_STRING_OBJ;\n\tFrag_h[\"href\"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_URL | xrfragment_XRF.T_PREDEFINED_VIEW;\n\tFrag_h[\"q\"] = xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_STRING;\n\tFrag_h[\"scale\"] = xrfragment_XRF.QUERY_OPERATOR | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.ROUNDROBIN | xrfragment_XRF.T_INT;\n\tFrag_h[\"rot\"] = xrfragment_XRF.QUERY_OPERATOR | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.ROUNDROBIN | xrfragment_XRF.T_VECTOR3;\n\tFrag_h[\"translate\"] = xrfragment_XRF.QUERY_OPERATOR | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.ROUNDROBIN | xrfragment_XRF.T_VECTOR3;\n\tFrag_h[\"visible\"] = xrfragment_XRF.QUERY_OPERATOR | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.ROUNDROBIN | xrfragment_XRF.T_INT;\n\tFrag_h[\"env\"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_STRING;\n\tFrag_h[\"t\"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.ROUNDROBIN | xrfragment_XRF.T_VECTOR2 | xrfragment_XRF.BROWSER_OVERRIDE;\n\tFrag_h[\"gravity\"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR3;\n\tFrag_h[\"physics\"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR3;\n\tFrag_h[\"fov\"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_INT | xrfragment_XRF.BROWSER_OVERRIDE;\n\tFrag_h[\"clip\"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_VECTOR2 | xrfragment_XRF.BROWSER_OVERRIDE;\n\tFrag_h[\"fog\"] = xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_STRING | xrfragment_XRF.BROWSER_OVERRIDE;\n\tFrag_h[\"namespace\"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;\n\tFrag_h[\"SPDX\"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;\n\tFrag_h[\"unit\"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;\n\tFrag_h[\"description\"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_STRING;\n\tFrag_h[\"session\"] = xrfragment_XRF.ASSET | xrfragment_XRF.T_URL | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.BROWSER_OVERRIDE | xrfragment_XRF.PROMPT;\n\tif(value.length == 0 && !Object.prototype.hasOwnProperty.call(Frag_h,key)) {\n\t\tresultMap[key] = new xrfragment_XRF(key,xrfragment_XRF.PV_EXECUTE | xrfragment_XRF.BROWSER_OVERRIDE);\n\t\treturn true;\n\t}\n\tif(key.split(\".\").length > 1 && value.split(\".\").length > 1) {\n\t\tresultMap[key] = new xrfragment_XRF(key,xrfragment_XRF.ASSET | xrfragment_XRF.PV_OVERRIDE | xrfragment_XRF.T_STRING | xrfragment_XRF.PROP_BIND);\n\t\treturn true;\n\t}\n\tif(Object.prototype.hasOwnProperty.call(Frag_h,key)) {\n\t\tvar v = new xrfragment_XRF(key,Frag_h[key]);\n\t\tif(!v.validate(value)) {\n\t\t\tconsole.log(\"src/xrfragment/Parser.hx:74:\",\"[ i ] fragment '\" + key + \"' has incompatible value (\" + value + \")\");\n\t\t\treturn false;\n\t\t}\n\t\tresultMap[key] = v;\n\t} else {\n\t\tconsole.log(\"src/xrfragment/Parser.hx:78:\",\"[ i ] fragment '\" + key + \"' does not exist or has no type typed (yet)\");\n\t\treturn false;\n\t}\n\treturn true;\n};\nvar xrfragment_Query = $hx_exports[\"xrfragment\"][\"Query\"] = function(str) {\n\tthis.isNumber = new EReg(\"^[0-9\\\\.]+$\",\"\");\n\tthis.isClass = new EReg(\"^[-]?class$\",\"\");\n\tthis.isExclude = new EReg(\"^-\",\"\");\n\tthis.isProp = new EReg(\"^.*:[>\u003C=!]?\",\"\");\n\tthis.q = { };\n\tthis.str = \"\";\n\tif(str != null) {\n\t\tthis.parse(str);\n\t}\n};\nxrfragment_Query.__name__ = true;\nxrfragment_Query.prototype = {\n\ttoObject: function() {\n\t\treturn this.q;\n\t}\n\t,expandAliases: function(token) {\n\t\tvar classAlias = new EReg(\"^(-)?\\\\.\",\"\");\n\t\tif(classAlias.match(token)) {\n\t\t\treturn StringTools.replace(token,\".\",\"class:\");\n\t\t} else {\n\t\t\treturn token;\n\t\t}\n\t}\n\t,get: function() {\n\t\treturn this.q;\n\t}\n\t,parse: function(str,recurse) {\n\t\tif(recurse == null) {\n\t\t\trecurse = false;\n\t\t}\n\t\tvar _gthis = this;\n\t\tvar token = str.split(\" \");\n\t\tvar q = { };\n\t\tvar process = function(str,prefix) {\n\t\t\tif(prefix == null) {\n\t\t\t\tprefix = \"\";\n\t\t\t}\n\t\t\tstr = StringTools.trim(str);\n\t\t\tvar k = str.split(\":\")[0];\n\t\t\tvar v = str.split(\":\")[1];\n\t\t\tvar filter = { };\n\t\t\tif(q[prefix + k]) {\n\t\t\t\tfilter = q[prefix + k];\n\t\t\t}\n\t\t\tfilter[\"rules\"] = filter[\"rules\"] != null ? filter[\"rules\"] : [];\n\t\t\tif(_gthis.isProp.match(str)) {\n\t\t\t\tvar oper = \"\";\n\t\t\t\tif(str.indexOf(\"*\") != -1) {\n\t\t\t\t\toper = \"*\";\n\t\t\t\t}\n\t\t\t\tif(str.indexOf(\">\") != -1) {\n\t\t\t\t\toper = \">\";\n\t\t\t\t}\n\t\t\t\tif(str.indexOf(\"\u003C\") != -1) {\n\t\t\t\t\toper = \"\u003C\";\n\t\t\t\t}\n\t\t\t\tif(str.indexOf(\">=\") != -1) {\n\t\t\t\t\toper = \">=\";\n\t\t\t\t}\n\t\t\t\tif(str.indexOf(\"\u003C=\") != -1) {\n\t\t\t\t\toper = \"\u003C=\";\n\t\t\t\t}\n\t\t\t\tif(_gthis.isExclude.match(k)) {\n\t\t\t\t\toper = \"!=\";\n\t\t\t\t\tk = HxOverrides.substr(k,1,null);\n\t\t\t\t} else {\n\t\t\t\t\tv = HxOverrides.substr(v,oper.length,null);\n\t\t\t\t}\n\t\t\t\tif(oper.length == 0) {\n\t\t\t\t\toper = \"=\";\n\t\t\t\t}\n\t\t\t\tif(_gthis.isClass.match(k)) {\n\t\t\t\t\tfilter[prefix + k] = oper != \"!=\";\n\t\t\t\t\tq[v] = filter;\n\t\t\t\t} else {\n\t\t\t\t\tvar rule = { };\n\t\t\t\t\tif(_gthis.isNumber.match(v)) {\n\t\t\t\t\t\trule[oper] = parseFloat(v);\n\t\t\t\t\t} else {\n\t\t\t\t\t\trule[oper] = v;\n\t\t\t\t\t}\n\t\t\t\t\tfilter[\"rules\"].push(rule);\n\t\t\t\t\tq[k] = filter;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tfilter[\"id\"] = _gthis.isExclude.match(str) ? false : true;\n\t\t\t\tvar key = _gthis.isExclude.match(str) ? HxOverrides.substr(str,1,null) : str;\n\t\t\t\tq[key] = filter;\n\t\t\t}\n\t\t};\n\t\tvar _g = 0;\n\t\tvar _g1 = token.length;\n\t\twhile(_g \u003C _g1) {\n\t\t\tvar i = _g++;\n\t\t\tprocess(this.expandAliases(token[i]));\n\t\t}\n\t\treturn this.q = q;\n\t}\n\t,test: function(obj) {\n\t\tvar qualify = false;\n\t\tvar _g = 0;\n\t\tvar _g1 = Reflect.fields(obj);\n\t\twhile(_g \u003C _g1.length) {\n\t\t\tvar k = _g1[_g];\n\t\t\t++_g;\n\t\t\tvar v = Std.string(Reflect.field(obj,k));\n\t\t\tif(this.testProperty(k,v)) {\n\t\t\t\tqualify = true;\n\t\t\t}\n\t\t}\n\t\tvar _g = 0;\n\t\tvar _g1 = Reflect.fields(obj);\n\t\twhile(_g \u003C _g1.length) {\n\t\t\tvar k = _g1[_g];\n\t\t\t++_g;\n\t\t\tvar v = Std.string(Reflect.field(obj,k));\n\t\t\tif(this.testProperty(k,v,true)) {\n\t\t\t\tqualify = false;\n\t\t\t}\n\t\t}\n\t\treturn qualify;\n\t}\n\t,testProperty: function(property,value,exclude) {\n\t\tvar conds = 0;\n\t\tvar fails = 0;\n\t\tvar qualify = 0;\n\t\tvar testprop = function(expr) {\n\t\t\tconds += 1;\n\t\t\tfails += expr ? 0 : 1;\n\t\t\treturn expr;\n\t\t};\n\t\tif(this.q[value] != null) {\n\t\t\tvar v = this.q[value];\n\t\t\tif(v[property] != null) {\n\t\t\t\treturn v[property];\n\t\t\t}\n\t\t}\n\t\tvar _g = 0;\n\t\tvar _g1 = Reflect.fields(this.q);\n\t\twhile(_g \u003C _g1.length) {\n\t\t\tvar k = _g1[_g];\n\t\t\t++_g;\n\t\t\tvar filter = Reflect.field(this.q,k);\n\t\t\tif(filter.rules == null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvar rules = filter.rules;\n\t\t\tvar _g2 = 0;\n\t\t\twhile(_g2 \u003C rules.length) {\n\t\t\t\tvar rule = rules[_g2];\n\t\t\t\t++_g2;\n\t\t\t\tif(exclude) {\n\t\t\t\t\tif(Reflect.field(rule,\"!=\") != null && testprop((value == null ? \"null\" : \"\" + value) == Std.string(Reflect.field(rule,\"!=\"))) && exclude) {\n\t\t\t\t\t\t++qualify;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif(Reflect.field(rule,\"*\") != null && testprop(parseFloat(value) != null)) {\n\t\t\t\t\t\t++qualify;\n\t\t\t\t\t}\n\t\t\t\t\tif(Reflect.field(rule,\">\") != null && testprop(parseFloat(value) > parseFloat(Reflect.field(rule,\">\")))) {\n\t\t\t\t\t\t++qualify;\n\t\t\t\t\t}\n\t\t\t\t\tif(Reflect.field(rule,\"\u003C\") != null && testprop(parseFloat(value) \u003C parseFloat(Reflect.field(rule,\"\u003C\")))) {\n\t\t\t\t\t\t++qualify;\n\t\t\t\t\t}\n\t\t\t\t\tif(Reflect.field(rule,\">=\") != null && testprop(parseFloat(value) >= parseFloat(Reflect.field(rule,\">=\")))) {\n\t\t\t\t\t\t++qualify;\n\t\t\t\t\t}\n\t\t\t\t\tif(Reflect.field(rule,\"\u003C=\") != null && testprop(parseFloat(value) \u003C= parseFloat(Reflect.field(rule,\"\u003C=\")))) {\n\t\t\t\t\t\t++qualify;\n\t\t\t\t\t}\n\t\t\t\t\tif(Reflect.field(rule,\"=\") != null && (testprop(value == Reflect.field(rule,\"=\")) || testprop(parseFloat(value) == parseFloat(Reflect.field(rule,\"=\"))))) {\n\t\t\t\t\t\t++qualify;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn qualify > 0;\n\t}\n};\nvar xrfragment_URI = $hx_exports[\"xrfragment\"][\"URI\"] = function() { };\nxrfragment_URI.__name__ = true;\nxrfragment_URI.parse = function(qs,browser_override) {\n\tvar fragment = qs.split(\"#\");\n\tvar splitArray = fragment[1].split(\"&\");\n\tvar resultMap = { };\n\tvar _g = 0;\n\tvar _g1 = splitArray.length;\n\twhile(_g \u003C _g1) {\n\t\tvar i = _g++;\n\t\tvar splitByEqual = splitArray[i].split(\"=\");\n\t\tvar regexPlus = new EReg(\"\\\\+\",\"g\");\n\t\tvar key = splitByEqual[0];\n\t\tvar value = \"\";\n\t\tif(splitByEqual.length > 1) {\n\t\t\tvar s = regexPlus.split(splitByEqual[1]).join(\" \");\n\t\t\tvalue = decodeURIComponent(s.split(\"+\").join(\" \"));\n\t\t}\n\t\tvar ok = xrfragment_Parser.parse(key,value,resultMap);\n\t}\n\tif(browser_override) {\n\t\tvar _g = 0;\n\t\tvar _g1 = Reflect.fields(resultMap);\n\t\twhile(_g \u003C _g1.length) {\n\t\t\tvar key = _g1[_g];\n\t\t\t++_g;\n\t\t\tvar xrf = resultMap[key];\n\t\t\tif(!xrf.is(xrfragment_XRF.BROWSER_OVERRIDE)) {\n\t\t\t\tReflect.deleteField(resultMap,key);\n\t\t\t}\n\t\t}\n\t}\n\treturn resultMap;\n};\nvar xrfragment_XRF = $hx_exports[\"xrfragment\"][\"XRF\"] = function(_fragment,_flags) {\n\tthis.fragment = _fragment;\n\tthis.flags = _flags;\n};\nxrfragment_XRF.__name__ = true;\nxrfragment_XRF.set = function(flag,flags) {\n\treturn flags | flag;\n};\nxrfragment_XRF.unset = function(flag,flags) {\n\treturn flags & ~flag;\n};\nxrfragment_XRF.prototype = {\n\tis: function(flag) {\n\t\treturn (this.flags & flag) != 0;\n\t}\n\t,validate: function(value) {\n\t\tthis.guessType(this,value);\n\t\tif(value.split(\"|\").length > 1) {\n\t\t\tthis.args = [];\n\t\t\tvar args = value.split(\"|\");\n\t\t\tvar _g = 0;\n\t\t\tvar _g1 = args.length;\n\t\t\twhile(_g \u003C _g1) {\n\t\t\t\tvar i = _g++;\n\t\t\t\tvar x = new xrfragment_XRF(this.fragment,this.flags);\n\t\t\t\tthis.guessType(x,args[i]);\n\t\t\t\tthis.args.push(x);\n\t\t\t}\n\t\t}\n\t\tif(this.fragment == \"q\") {\n\t\t\tthis.query = new xrfragment_Query(value).get();\n\t\t}\n\t\tvar ok = true;\n\t\tif(!((this.args) instanceof Array)) {\n\t\t\tif(this.is(xrfragment_XRF.T_VECTOR3) && !(typeof(this.x) == \"number\" && typeof(this.y) == \"number\" && typeof(this.z) == \"number\")) {\n\t\t\t\tok = false;\n\t\t\t}\n\t\t\tif(this.is(xrfragment_XRF.T_VECTOR2) && !(typeof(this.x) == \"number\" && typeof(this.y) == \"number\")) {\n\t\t\t\tok = false;\n\t\t\t}\n\t\t\tvar tmp;\n\t\t\tif(this.is(xrfragment_XRF.T_INT)) {\n\t\t\t\tvar v = this.int;\n\t\t\t\ttmp = !(typeof(v) == \"number\" && ((v | 0) === v));\n\t\t\t} else {\n\t\t\t\ttmp = false;\n\t\t\t}\n\t\t\tif(tmp) {\n\t\t\t\tok = false;\n\t\t\t}\n\t\t}\n\t\treturn ok;\n\t}\n\t,guessType: function(v,str) {\n\t\tv.string = str;\n\t\tif(str.split(\",\").length > 1) {\n\t\t\tvar xyz = str.split(\",\");\n\t\t\tif(xyz.length > 0) {\n\t\t\t\tv.x = parseFloat(xyz[0]);\n\t\t\t}\n\t\t\tif(xyz.length > 1) {\n\t\t\t\tv.y = parseFloat(xyz[1]);\n\t\t\t}\n\t\t\tif(xyz.length > 2) {\n\t\t\t\tv.z = parseFloat(xyz[2]);\n\t\t\t}\n\t\t}\n\t\tif(xrfragment_XRF.isColor.match(str)) {\n\t\t\tv.color = str;\n\t\t}\n\t\tif(xrfragment_XRF.isFloat.match(str)) {\n\t\t\tv.float = parseFloat(str);\n\t\t}\n\t\tif(xrfragment_XRF.isInt.match(str)) {\n\t\t\tv.int = Std.parseInt(str);\n\t\t}\n\t}\n};\nif(typeof(performance) != \"undefined\" ? typeof(performance.now) == \"function\" : false) {\n\tHxOverrides.now = performance.now.bind(performance);\n}\nString.__name__ = true;\nArray.__name__ = true;\njs_Boot.__toStr = ({ }).toString;\nxrfragment_Parser.error = \"\";\nxrfragment_XRF.ASSET = 1;\nxrfragment_XRF.PROP_BIND = 2;\nxrfragment_XRF.QUERY_OPERATOR = 4;\nxrfragment_XRF.PROMPT = 8;\nxrfragment_XRF.ROUNDROBIN = 16;\nxrfragment_XRF.BROWSER_OVERRIDE = 32;\nxrfragment_XRF.PV_OVERRIDE = 64;\nxrfragment_XRF.PV_EXECUTE = 128;\nxrfragment_XRF.T_COLOR = 256;\nxrfragment_XRF.T_INT = 512;\nxrfragment_XRF.T_FLOAT = 1024;\nxrfragment_XRF.T_VECTOR2 = 2048;\nxrfragment_XRF.T_VECTOR3 = 4096;\nxrfragment_XRF.T_URL = 8192;\nxrfragment_XRF.T_PREDEFINED_VIEW = 16384;\nxrfragment_XRF.T_STRING = 32768;\nxrfragment_XRF.T_STRING_OBJ = 65536;\nxrfragment_XRF.T_STRING_OBJ_PROP = 131072;\nxrfragment_XRF.isColor = new EReg(\"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$\",\"\");\nxrfragment_XRF.isInt = new EReg(\"^[0-9]+$\",\"\");\nxrfragment_XRF.isFloat = new EReg(\"^[0-9]+\\\\.[0-9]+$\",\"\");\nxrfragment_XRF.isVector = new EReg(\"([,]+|\\\\w)\",\"\");\nxrfragment_XRF.isUrl = new EReg(\"(://)?\\\\..*\",\"\");\nxrfragment_XRF.isUrlOrPretypedView = new EReg(\"(^#|://)?\\\\..*\",\"\");\nxrfragment_XRF.isString = new EReg(\".*\",\"\");\n})({});\nvar xrfragment = $hx_exports[\"xrfragment\"];\n\n\u003C/script>","tags":"$:/tags/RawMarkup","title":"$:/xrfragment/xrfragment.js","modified":"20230427210541833"}, {"created":"20230424093140723","text":"\u003C\u003Cscript>> \u003C!-- enables script-tag -->\n\n\u003Cdiv class=\"scene\">\n\t\u003Ca-scene embedded>\n\t\t\u003Ca-box position=\"-1 0.5 -3\" rotation=\"0 45 0\" color=\"#4CC3D9\">\u003C/a-box>\n\t\t\u003Ca-sphere position=\"0 1.25 -5\" radius=\"1.25\" color=\"#EF2D5E\">\u003C/a-sphere>\n\t\t\u003Ca-cylinder position=\"1 0.75 -3\" radius=\"0.5\" height=\"1.5\" color=\"#FFC65D\">\u003C/a-cylinder>\n\t\t\u003Ca-plane position=\"0 0 -4\" rotation=\"-90 0 0\" width=\"4\" height=\"4\" color=\"#7BC8A4\">\u003C/a-plane>\n\t\t\u003Ca-sky color=\"#444\">\u003C/a-sky>\n\t\u003C/a-scene>\n\u003C/div>\n\n\u003Cscript>\n(function(){\n\t\n\tlog(\"hello world\")\n let $scene = $('a-scene')\n\t\n $scene.addEventListener('loaded', () => {\n\t\t$scene.renderer.render = ( (render) => ( scene, cam ) => {\n \t\trender(scene,cam)\t\n\t\t\tif( !$scene.renderer ) return log(\"no renderer\")\n\t\t\tlet info = $scene.renderer.info.render\n\t\t\tlog(\"frame : \" + info.frame,2)\n\t\t\tlog(\"triangle: \" + info.triangles,4)\n\t\t\tlog(\"calls : \" + info.calls,3)\t\t\n\t\t})($scene.renderer.render.bind($scene.renderer) )\n })\t\n\t\n})()\n\u003C/script>","tags":"AFRAME VR THREE WebXR","title":"AFRAME template","modified":"20230427103455960","type":"text/vnd.tiddlywiki"}, -{"modified":"20230427204137692","title":"Draft of 'List of fragments'"}, {"created":"20230427151153103","text":"\u003C\u003Ctoc-selective-expandable 'Examples' sort[title]>>","tags":"$:/tags/SideBar","title":"Examples","modified":"20230427152839062","list-after":"Reference"}, {"created":"20230427124155325","text":"\u003Ciframe src=\"./example/explorer.html#t=1,100\" frameborder=\"0\" style=\"width:100%; height:90vh\"/>","tags":"Examples","title":"Fragment Explorer","modified":"20230427155205004"}, {"created":"20230425160210102","text":"\u003Cshader-doodle>\n \u003Csd-node name=\"motionblur\" prevbuffer>\n \u003Csd-node name=\"rotate\">\n \u003Csd-node name=\"basic_gl\">\n \u003Cscript type=\"x-shader/x-fragment\">\n void main() {\n vec2 st = gl_FragCoord.xy / u_resolution.xy;\n vec3 color = vec3(st.x, st.y, abs(sin(u_time)));\n\n gl_FragColor = vec4(color, 1.);\n }\n \u003C/script>\n \u003C/sd-node>\n \u003Cscript type=\"x-shader/x-fragment\">\n uniform sampler2D basic_gl;\n\n const float PI = 3.1415926;\n\n void main() {\n vec2 st = gl_FragCoord.xy / u_resolution.xy;\n\n float angle = 2. * PI * (.5 + .5 * cos(u_time));\n float scale = .7 + .4 * cos(u_time);\n\n mat2 rotation = mat2(cos(angle), -sin(angle), sin(angle), cos(angle));\n vec2 p = (st - vec2(.5)) * rotation / scale + vec2(.5);\n\n gl_FragColor = p.x \u003C 0. || p.x > 1. || p.y \u003C 0. || p.y > 1.\n ? vec4(0., 0., 0., 1.)\n : texture2D(basic_gl, p);\n }\n \u003C/script>\n \u003C/sd-node>\n \u003Cscript type=\"x-shader/x-fragment\">\n uniform sampler2D rotate, u_prevbuffer;\n\n void main () {\n vec2 st = gl_FragCoord.xy / u_resolution.xy;\n gl_FragColor = vec4(mix(\n texture2D(rotate, st),\n texture2D(u_prevbuffer, st),\n .8\n ).rgb, 1.);\n }\n \u003C/script>\n \u003C/sd-node>\n \u003Cscript type=\"x-shader/x-fragment\">\n uniform sampler2D motionblur;\n\n void main() {\n vec2 st = gl_FragCoord.xy / u_resolution.xy;\n gl_FragColor = texture2D(motionblur, st);\n }\n \u003C/script>\n\u003C/shader-doodle>","tags":"GLSL","title":"GLSL template","modified":"20230425170513931","type":"text/vnd.tiddlywiki"}, -{"created":"20230427172131986","text":"| fragment | type | scope |\n|----------|------|-------|\n| **prio** |int|asset loading linking|\n| **#** |[predefined view](#prefined%20view)|asset loading linking|\n| **class** |string|asset loading linking|\n| **src** |[url](#url)|asset loading linking|\n| **pos** |[vector3](#vector3)|href navigation / portals / teleporting|\n| **href** |[predefined view](#prefined%20view)|href navigation / portals / teleporting|\n| **q** |string|query selector / object manipulation|\n| **scale** |int|query selector / object manipulation|\n| **rot** |[vector3](#vector3)|query selector / object manipulation|\n| **translate** |[vector3](#vector3)|query selector / object manipulation|\n| **visible** |int|query selector / object manipulation|\n| **env** |string|query selector / object manipulation|\n| **t** |[vector2](#vector2)|animation|\n| **gravity** |[vector3](#vector3)|animation|\n| **physics** |[vector3](#vector3)|animation|\n| **fov** |int|device / viewport settings|\n| **clip** |[vector2](#vector2)|device / viewport settings|\n| **fog** |string|device / viewport settings|\n| **namespace** |string|author / metadata|\n| **SPDX** |string|author / metadata|\n| **unit** |string|author / metadata|\n| **description** |string|author / metadata|\n| **session** |[url](#url)|multiparty|\n","tags":"Reference","title":"List of fragments","modified":"20230427204322544","type":"text/markdown"}, +{"created":"20230427172131986","text":"šŸŽ² = multiple values will be roundrobin'ed\u003Cbr>\nšŸ”’ = immutable value(s) are defined in 3D asset\u003Cbr>\nšŸ”“ = value(s) can be overwritten by [predefined_view](#predefined_view)\u003Cbr>\nšŸ‘© = value(s) can be overwritten by [URL browser_override](#browser_override)\u003Cbr>\nāœ‹? = value(s) can be overwritten only after confirmation of user\u003Cbr>\u003Cbr>\n| fragment | type | write access | scope |\n|----------|------|--------------|-------|\n| **prio** |int| šŸ”’|asset loading linking|\n| **#** |[predefined view](#predefined_view ) | šŸ”’|asset loading linking|\n| **class** |string| šŸ”’|asset loading linking|\n| **src** |[url](#url ) | šŸ”’|asset loading linking|\n| **pos** |[vector3](#vector ) | šŸŽ² šŸ”“|href navigation / portals / teleporting|\n| **href** |[predefined view](#predefined_view ) | šŸ”’|href navigation / portals / teleporting|\n| **q** |string| šŸ”“|query selector / object manipulation|\n| **scale** |int| šŸŽ² šŸ”“|query selector / object manipulation|\n| **rot** |[vector3](#vector ) | šŸŽ² šŸ”“|query selector / object manipulation|\n| **translate** |[vector3](#vector ) | šŸŽ² šŸ”“|query selector / object manipulation|\n| **visible** |int| šŸŽ² šŸ”“|query selector / object manipulation|\n| **env** |string| šŸ”’ šŸ”“|query selector / object manipulation|\n| **t** |[vector2](#vector ) | šŸŽ² šŸ”’ šŸ”“ šŸ‘©|animation|\n| **gravity** |[vector3](#vector ) | šŸ”’ šŸ”“|animation|\n| **physics** |[vector3](#vector ) | šŸ”’ šŸ”“|animation|\n| **fov** |int| šŸ”’ šŸ”“ šŸ‘©|device / viewport settings|\n| **clip** |[vector2](#vector ) | šŸ”’ šŸ”“ šŸ‘©|device / viewport settings|\n| **fog** |string| šŸ”’ šŸ”“ šŸ‘©|device / viewport settings|\n| **namespace** |string| šŸ”’|author / metadata|\n| **SPDX** |string| šŸ”’|author / metadata|\n| **unit** |string| šŸ”’|author / metadata|\n| **description** |string| šŸ”’|author / metadata|\n| **session** |[url](#url ) | šŸ”’ šŸ”“ šŸ‘© āœ‹?|multiparty|\n","tags":"Reference","title":"List of fragments","modified":"20230428111857282","type":"text/markdown"}, +{"created":"20230427205533684","text":"Just like with SVG fragments, predefined views are settings embedded in the asset, which can be triggered:\n\n* by default (the `#` custom property in the asset)\n* on-demand (by clicking a `href`-property with value `#my_view` e.g.)\n\nhere's an interactive examples:\n\n\u003Cdiv>\n \u003Ctextarea spellcheck=\"false\" autofocus class=\"sandboxify\">frags = xrfragment.URI.parse('#my_view&t=1,2')\nconsole.log( frags )\n\n\u003C/textarea>\n\t\u003Cpre class=\"result\">\u003C/pre>\n\u003C/div>\n","tags":"","title":"predefined_view","modified":"20230428110050202","type":"text/markdown"}, {"created":"20230427150512404","text":"\u003C\u003Ctoc-selective-expandable 'Reference' sort[title]>>","tags":"$:/tags/SideBar","title":"Reference","modified":"20230427151056587","list-before":"$:/core/ui/SideBar/Open"}, {"created":"20230426160615931","text":"\u003Cdiv class=\"scene\">\u003C/div>\n\n\u003C\u003Cscript>>\n\u003Cscript>\n $scene = document.querySelector(\".scene\")\n\tscene = new THREE.Scene();\n camera = new THREE.PerspectiveCamera( 75, $scene.offsetWidth / $scene.offsetHeight, 0.1, 1000 );\n\n\trenderer = new THREE.WebGLRenderer();\n renderer.setSize( $scene.offsetWidth, $scene.offsetHeight );\n $scene.appendChild( renderer.domElement );\n\t\n\tvar geometry = new THREE.BoxGeometry( 1, 1, 1 );\n\tvar material = new THREE.MeshBasicMaterial( { color: 0x0a84ff } );\n\tvar cube = new THREE.Mesh( geometry, material );\n\tscene.add( cube );\n\tscene.background = new THREE.Color( 0x18181c );\n\n\tcamera.position.z = 2;\n\n\tfunction animate() {\n\t\trequestAnimationFrame( animate );\n\n\t\tcube.rotation.x += 0.004;\n\t\tcube.rotation.y += 0.004;\n\n\t\trenderer.render( scene, camera );\n\t}\n\n\tanimate();\t\n\tlog(\"hello world\")\n\u003C/script>","title":"THREE template","modified":"20230427103421550","tags":"THREE WebXR"}, {"created":"20230425154949623","text":"\u003Cscript async src=\"https://unpkg.com/es-module-shims@1.6.3/dist/es-module-shims.js\">\u003C/script>\n\n\u003Cscript type=\"importmap\">\n{\n\t\"imports\": {\n\t\t\"three\": \"https://unpkg.com/three@0.151.3/build/three.module.js\",\n\t\t\t\"three/addons/\": \"https://unpkg.com/three@0.151.3/examples/jsm/\"\n\t}\n}\n\u003C/script>\n\n\u003Cscript type=\"module\">\nimport * as THREE from 'three';\n\nimport { BoxLineGeometry } from 'three/addons/geometries/BoxLineGeometry.js';\nimport { VRButton } from 'three/addons/webxr/VRButton.js';\nimport { XRControllerModelFactory } from 'three/addons/webxr/XRControllerModelFactory.js';\n\nlet camera, scene, raycaster, renderer;\nlet controller1, controller2;\nlet controllerGrip1, controllerGrip2;\n\nlet room, marker, floor, baseReferenceSpace;\n\nlet INTERSECTION;\nconst tempMatrix = new THREE.Matrix4();\n\ninit();\nanimate();\n\nfunction init() {\n\n\tscene = new THREE.Scene();\n\tscene.background = new THREE.Color( 0x505050 );\n\n\tcamera = new THREE.PerspectiveCamera( 50, window.innerWidth / window.innerHeight, 0.1, 10 );\n\tcamera.position.set( 0, 1, 3 );\n\n\troom = new THREE.LineSegments(\n\t\t\tnew BoxLineGeometry( 6, 6, 6, 10, 10, 10 ).translate( 0, 3, 0 ),\n\t\t\tnew THREE.LineBasicMaterial( { color: 0x808080 } )\n\t\t\t);\n\tscene.add( room );\n\n\tscene.add( new THREE.HemisphereLight( 0x606060, 0x404040 ) );\n\n\tconst light = new THREE.DirectionalLight( 0xffffff );\n\tlight.position.set( 1, 1, 1 ).normalize();\n\tscene.add( light );\n\n\tmarker = new THREE.Mesh(\n\t\t\tnew THREE.CircleGeometry( 0.25, 32 ).rotateX( - Math.PI / 2 ),\n\t\t\tnew THREE.MeshBasicMaterial( { color: 0x808080 } )\n\t\t\t);\n\tscene.add( marker );\n\n\tfloor = new THREE.Mesh(\n\t\t\tnew THREE.PlaneGeometry( 4.8, 4.8, 2, 2 ).rotateX( - Math.PI / 2 ),\n\t\t\tnew THREE.MeshBasicMaterial( { color: 0x808080, transparent: true, opacity: 0.25 } )\n\t\t\t);\n\tscene.add( floor );\n\n\traycaster = new THREE.Raycaster();\n\n\trenderer = new THREE.WebGLRenderer( { antialias: true } );\n\trenderer.setPixelRatio( window.devicePixelRatio );\n\trenderer.setSize( window.innerWidth, window.innerHeight );\n\trenderer.outputEncoding = THREE.sRGBEncoding;\n\n\trenderer.xr.addEventListener( 'sessionstart', () => baseReferenceSpace = renderer.xr.getReferenceSpace() );\n\trenderer.xr.enabled = true;\n\n\tdocument.body.appendChild( renderer.domElement );\n\tdocument.body.appendChild( VRButton.createButton( renderer ) );\n\n\t// controllers\n\n\tfunction onSelectStart() {\n\n\t\tthis.userData.isSelecting = true;\n\n\t}\n\n\tfunction onSelectEnd() {\n\n\t\tthis.userData.isSelecting = false;\n\n\t\tif ( INTERSECTION ) {\n\n\t\t\tconst offsetPosition = { x: - INTERSECTION.x, y: - INTERSECTION.y, z: - INTERSECTION.z, w: 1 };\n\t\t\tconst offsetRotation = new THREE.Quaternion();\n\t\t\tconst transform = new XRRigidTransform( offsetPosition, offsetRotation );\n\t\t\tconst teleportSpaceOffset = baseReferenceSpace.getOffsetReferenceSpace( transform );\n\n\t\t\trenderer.xr.setReferenceSpace( teleportSpaceOffset );\n\n\t\t}\n\n\t}\n\n\tcontroller1 = renderer.xr.getController( 0 );\n\tcontroller1.addEventListener( 'selectstart', onSelectStart );\n\tcontroller1.addEventListener( 'selectend', onSelectEnd );\n\tcontroller1.addEventListener( 'connected', function ( event ) {\n\n\t\t\tthis.add( buildController( event.data ) );\n\n\t\t\t} );\n\tcontroller1.addEventListener( 'disconnected', function () {\n\n\t\t\tthis.remove( this.children[ 0 ] );\n\n\t\t\t} );\n\tscene.add( controller1 );\n\n\tcontroller2 = renderer.xr.getController( 1 );\n\tcontroller2.addEventListener( 'selectstart', onSelectStart );\n\tcontroller2.addEventListener( 'selectend', onSelectEnd );\n\tcontroller2.addEventListener( 'connected', function ( event ) {\n\n\t\t\tthis.add( buildController( event.data ) );\n\n\t\t\t} );\n\tcontroller2.addEventListener( 'disconnected', function () {\n\n\t\t\tthis.remove( this.children[ 0 ] );\n\n\t\t\t} );\n\tscene.add( controller2 );\n\n\t// The XRControllerModelFactory will automatically fetch controller models\n\t// that match what the user is holding as closely as possible. The models\n\t// should be attached to the object returned from getControllerGrip in\n\t// order to match the orientation of the held device.\n\n\tconst controllerModelFactory = new XRControllerModelFactory();\n\n\tcontrollerGrip1 = renderer.xr.getControllerGrip( 0 );\n\tcontrollerGrip1.add( controllerModelFactory.createControllerModel( controllerGrip1 ) );\n\tscene.add( controllerGrip1 );\n\n\tcontrollerGrip2 = renderer.xr.getControllerGrip( 1 );\n\tcontrollerGrip2.add( controllerModelFactory.createControllerModel( controllerGrip2 ) );\n\tscene.add( controllerGrip2 );\n\n\t//\n\n\twindow.addEventListener( 'resize', onWindowResize, false );\n\n}\n\nfunction buildController( data ) {\n\n\tlet geometry, material;\n\n\tswitch ( data.targetRayMode ) {\n\n\t\tcase 'tracked-pointer':\n\n\t\t\tgeometry = new THREE.BufferGeometry();\n\t\t\tgeometry.setAttribute( 'position', new THREE.Float32BufferAttribute( [ 0, 0, 0, 0, 0, - 1 ], 3 ) );\n\t\t\tgeometry.setAttribute( 'color', new THREE.Float32BufferAttribute( [ 0.5, 0.5, 0.5, 0, 0, 0 ], 3 ) );\n\n\t\t\tmaterial = new THREE.LineBasicMaterial( { vertexColors: true, blending: THREE.AdditiveBlending } );\n\n\t\t\treturn new THREE.Line( geometry, material );\n\n\t\tcase 'gaze':\n\n\t\t\tgeometry = new THREE.RingGeometry( 0.02, 0.04, 32 ).translate( 0, 0, - 1 );\n\t\t\tmaterial = new THREE.MeshBasicMaterial( { opacity: 0.5, transparent: true } );\n\t\t\treturn new THREE.Mesh( geometry, material );\n\n\t}\n\n}\n\nfunction onWindowResize() {\n\n\tcamera.aspect = window.innerWidth / window.innerHeight;\n\tcamera.updateProjectionMatrix();\n\n\trenderer.setSize( window.innerWidth, window.innerHeight );\n\n}\n\n//\n\nfunction animate() {\n\trenderer.setAnimationLoop( render );\n}\n\nfunction render() {\n\n\tINTERSECTION = undefined;\n\n\tif ( controller1.userData.isSelecting === true ) {\n\t\ttempMatrix.identity().extractRotation( controller1.matrixWorld );\n\t\traycaster.ray.origin.setFromMatrixPosition( controller1.matrixWorld );\n\t\traycaster.ray.direction.set( 0, 0, - 1 ).applyMatrix4( tempMatrix );\n\t\tconst intersects = raycaster.intersectObjects( [ floor ] );\n\t\tif ( intersects.length > 0 ) {\n\t\t\tINTERSECTION = intersects[ 0 ].point;\n\t\t}\n\t} else if ( controller2.userData.isSelecting === true ) {\n\t\ttempMatrix.identity().extractRotation( controller2.matrixWorld );\n\t\traycaster.ray.origin.setFromMatrixPosition( controller2.matrixWorld );\n\t\traycaster.ray.direction.set( 0, 0, - 1 ).applyMatrix4( tempMatrix );\n\t\tconst intersects = raycaster.intersectObjects( [ floor ] );\n\t\tif ( intersects.length > 0 ) {\n\t\t\tINTERSECTION = intersects[ 0 ].point;\n\t\t}\n\t}\n\n\tif ( INTERSECTION ) marker.position.copy( INTERSECTION );\n\tmarker.visible = INTERSECTION !== undefined;\n\trenderer.render( scene, camera );\n\n}\n\n\u003C/script>\n","tags":"THREE VR WebXR","title":"THREE template #online","modified":"20230427103521658","type":"text/html"}, +{"created":"20230427204906096","text":"comma-separated coordinates e.g. which after parsing can be accessed using `.x`, `.y`, `.z` etc.\n\n| type | example |\n|-|-|\n| vector2 | `1.2,3` or `0.4,0.6` | \n| vector3 | `1.2,3,4` or `0.4,0.6,5` | \n\nhere are some interactive examples:\n\n\u003Cdiv>\n \u003Ctextarea spellcheck=\"false\" autofocus class=\"sandboxify\">frags = {}\nok = xrfragment.Parser.parse('pos','1.2,2,3',frags)\nconsole.log( frags.pos.z )\n\n\u003C/textarea>\n\t\u003Cpre class=\"result\">\u003C/pre>\n\u003C/div>\n","tags":"","title":"vector","modified":"20230427205327718","type":"text/markdown"}, {"created":"20230427103350051","text":"","tags":"","title":"WebXR","modified":"20230427103400217"}, {"created":"20230424092557827","text":"A protocol to discover, link, navigate & query 3D assets.\u003Cbr>\nStart surfing 3D assets today šŸ’™\n\u003Cbr>\n\nHere's an interactive snippet of the parser:\u003Cbr>\u003Cbr>\n\u003Cdiv>\n \u003Ctextarea spellcheck=\"false\" autofocus class=\"sandboxify\">frags = xrfragment.URI.parse('#pos=1.0,2.0,3.0')\nconsole.log( frags.pos.z )\u003C/textarea>\n\t\u003Cpre class=\"result\">\u003C/pre>\n\u003C/div>\n\nAnd see it in action (using THREE.js) here:\u003Cbr>\u003Cbr>\n\u003Ciframe class=\"border\" src=\"./example/threejs/basic/index.html\" frameborder=\"0\" style=\"width:100%; height:400px\"/>","tags":"","title":"XR Fragments","modified":"20230427163124160"} ]