@flyfish-group/file-viewer 1.0.25 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +5 -375
- package/README.md +6 -352
- package/dist/index.d.ts +2 -606
- package/dist/index.js +2 -0
- package/package.json +32 -107
- package/dist/components/3MFLoader.js +0 -1
- package/dist/components/AMFLoader.js +0 -1
- package/dist/components/ArchiveViewer.js +0 -377
- package/dist/components/AudioViewer.js +0 -1
- package/dist/components/CadViewer.js +0 -1
- package/dist/components/CodeViewer.js +0 -1
- package/dist/components/ColladaLoader.js +0 -1
- package/dist/components/DrawingViewer.js +0 -1
- package/dist/components/EdaViewer.js +0 -1
- package/dist/components/EmailViewer.js +0 -1
- package/dist/components/EpubViewer.js +0 -1
- package/dist/components/FBXLoader.js +0 -1
- package/dist/components/GLTFLoader.js +0 -1
- package/dist/components/ImageViewer.js +0 -1
- package/dist/components/KMZLoader.js +0 -1
- package/dist/components/MarkdownViewer.js +0 -1
- package/dist/components/ModelViewer.js +0 -26885
- package/dist/components/OBJLoader.js +0 -1
- package/dist/components/OfdViewer.js +0 -1
- package/dist/components/PCDLoader.js +0 -1
- package/dist/components/PLYLoader.js +0 -1
- package/dist/components/PdfView.js +0 -31013
- package/dist/components/PptxRender.js +0 -19347
- package/dist/components/STLLoader.js +0 -1
- package/dist/components/TDSLoader.js +0 -1
- package/dist/components/TypstViewer.js +0 -2029
- package/dist/components/USDLoader.js +0 -1
- package/dist/components/UmdViewer.js +0 -2
- package/dist/components/VRMLLoader.js +0 -1
- package/dist/components/VTKLoader.js +0 -1
- package/dist/components/XYZLoader.js +0 -1
- package/dist/components/XlsxTable.js +0 -1
- package/dist/components/___vite-browser-external_commonjs-proxy.js +0 -1
- package/dist/components/_commonjs-dynamic-modules.js +0 -1
- package/dist/components/_commonjsHelpers.js +0 -1
- package/dist/components/ar-SA-G6X2FPQ2.js +0 -1
- package/dist/components/arc.js +0 -1
- package/dist/components/architecture-7EHR7CIX.js +0 -1
- package/dist/components/architectureDiagram-3BPJPVTR.js +0 -1
- package/dist/components/az-AZ-76LH7QW2.js +0 -1
- package/dist/components/bash.js +0 -1
- package/dist/components/bg-BG-XCXSNQG7.js +0 -1
- package/dist/components/blockDiagram-GPEHLZMM.js +0 -1
- package/dist/components/bn-BD-2XOGV67Q.js +0 -1
- package/dist/components/c4Diagram-AAUBKEIU.js +0 -1
- package/dist/components/ca-ES-6MX7JW3Y.js +0 -1
- package/dist/components/cfb.js +0 -1
- package/dist/components/channel.js +0 -1
- package/dist/components/chunk-2J33WTMH.js +0 -1
- package/dist/components/chunk-4BX2VUAB.js +0 -1
- package/dist/components/chunk-55IACEB6.js +0 -1
- package/dist/components/chunk-727SXJPM.js +0 -1
- package/dist/components/chunk-AQP2D5EJ.js +0 -1
- package/dist/components/chunk-EIO257PC.js +0 -1722
- package/dist/components/chunk-FMBD7UC4.js +0 -1
- package/dist/components/chunk-ND2GUHAM.js +0 -1
- package/dist/components/chunk-QZHKN3VN.js +0 -1
- package/dist/components/classDiagram-4FO5ZUOK.js +0 -1
- package/dist/components/classDiagram-v2-Q7XG4LA2.js +0 -1
- package/dist/components/core.js +0 -1
- package/dist/components/cose-bilkent-S5V4N54A.js +0 -1
- package/dist/components/cpp.js +0 -1
- package/dist/components/cs-CZ-2BRQDIVT.js +0 -1
- package/dist/components/csharp.js +0 -1
- package/dist/components/css.js +0 -1
- package/dist/components/cytoscape.esm.js +0 -1
- package/dist/components/da-DK-5WZEPLOC.js +0 -1
- package/dist/components/dagre-BM42HDAG.js +0 -1
- package/dist/components/de-DE-XR44H4JA.js +0 -1
- package/dist/components/defaultLocale.js +0 -1
- package/dist/components/diagram-2AECGRRQ.js +0 -1
- package/dist/components/diagram-5GNKFQAL.js +0 -1
- package/dist/components/diagram-KO2AKTUF.js +0 -1
- package/dist/components/diagram-LMA3HP47.js +0 -1
- package/dist/components/diagram-OG6HWLK6.js +0 -1
- package/dist/components/diff.js +0 -1
- package/dist/components/directory-open-01563666.js +0 -1
- package/dist/components/directory-open-4ed118d0.js +0 -1
- package/dist/components/docx-preview.js +0 -7
- package/dist/components/el-GR-BZB4AONW.js +0 -1
- package/dist/components/en-B4ZKOASM.js +0 -1
- package/dist/components/erDiagram-TEJ5UH35.js +0 -1
- package/dist/components/es-ES-U4NZUMDT.js +0 -1
- package/dist/components/eu-ES-A7QVB2H4.js +0 -1
- package/dist/components/eventmodeling-FCH6USID.js +0 -1
- package/dist/components/fa-IR-HGAKTJCU.js +0 -1
- package/dist/components/fflate.module.js +0 -1
- package/dist/components/fi-FI-Z5N7JZ37.js +0 -1
- package/dist/components/file-open-002ab408.js +0 -1
- package/dist/components/file-open-7c801643.js +0 -1
- package/dist/components/file-save-3189631c.js +0 -1
- package/dist/components/file-save-745eba88.js +0 -1
- package/dist/components/flowDiagram-I6XJVG4X.js +0 -1
- package/dist/components/fr-FR-RHASNOE6.js +0 -1
- package/dist/components/ganttDiagram-6RSMTGT7.js +0 -1
- package/dist/components/gitGraph-WXDBUCRP.js +0 -1
- package/dist/components/gitGraphDiagram-PVQCEYII.js +0 -1
- package/dist/components/gl-ES-HMX3MZ6V.js +0 -1
- package/dist/components/global-compiler.js +0 -1
- package/dist/components/global-renderer.js +0 -1
- package/dist/components/go.js +0 -1
- package/dist/components/graph.js +0 -1
- package/dist/components/he-IL-6SHJWFNN.js +0 -1
- package/dist/components/hi-IN-IWLTKZ5I.js +0 -1
- package/dist/components/hu-HU-A5ZG7DT2.js +0 -1
- package/dist/components/id-ID-SAP4L64H.js +0 -1
- package/dist/components/image-GAAHSSAO.js +0 -1
- package/dist/components/image-blob-reduce.esm.js +0 -2
- package/dist/components/index.js +0 -23989
- package/dist/components/index10.js +0 -1
- package/dist/components/index11.js +0 -1
- package/dist/components/index12.js +0 -1
- package/dist/components/index13.js +0 -1
- package/dist/components/index14.js +0 -1
- package/dist/components/index15.js +0 -1
- package/dist/components/index16.js +0 -1
- package/dist/components/index17.js +0 -1
- package/dist/components/index18.js +0 -1
- package/dist/components/index19.js +0 -1
- package/dist/components/index2.js +0 -1
- package/dist/components/index20.js +0 -1
- package/dist/components/index21.js +0 -1
- package/dist/components/index22.js +0 -2
- package/dist/components/index23.js +0 -1
- package/dist/components/index24.js +0 -1
- package/dist/components/index3.js +0 -1
- package/dist/components/index4.js +0 -1
- package/dist/components/index5.js +0 -1
- package/dist/components/index6.js +0 -1
- package/dist/components/index7.js +0 -1
- package/dist/components/index8.js +0 -1
- package/dist/components/index9.js +0 -1
- package/dist/components/info-J43DQDTF.js +0 -1
- package/dist/components/infoDiagram-5YYISTIA.js +0 -1
- package/dist/components/ini.js +0 -1
- package/dist/components/init.js +0 -1
- package/dist/components/ishikawaDiagram-YF4QCWOH.js +0 -1
- package/dist/components/it-IT-JPQ66NNP.js +0 -1
- package/dist/components/ja-JP-DBVTYXUO.js +0 -1
- package/dist/components/java.js +0 -1
- package/dist/components/javascript.js +0 -1
- package/dist/components/journeyDiagram-JHISSGLW.js +0 -1
- package/dist/components/json.js +0 -1
- package/dist/components/jszip.min.js +0 -1
- package/dist/components/kaa-6HZHGXH3.js +0 -1
- package/dist/components/kab-KAB-ZGHBKWFO.js +0 -1
- package/dist/components/kanban-definition-UN3LZRKU.js +0 -1
- package/dist/components/katex.js +0 -1
- package/dist/components/kk-KZ-P5N5QNE5.js +0 -1
- package/dist/components/km-KH-HSX4SM5Z.js +0 -1
- package/dist/components/ko-KR-MTYHY66A.js +0 -1
- package/dist/components/ku-TR-6OUDTVRD.js +0 -1
- package/dist/components/layout.js +0 -1
- package/dist/components/libarchive.js +0 -6
- package/dist/components/linear.js +0 -1
- package/dist/components/lt-LT-XHIRWOB4.js +0 -1
- package/dist/components/lv-LV-5QDEKY6T.js +0 -1
- package/dist/components/markdown.js +0 -1
- package/dist/components/mermaid-parser.core.js +0 -14
- package/dist/components/mindmap-definition-RKZ34NQL.js +0 -1
- package/dist/components/mr-IN-CRQNXWMA.js +0 -1
- package/dist/components/my-MM-5M5IBNSE.js +0 -1
- package/dist/components/nb-NO-T6EIAALU.js +0 -1
- package/dist/components/nestedRender.js +0 -1
- package/dist/components/nl-NL-IS3SIHDZ.js +0 -1
- package/dist/components/nn-NO-6E72VCQL.js +0 -1
- package/dist/components/oc-FR-POXYY2M6.js +0 -1
- package/dist/components/ofd.js +0 -1
- package/dist/components/ordinal.js +0 -1
- package/dist/components/pa-IN-N4M65BXN.js +0 -1
- package/dist/components/packet-YPE3B663.js +0 -1
- package/dist/components/percentages-BXMCSKIN.js +0 -1
- package/dist/components/php.js +0 -1
- package/dist/components/pica.js +0 -1
- package/dist/components/pie-LRSECV5Y.js +0 -1
- package/dist/components/pie.js +0 -1
- package/dist/components/pieDiagram-4H26LBE5.js +0 -1
- package/dist/components/pl-PL-T2D74RX3.js +0 -1
- package/dist/components/postal-mime.js +0 -1
- package/dist/components/printLayout.js +0 -1
- package/dist/components/pt-BR-5N22H2LF.js +0 -1
- package/dist/components/pt-PT-UZXXM6DQ.js +0 -1
- package/dist/components/python.js +0 -1
- package/dist/components/quadrantDiagram-W4KKPZXB.js +0 -1
- package/dist/components/radar-GUYGQ44K.js +0 -1
- package/dist/components/requirementDiagram-4Y6WPE33.js +0 -1
- package/dist/components/ro-RO-JPDTUUEW.js +0 -1
- package/dist/components/rough.esm.js +0 -1
- package/dist/components/roundRect.js +0 -1
- package/dist/components/ru-RU-B4JR7IUQ.js +0 -1
- package/dist/components/rust.js +0 -1
- package/dist/components/sankeyDiagram-5OEKKPKP.js +0 -1
- package/dist/components/sequenceDiagram-3UESZ5HK.js +0 -1
- package/dist/components/si-LK-N5RQ5JYF.js +0 -1
- package/dist/components/sk-SK-C5VTKIMK.js +0 -1
- package/dist/components/sl-SI-NN7IZMDC.js +0 -1
- package/dist/components/sql.js +0 -1
- package/dist/components/stateDiagram-AJRCARHV.js +0 -1
- package/dist/components/stateDiagram-v2-BHNVJYJU.js +0 -1
- package/dist/components/subset-shared.chunk.js +0 -1
- package/dist/components/subset-worker.chunk.js +0 -1
- package/dist/components/sv-SE-XGPEYMSR.js +0 -1
- package/dist/components/ta-IN-2NMHFXQM.js +0 -1
- package/dist/components/th-TH-HPSO5L25.js +0 -1
- package/dist/components/time.js +0 -1
- package/dist/components/timeline-definition-PNZ67QCA.js +0 -1
- package/dist/components/tr-TR-DEFEU3FU.js +0 -1
- package/dist/components/transform.js +0 -1
- package/dist/components/treeView-BLDUP644.js +0 -1
- package/dist/components/treemap-LRROVOQU.js +0 -1
- package/dist/components/typescript.js +0 -1
- package/dist/components/uk-UA-QMV73CPH.js +0 -1
- package/dist/components/vennDiagram-CIIHVFJN.js +0 -1
- package/dist/components/vi-VN-M7AON7JQ.js +0 -1
- package/dist/components/wardley-L42UT6IY.js +0 -1
- package/dist/components/wardleyDiagram-YWT4CUSO.js +0 -1
- package/dist/components/wasm-pack-shim.js +0 -1
- package/dist/components/wasm-pack-shim2.js +0 -1
- package/dist/components/worker-ref.js +0 -1
- package/dist/components/xml.js +0 -1
- package/dist/components/xychartDiagram-2RQKCTM6.js +0 -1
- package/dist/components/yaml.js +0 -1
- package/dist/components/zh-CN-LNUGB5OW.js +0 -1
- package/dist/components/zh-HK-E62DVLB3.js +0 -1
- package/dist/components/zh-TW-RAJ6MFWO.js +0 -1
- package/dist/index.mjs +0 -1
- package/dist/package/index.d.ts +0 -36
- package/dist/style.css +0 -17
- package/dist/wasm/cad/dwfv-render.wasm +0 -0
- package/dist/wasm/cad/dwg-worker.js +0 -24
- package/dist/wasm/cad/libredwg-web.js +0 -15
- package/dist/wasm/cad/libredwg-web.wasm +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const bY=b;(function(s,t){const bB=b,u=s();while(!![]){try{const v=-parseInt(bB(0x1dd))/0x1+-parseInt(bB(0x148))/0x2+-parseInt(bB(0x1ec))/0x3+-parseInt(bB(0x2eb))/0x4*(parseInt(bB(0x115))/0x5)+-parseInt(bB(0x333))/0x6*(-parseInt(bB(0x310))/0x7)+parseInt(bB(0x3d4))/0x8*(-parseInt(bB(0x298))/0x9)+-parseInt(bB(0x93))/0xa*(-parseInt(bB(0xd5))/0xb);if(v===t)break;else u['push'](u['shift']());}catch(w){u['push'](u['shift']());}}}(a,0xc1735));import{ref as c,onUnmounted as d,defineComponent as e,computed as g,watch as h,onMounted as i,onBeforeUnmount as j,nextTick as k}from'vue';import{r as l}from'./worker-ref.js';import{u as n,c as o,b as p,n as r}from'./index7.js';const qs=u=>{const bC=b,v=c(!0x0),w=u(),x={'emit':(C,F)=>{v['value']=!0x0,w?.['postMessage']({'type':C,'payload':F});}},y={},z=[],B=[];return w?.[bC(0x19f)](bC(0x83),C=>{const {type:F,payload:G}=C['data'],H=y[F];H?.['length']&&H['forEach'](J=>J(G)),z['forEach'](J=>J(C));}),w?.['addEventListener']('error',C=>{console['error'](C),B['forEach'](F=>F(C));}),d(()=>{const bD=bC;w?.[bD(0x286)]();}),{'loading':v,'worker':x,'onWorkerMessage':C=>z['push'](C),'onWorkerError':C=>B[bC(0x1f5)](C),'onWorkerEvent':(C,F)=>{let G=y[C];G||(G=y[C]=[]),G['push'](F);},'mapEvents':C=>Array['isArray'](C)?C['reduce']((F,G)=>(F[G]=H=>x[bC(0xc8)](G,H),F),{}):Object['keys'](C)[bC(0x1cb)]((F,G)=>{const H=C[G];return F[H]=J=>x['emit'](G,J),F;},{})};};(function(){try{if(typeof document<'u'){var s=document['createElement']('style');s['appendChild'](document['createTextNode'](':root{--evt-header-font:\x2012px\x20normal\x20Arial;--evt-body-font:\x2012px\x20normal\x20Arial;--evt-color-white:\x20#fff;--evt-color-black:\x20#000000;--evt-color-primary:\x20rgb(82,\x20146,\x20247);--evt-text-color-primary:\x20#333;--evt-text-color-regular:\x20#666;--evt-text-color-secondary:\x20#999;--evt-box-shadow:\x200\x202px\x2012px\x200\x20#0000001a;--evt-editor-bg-color:\x20#fff;--evt-editor-text-color:\x20#333;--evt-border-color:\x20#e1e6eb;--evt-body-bg-color:\x20#fff;--evt-stripe-color:\x20#fafafa;--evt-placeholder-color:\x20#cdd0dc;--evt-header-bg-color:\x20#f8faff;--evt-header-text-color:\x20#1d2129;--evt-body-text-color:\x20#4e5969;--evt-footer-text-color:\x20#4e5969;--evt-loading-icon-color:\x20#4e5969;--evt-expand-icon-color:\x20#4e5969;--evt-shrink-icon-color:\x20#4e5969;--evt-error-tip-icon-color:\x20red;--evt-required-color:\x20#f56c6c;--evt-cell-hover-icon-bg-color:\x20#fff;--evt-cell-hover-icon-border-color:\x20#dde0ea;--evt-scroller-color:\x20#dee0e3;--evt-scroller-track-color:\x20#fff;--evt-scroller-focus-color:\x20#bbbec4;--evt-select-border-color:\x20var(--evt-color-primary);--evt-select-area-color:\x20rgba(82,\x20146,\x20247,\x20.1);--evt-select-row-col-bg-color:\x20rgba(82,\x20146,\x20247,\x20.1);--evt-autofill-point-border-color:\x20#fff;--evt-edit-bg-color:\x20#fcf6ed;--evt-checkbox-color:\x20var(--evt-color-primary);--evt-checkbox-uncheck-color:\x20#dde0ea;--evt-checkbox-disabled-color:\x20#f1f2f4;--evt-checkbox-check-disabled-color:\x20#dde0ea;--evt-icon-edit-color:\x20#4e5969;--evt-icon-select-color:\x20#4e5969;--evt-readonly-color:\x20#fff;--evt-readonly-text-color:\x20var(--evt-body-text-color);--evt-error-tip-color:\x20#ed3f14;--evt-footer-bg-color:\x20#fafafa;--evt-highlight-hover-row-color:\x20rgba(186,\x20203,\x20231,\x20.1);--evt-highlight-selected-row-color:\x20rgba(82,\x20146,\x20247,\x20.1);--evt-tooltip-bg-color:\x20#303133;--evt-tooltip-text-color:\x20#fff;--evt-resize-row-line-color:\x20#e1e6eb;--evt-resize-column-text-color:\x20#fff;--evt-resize-column-text-bg-color:\x20var(--evt-color-primary);--evt-resize-column-line-color:\x20#e1e6eb;--evt-tree-line-color:\x20#e1e6eb;--evt-sort-icon-color:\x20var(--evt-color-primary);--evt-drag-tip-bg-color:\x20rgba(82,\x20146,\x20247,\x20.1);--evt-drag-tip-line-color:\x20var(--evt-color-primary);--evt-context-menu-min-width:\x20150px;--evt-context-menu-max-width:\x20220px;--evt-context-menu-item-padding:\x208px\x2012px;--evt-context-menu-bg-color:\x20#fff;--evt-context-menu-text-color:\x20#333;--evt-context-menu-item-hover-text-color:\x20var(--evt-color-primary);--evt-context-menu-item-hover-bg-color:\x20#f5f5f5;--evt-context-menu-text-size:\x2013px}.dark{--evt-border-color:\x20#363637;--evt-header-bg-color:\x20#141414;--evt-body-bg-color:\x20#141414;--evt-header-text-color:\x20#a3a6ad;--evt-body-text-color:\x20#cfd3dc;--evt-readonly-text-color:\x20#cfd3dc;--evt-footer-text-color:\x20#cfd3dc;--evt-scroller-color:\x20#414243;--evt-scroller-track-color:\x20#141414;--evt-scroller-focus-color:\x20#a3a6ad;--evt-edit-bg-color:\x20#141414;--evt-footer-bg-color:\x20#262727;--evt-autofill-point-border-color:\x20#fff;--evt-editor-bg-color:\x20#434343;--evt-editor-text-color:\x20#cfd3dc;--evt-context-menu-bg-color:\x20#141414;--evt-context-menu-text-color:\x20#cfd3dc;--evt-context-menu-item-hover-text-color:\x20var(--evt-color-primary);--evt-context-menu-item-hover-bg-color:\x20#414243}.e-virt-table-container{position:relative;outline:none}.e-virt-table-stage{position:relative;overflow:hidden;outline:none;box-sizing:border-box;z-index:10;border-radius:8px;border:1px\x20solid\x20var(--evt-border-color)}.e-virt-table-canvas{position:absolute;left:0;top:0;box-sizing:border-box;background-color:var(--evt-body-bg-color);border:none;outline:none;z-index:10}.e-virt-table-editor{position:absolute;top:-10000px;left:-10000px;text-align:left;height:auto;line-height:0;z-index:100;overflow:hidden;background-color:var(--evt-editor-bg-color);border:2px\x20solid\x20var(--evt-color-primary);box-sizing:border-box;box-shadow:var(--evt-box-shadow);display:flex;align-items:center}.e-virt-table-overlayer{position:absolute;left:0;top:0;overflow:hidden;z-index:100;pointer-events:none}.e-virt-table-editor-textarea{width:100%;box-sizing:border-box;outline:none;font-weight:400;padding:8px;font-size:12px;color:inherit;white-space:pre-wrap;word-wrap:break-word;word-break:break-all;line-height:1.5;margin:0;border:none;vertical-align:middle;background:var(--evt-editor-bg-color);color:var(--evt-editor-text-color);overflow-y:auto;resize:none}.e-virt-table-context-menu{position:absolute;font-size:14px;color:var(--evt-text-color-regular);background-color:var(--evt-color-white);border-radius:4px;border:1px\x20solid\x20#e4e7ed;box-shadow:var(--evt-box-shadow);width:fit-content;padding:6px\x200;z-index:9999;left:-99999px;top:-99999px}.e-virt-table-context-menu-item{cursor:pointer;padding:6px\x2024px;color:var(--evt-text-color-regular)}.e-virt-table-context-menu-item:hover{color:var(--evt-color-primary);background-color:#f5f7fa}.e-virt-table-loading{display:none;position:absolute;left:0;top:0;right:0;bottom:0;width:100%;height:100%;z-index:2000;background-color:#fff6;display:flex;align-items:center;justify-content:center}.e-virt-table-loading-spinner{opacity:1;display:flex;flex-direction:column;align-items:center;justify-content:center}.e-virt-table-loading-spinner\x20svg{color:var(--evt-text-color-regular);animation:rotate\x201s\x20linear\x20infinite}@keyframes\x20rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.e-virt-table-loading-text{margin:0;font-size:12px;color:var(--evt-text-color-regular)}.e-virt-table-main-menu,.e-virt-table-submenu{position:absolute;background:var(--evt-context-menu-bg-color);border-radius:4px;box-shadow:0\x202px\x208px\x20#0000001a;min-width:var(--evt-context-menu-min-width);max-width:var(--evt-context-menu-max-width);color:var(--evt-text-color-primary)}.e-virt-table-main-menu{border:1px\x20solid\x20var(--evt-border-color);z-index:3000;left:-99999px;top:-99999px;display:none;position:fixed;background-color:var(--evt-body-bg-color)}.e-virt-table-submenu{border:1px\x20solid\x20var(--evt-border-color);z-index:1000;max-height:350px;overflow-y:auto;opacity:0;visibility:hidden;transform:translate(-10px);transition:opacity\x20.2s,visibility\x20.2s,transform\x20.2s;-ms-overflow-style:none;scrollbar-width:none}.e-virt-table-submenu::-webkit-scrollbar{display:none}.e-virt-table-submenu.show{opacity:1;visibility:visible;transform:translate(0)}.e-virt-table-submenu:not(.show){transition:none}.e-virt-table-menu-item,.e-virt-table-submenu-item{position:relative;-webkit-user-select:none;user-select:none;padding:var(--evt-context-menu-item-padding);cursor:pointer;display:flex;justify-content:space-between;align-items:center;transition:background\x20.2s,color\x20.2s;color:var(--evt-context-menu-text-color);font-size:var(--evt-context-menu-text-size)}.e-virt-table-menu-item:last-child,.e-virt-table-submenu-item:last-child{border-bottom:none}.e-virt-table-menu-item:has(.e-virt-table-menu-item-icon){padding-left:8px}.e-virt-table-menu-item-content{display:flex;align-items:center;flex:1;min-width:0}.e-virt-table-menu-item-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:8px;flex-shrink:0}.e-virt-table-menu-item-icon\x20svg{width:100%;height:100%;fill:currentColor}.e-virt-table-menu-item-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.e-virt-table-menu-arrow{display:inline-flex;align-items:center;justify-content:center;color:var(--evt-text-color-regular);transition:color\x20.2s}.e-virt-table-menu-arrow\x20svg{width:20px;height:20px;fill:currentColor}.e-virt-table-submenu-item:hover,.e-virt-table-menu-item:hover,.e-virt-table-menu-item.active{background:var(--evt-context-menu-item-hover-bg-color);color:var(--evt-context-menu-item-hover-text-color)}.e-virt-table-menu-item.disabled,.e-virt-table-submenu-item.disabled{cursor:not-allowed}.e-virt-table-finder-bar{position:absolute;top:8px;right:16px;display:none;z-index:10000;background:#fff;border:1px\x20solid\x20#dadce0;border-radius:12px;box-shadow:0\x202px\x206px\x20#0003;padding:0\x208px;height:48px;min-width:250px;align-items:center;font-size:12px}.e-virt-table-finder-bar.show{display:flex}.e-virt-table-finder-bar-input-wrapper{display:flex;align-items:center;flex:1;padding:0\x208px;position:relative}.e-virt-table-finder-bar-input{border:none;outline:none;flex:1;font-size:12px;background:transparent;color:#333;min-width:150px;padding-left:0;position:relative}.e-virt-table-finder-bar-nav{display:flex;flex-direction:row;gap:8px;margin:0\x208px;align-items:center}.e-virt-table-finder-bar-nav-btn{border:none;background:transparent;cursor:pointer;padding:0;color:#666;border-radius:50%;display:flex;align-items:center;justify-content:center}.e-virt-table-finder-bar-nav-btn\x20svg{width:24px;height:24px}.e-virt-table-finder-bar-nav-btn.prev-btn{transform:rotate(-90deg)}.e-virt-table-finder-bar-nav-btn.next-btn{transform:rotate(90deg)}.e-virt-table-finder-bar-nav-btn.close-btn{font-size:24px;color:#666;line-height:1;width:24px;height:24px}.e-virt-table-finder-bar-nav-btn:hover{color:#666;background-color:#f0f0f0}.e-virt-table-finder-bar-count{color:#666;font-size:12px;margin:0\x208px;white-space:nowrap;flex-shrink:0}.e-virt-table-finder-bar-count.no-results{color:#999}.e-virt-table-finder-bar-loading{display:none;position:absolute;left:8px;top:0;width:16px;height:16px;flex-shrink:0;pointer-events:none;z-index:0}.e-virt-table-finder-bar-loading.show{display:block}.e-virt-table-finder-bar-loading\x20svg{width:100%;height:100%;color:#666;animation:rotate\x201s\x20linear\x20infinite}.e-virt-table-empty{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:14px;color:#666;z-index:15}')),document['head']['appendChild'](s);}}catch(t){console['error']('vite-plugin-css-injected-by-js',t);}}());var $s=Object['defineProperty'],ic=(s,u,v)=>u in s?$s(s,u,{'enumerable':!0x0,'configurable':!0x0,'writable':!0x0,'value':v}):s[u]=v,m=(s,u,v)=>ic(s,typeof u!='symbol'?u+'':u,v);class tc{constructor(s){const bE=b;m(this,'rules'),this[bE(0x3ba)]=s;}['validate'](u){const bF=b,v=[],{column:w,row:x,key:y,rowKey:z,colIndex:B,rowIndex:C,value:F,field:G,fieldValue:H}=u;Array[bF(0x1b4)](this['rules'])||(this['rules']=[this['rules']]);for(const J of this['rules']){if(J['validator']){const K={'field':G,'fieldValue':H,'value':F,'column':w,'colIndex':B,'rowIndex':C,'row':x,'key':y,'rowKey':z,...J};J['validator'](K,F,L=>{L&&v['push']({...K,'message':L});});}if(!J['required']&&(F==null||F===''))return v;J[bF(0x3ae)]&&!J[bF(0x3ae)]['test'](F)&&v['push']({'value':F,'column':w,'row':x,'key':y,'rowKey':z,'colIndex':B,'rowIndex':C,'field':G,'fieldValue':H,'message':J['message']||y+bF(0xf8)}),J['required']&&(F==null||F==='')&&v['push']({'value':F,'column':w,'row':x,'key':y,'rowKey':z,'colIndex':B,'rowIndex':C,'field':G,'fieldValue':H,'message':J[bF(0x83)]||y+'\x20is\x20required'});}return v;}}function ms(){return'xxxxxxxxxxxxxxxxxx'['replace'](/[x]/g,function(s){const bG=b,t=Math[bG(0x373)]()*0x10|0x0;return(s==='x'?t:t&0x3|0x8)['toString'](0x10);});}function $t(s,u){let v=0x0,w;return function(...x){const y=new Date()['getTime'](),z=y-v,B=typeof u=='function'?u():u;!v||z>=B?(s['apply'](this,x),v=y):w||(w=setTimeout(()=>{s['apply'](this,x),v=new Date()['getTime'](),w=void 0x0;},B-z));};}function lt(s=[]){const bH=b;return s[bH(0xfa)]?s['map'](t=>lt(t['children'])+0x1)['sort']((u,v)=>v-u)[0x0]:0x0;}function lc(s=[]){const bI=b;let u=[],v=[],w=[];return s[bI(0x3e1)](x=>{x['fixed']==='left'?u['push'](x):x['fixed']==='right'?w['push'](x):v['push'](x);}),[...u[bI(0x9b)]((x,y)=>(x['sort']??0x0)-(y[bI(0x9b)]??0x0)),...v[bI(0x9b)]((x,y)=>(x['sort']??0x0)-(y['sort']??0x0)),...w['sort']((x,y)=>(x['sort']??0x0)-(y['sort']??0x0))];}function st(s=[],u=0x1,v=0x0,w=''){const bJ=b;return s[bJ(0x9b)]((x,y)=>(x['sort']??0x0)-(y[bJ(0x9b)]??0x0))['map'](x=>{const bK=bJ;if(x['children']){let y=0x0,z=x['fixed'];x['children'][bK(0x3e1)](C=>{C['fixed']=z;});const B=st(x[bK(0xd0)],u-0x1,v+0x1,x['key']);return B&&B['forEach'](C=>{y+=C['colspan']??0x0;}),{...x,'width':x['width'],'level':v,'rowspan':0x1,'colspan':y,'parentKey':w,'children':B[bK(0x9b)]((C,F)=>(C['sort']??0x0)-(F['sort']??0x0))};}return{...x,'level':v,'rowspan':u,'colspan':0x1,'parentKey':w};});}function Ci(s=[]){let t=[];return s['forEach'](u=>{const bL=b;u['children']?t=t['concat'](Ci(u['children'])):t[bL(0x1f5)](u);}),t;}function Zs(s){const bM=b;return s['filter'](t=>!t['hide'])['map'](t=>Array['isArray'](t['children'])&&t['children']['length']>0x0?{...t,'children':Zs(t[bM(0xd0)])}:{...t});}const rl=/^(\r\n|\n\r|\r|\n)/,sc=/^[^\t\r\n]+/,Kl=/^\t/;function cc(u){const bN=b;let v=[['']];if(u['length']===0x0)return v;let w=0x0,x=0x0,y;for(;u[bN(0xfa)]>0x0&&y!==u['length'];)if(y=u['length'],u['match'](Kl))u=u['replace'](Kl,''),w+=0x1,v[x][w]='';else{if(u['match'](rl))u=u['replace'](rl,''),w=0x0,x+=0x1,v[x]=[''];else{let z='';if(u['startsWith']('\x22')){let B=0x0,C=!0x0;for(;C;){const F=u[bN(0x30b)](0x0,0x1);F==='\x22'&&(B+=0x1),z+=F,u=u['slice'](0x1),(u['length']===0x0||u[bN(0x182)](/^[\t\r\n]/)&&B%0x2===0x0)&&(C=!0x1);}z=z['replace'](/^"/,'')['replace'](/"$/,'')['replace'](/["]*/g,G=>new Array(Math['floor'](G['length']/0x2))['fill']('\x22')['join'](''));}else{const G=u[bN(0x182)](sc);z=G?G[0x0]:'',u=u['slice'](z['length']);}v[x][w]=z;}}return Array['isArray'](v)&&v['length']>0x1&&v[v['length']-0x1]['length']===0x1&&v[v['length']-0x1][0x0]===''&&(v=v[bN(0x30b)](0x0,v['length']-0x1)),v;}function ec(u){const bO=b;let v,w,x,y,z='',B;for(v=0x0,w=u[bO(0xfa)];v<w;v+=0x1){for(y=u[v]['length'],x=0x0;x<y;x+=0x1)x>0x0&&(z+='\x09'),B=u[v][x],typeof B=='string'?B[bO(0x37a)]('\x0a')>-0x1?z+='\x22'+B['replace'](/"/g,'\x22\x22')+'\x22':z+=B:B==null?z+='':z+=B;v!==w-0x1&&(z+='\x0a');}return z;}function Is(u,v,w=[]){let x=0x0;const y=[];return u['forEach']((z,B)=>{const bP=b;if(B===0x0)y['push'](0x1);else{const C=w['reduce']((G,H)=>''+G+(z[H]??''),'')||z[v],F=w[bP(0x1cb)]((G,H)=>''+G+(u[B-0x1][H]??''),'')||u[B-0x1][v];C===F?(y[x]+=0x1,y['push'](0x0)):(y['push'](0x1),x=B);}}),y;}function os(u,v){let w='',x='';const y={};return v['forEach']((z,B)=>{const bQ=b;B===0x0?(w=z['key'],x=z['key'],y[z['key']]=0x1):u[z[bQ(0x17f)]]===u[w]?(y[z[bQ(0x17f)]]=0x0,y[x]+=0x1):(y[z['key']]=0x1,w=z[bQ(0x17f)],x=z[bQ(0x17f)]);}),y;}function hc(u,v,w=[]){const {visibleRows:x,rowIndex:y,headIndex:z}=u,B=Is(x,v,w);return B[y-z]===0x0?{'rowspan':0x0,'colspan':0x0,'relationRowKeys':w,'mergeRow':!0x0}:{'rowspan':B[y-z],'colspan':0x1,'relationRowKeys':w,'mergeRow':!0x0};}function a(){const n8=['cleanupAllSubmenus','filterColumns','drawCenter','maxColIndex','customHeaderChange','trackHeight','[data-menu=\x22','drawSortImageWidth','readonly','join','filter','rowType','loadColumns','ownerDocument','textContent','autoRowHeight','Tab','drawText','drawFixed','random','restore','canvas','STRIPE_COLOR','active','currentCell','isCustom','indexOf','image/svg+xml','classList','deltaY','KeyZ','fixedColumns','columns','contain','clearAutofill','keydown','updateAutoHeight','adjustPositionX','offsetHeight','map','-overlayer-body','img','rgba(0,0,0,0)','updateCssVar','drawHoverImageY','setCursor','editorType','shrink','lineDash','visibleDistance','showLoading','absolute','f0e68c','onPastedDataOverflow','rowIndex','renderCellHeaders','getOffset','resetHeader','getDimensions','test','data-menu','history','onMouseMove','scrollY','getOverlayerViewsStyle','selectorArrStr','selectionchange','loading-spinner','_cleanup','#5f6368','drawSortImageX','#d7dbe0',':hover','borderTop','Excel\x20表格','setCustomHeader','CONTEXT_MENU','minY','pattern','FOOTER_BG_COLOR','rgba(','000080','errorMessage','forwardState','setMoveFocus','cellHeaderMousedown','drawSelectionImageSource','validationErrorMap','setScrollX','paste','rules','fafad2','resizeDiff','innerText','parentKey','keys','align','getText','hide','hasTree','BEFORE_AUTOFILL_DATA_METHOD','getOverlayerAutoHeight','barY','setRowSelectionByCheckboxKey','drawErrorTip','hex6','wheel','Loaded','expandLazy','scrollToIndex','ffdead','searchData','drawSelectionImageX','dragingCell','cellHeaderMouseenter','drawTreeImageX','8XtXhLJ','resizeColumn','clearSelected','getChangedRows','toHsl','clearSelection','drawTextX','colWidths','click','findMenuItem','offsetParent','drawTreeImageHeight','F12','forEach','charAt','scrollToRowIndex','doneEdit','handleLeave','2e8b57','handleOutsideMousedown','adjustMergeCells','yArr','sortDataRecursive','handleMouseDown','leave','contextMenuEl','clearBufferData','renderFixedCellHeaders','rowKeyMap','Bottom','HEIGHT','cellTarget','selectionEnd','domSelectionStr','isHorizontalVisible','doneEditByInput','0px','vertical','f0f','drawTextWidth','className','e6e6fa','headIndex','format','getTime','SORTABLE_ICON_SVG','LOADING_TEXT','message','button','-5px','target','\x20/\x20','startRow','desc','isTarget','cachedSummary','includes','scrollWidth','height','offsetWidth','color','ENABLE_SELECTOR_ALL_COLS','barHeight','27006580IMOkJQ','containerElement','code','mousemove','663399','getCurrentRow','before','displayText','sort','remove','closest','setScrollY','zIndex','12px\x20Arial','error','getValue','prototype','e-virt-table-menu-item-text','colIndex','save','isDragging','rowFocusChange','drawTextColor','transparent','clientLeft','-tooltip-content','operation','drawSelectionImageWidth','_FONT','mouseleave','isBusy','MAX_HEIGHT','horizontalScrollbar','\x20行,','createMenuItem','resizeNum','placement','getSelectionRows','SELECT_ROW_COL_BG_COLOR','bufferData','overflowTooltipShow','contextMenuClearSelected','selectable','stageWidth','ellipsis','selectRowsIng','editorProps','selection','configColorName','floating','handleHeaderEvent','_setupProxy','BODY_CELL_RENDER_METHOD','emit','inputEl','left','rowspan','updateSpanInfo','overflowTooltipPlacement','meta','ICON_EDIT_COLOR','children','indeterminate','drawTextY','distance','_applyCombination','22FqyKuB','font','AAsmall','BODY_CELL_HOVER_ICON_METHOD','bind','dragCellDiff','htRight','clientHeight','rowHeightCache','columnResizing','floatingEl','#4E5969','canvasElement','toLowerCase','data-row-index','hasValidationError','focusInput','col','clearSelectedData','setCustomHeaderResizableData','handleTouchmove','toRgb','handleTouchend','#495060','cancel','sortAscIconName','calculatedHeight','hideHeaderSelection','borderBottom','replaceChildren','index','validateFields','PLACEHOLDER_COLOR','clearTreeSelectionRecursive','rowKey','\x20is\x20pattern\x20validation\x20error','isReadable','length','正在解析\x20Excel\x20工作簿,请耐心等待...','ffa500','已缓存\x20','hasChildren','resizeRow','isFinite','focusCell','innerHTML','ffdab9','bold\x20','drawTextHeight','translate','originalDataMap','clearSelector','fixedRight','ENABLE_AUTOFILL_SPAN_COL','checkbox-indeterminate','overlayerElement','scroller','getDrawY','clear','destroy','setSelectorCell','parentElement','getContext','borderLeft','3304595QltXcR','calculatedHeightCells','direction','parentRowKeys','measureText','isVerticalVisible','documentElement','end','onWheel','string','performSearch','sheet-loading-summary','value','hoverCell','offsetX','shift','verticalAlign','SELECTOR_AREA_MAX_Y_OFFSET','colIndexKeyMap','__baseHeight','ENABLE_MERGE_CELL_LINK','onScroll','flip','SORT_STRICTLY','ArrowRight',',endColorstr=','tree','createLinearGradient','dragHeaderIng','filterMethod','clientX','CHECKBOX_CHECK_DISABLED_SVG','selectorCellValueType','canvas\x20context\x20not\x20found','sort-asc','div','EXPAND_ICON_COLOR','drawTextFont','48d1cc','stageElement','100%','type','parent','visibleHeight','exec','setRowHeight','platform','ENABLE_RESIZE_ROW','observer','asc','splitPoints','2978588BQryah','maxRowIndex','finding','bold','.e-virt-table-menu-item','showSubmenu','ENABLE_PASTER','expand','cellMousedown','ffa07a','getRowForRowKey','validate','HEADER_CONTEXT_MENU','start','childrenKey','Insert','binarySearch','getTreeChildren','change','左固定','mouseY','getDisplayText','initData','list','data','handleClick','splice','from','mutationObserver','getLuminance','alignment','isPointer','[\x5cs|\x5c(]+(','col-resize','autofill','drawShadow','totalRows','right-end','onMouseUp','stringify','startAdjustPosition','onTouchmove','symbol','strategy','historyIndex','finderBar','drawTreeImageWidth','createElement','getVirtualBodyCellByKey','buffer','clippingAncestors','shrinkToFit','overlayerAutoHeightMap','hex','row','key','sortDescIconName','show','match','htLeft','getSpanInfo','cellSelectedClick','number','_applyModification','onlyMergeCell','getCellValueByIndex','createContainer','scrollLeft','small','ERR_SET_NUMBER_VALUE','rowResizing','textCallback','level','changedDataMap','checkbox-uncheck','drawCellSkyBgColor','pow','hex4','borderRight','clickCellHeader','getData','bufferCheckState','toName','clearDomSelection','current\x20browser\x20does\x20not\x20support\x20the\x20Clipboard\x20API','px;','e-virt-table-overlayer','addEventListener','checkbox-disabled','DD-MM-YYYY','resizeColumnChange','setValidationError','editing','scrollHeight','add','crosshair','top-end','stopAdjustPosition','mostReadable','deltaX','draw',')[,|\x5cs]+(','calculateMaxTreeDepth','handleMousemove','countEl','top','querySelectorAll','parseInt','isArray','clientY','clientWidth','isResizing','setTransform','middle','CELL_FOOTER_HEIGHT','views','has','CELL_HOVER_ICON_SIZE','7fffd4','catch','editCell','htBottom','index-selection','HEADER_HEIGHT','selectionMap','selection-tree','arcTo','RESIZE_COLUMN_MIN_WIDTH','input','getAttribute','getReadonly','reduce','BODY_BG_COLOR','arrowEl','ENABLE_DRAG_COLUMN','charCodeAt','loadingEl','update','isMouseDown','fixedLeftCellHeaders','contextMenuPaste','取消固定','getColumnByColIndex','document','overflowTooltipMaxWidth','hideSubmenu','BODY_FONT','off','getTree','1224881esOQxY','footer','delete','rowHeight','every','render','mouseout','drawSortImageSource','metaKey','totalCols','contextMenuIng','getRowIndexForRowKey','#e1e6eb','minWidth','CELL_WIDTH','1882164bcKPwR','assign','drawLine','enable','root','ENABLE_VALIDATOR_IMMEDIATE','drawSelectionImageY','replace','container','push','timerX','isRTL','contains','addColorStop','ctx','querySelector','fixedNone','tree-selection','min','round','expandLoading','activeSubmenus','allCellHeaders','setScroll','maxColRowCell','ICON_EDIT_SVG','dragDisabled','focusCellHeader','cut','name','split','not-allowed','%,\x20','forward','maxWidth','apply','getRowDataItemForRowKey','drawDragTip','getSortState','...','HIGHLIGHT_HOVER_ROW','mouseenter','stageHeight','colspan','正在准备工作表、样式和大数据视口,请稍候。','startEdit','searchResults','check','auto','handleHover','max','barWidth','then','drawHoverImageX','setCustomHeaderHideData','overflows','drawFixedShadow','checkbox-check','resizeObserver','KeyV','ENABLE_HEADER_CONTEXT_MENU','_submenu','toHexString','cellType','clearValidate','.e-virt-table-submenu-item','visibleLeafColumns','size','renderHeaderType','visibleCellMouseleave','break-all','customHeader','getItemValue','4px','floor','currentIndex','scroll','KeyA','getAllRowsData','loading','outsideMousedown','sort-default','fixedRightWidth','block','paint','endsWith','updateSpan','KeyX','disableHoverIconClick','visibleRows','readOnly','database','ENABLE_KEYBOARD','resizeTarget','colWidth','Color','9370db','clearEditor','attributes','drawHoverImageHeight','visibleWidth','shiftKey','cellHeaderMouseup','fromRatio','COLUMNS_VERTICAL_ALIGN','iterationChange','getColumns','compatMode','isElement','808000','scrollToColkey','DISABLED','rgb(82,146,247)','none','item','drawRect','0ff','setSelectionByRowKeys','handleContextMenu','headerMap','ENABLE_AUTOFILL','autofillData','getBody','imageClipStyle','header','right-start','scrollTo','set','drawHoverImageWidth','CHECKBOX_INDETERMINATE_SVG','f0f8ff','hidden','style','isInsideElement','resizeAllColumn','YYYYMMDD','title','init','_ok','menuData','html','ROW_KEY','autoSize','CELL_LINE_HEIGHT','isHasChanged','F11','includeFallbackColors','get','clientTop','.e-virt-table-submenu','BODY_CELL_FORMATTER_METHOD','mergeStartMap','getFooterData','initial','terminate','bottom','renderRows','default','handleDblclick','preventDefault','positionMenu','12px','after','getCustomHeader','onMouseDown','rowIndexRowKeyMap','.e-virt-table-menu-item,\x20.e-virt-table-submenu-item','COLUMNS_ALIGN','hoverCellHeader','trim','contextMenuElement','resetEditorStyle','7849125yIsXzH','emptyChange','menu-item-no-icon','drawSelectionImageName','ctrlKey','removeSubMenuItem','ENABLE_EDIT_CLICK_SELECTOR','cleanupSubmenuRecursively','tailIndex','checkboxKeyMap','4682b4','cells','sumHeight','scale','showColumns','display','horizontalAlign','events','editorEl','setSelector','ArrowLeft','getCell','ENABLE_RESIZE_COLUMN','228b22','startColorstr=','sort-desc','top-start','right','positions','e-virt-table-submenu','expandMap','mergeCol','defaults','8b0000','concat','appendChild','class','drawY','getValidator','cellHeaderClick','maxLineClamp','containerRect','row-resize','getBoundingClientRect','fillStyle','wrapText','MM/DD/YYYY','empty','all','structure','cursor','mouseup','dotted','FOOTER_TEXT_COLOR','drawImage','scrollX','SELECTOR_CELL_VALUE_TYPE','false','centerCellHeaders','position','Enter','visible_','hsv(','#ffffff','svg','mouseX','parseSheet','options','getComputedStyle','ICON_SELECT_COLOR','event','fillRect','dragTarget','viewport','clearSort','drawTopLine','7fff00','e-virt-table-menu-item','eventTable','images','updateParentTreeSelection','EMPTY_BODY_HEIGHT','icons','4CltwLK','emptyEl','column','加载中...','batchSetItemValueByEditor','getTreeSelectionState','drawTreeImageY','drawX','finally','setCustomHeaderFixedData','hoverIconName','setItemValueByEditor','ArrowUp','getVirtualBodyCell','hasScrollbar','prevBtn','find','maxY','disconnect','cellCache','TREE_SELECT_MODE','drawSelectionImageHeight','setCurrentRowByRowIndex','observe','adjustPositionY','正在平滑补充可视区数据','checked','onTouchstart','textAlign','scrollYTo','toggleRowSelection','setMouseUp','slice','drawView','offsetTop','toString','footerData','196qhHtRw','timerY','renderType','fixedData','object','e-virt-table-main-menu','drawContainer','data-submenu','italic\x20','icon-select','selectOnlyOne','itemRowKeyMap','renderFooter','handleFooterEvent','text','noFixedCells','eventTasks','removeEventListener','checkbox-check-disabled','navigatePrevious','isFocus','CHECKBOX_UNCHECK_COLOR','renderLeafCellHeaders','sheet-tab','body','Placeholder','fixed','hideAllChildSubmenus','source','faebd7','Merged\x20cells\x20cannot\x20span\x20copy\x20data','visibleCellHoverChange','flex','px\x20','smooth','56928gcduQG','drawSortImageY','batchSetItemValue','getItemValueForRowIndexAndColIndex','bindEvents','READONLY_COLOR','#ED3F14','backgroundColor','unobserve','#fff','hex3','getRowKeyByItem','ffe4b5','currentDOMTreeMenu','1px','minX','abs','setRowSelection','rgb(','center','selectionChange','unshift','horizontal','handleBodyEvent','mousedownHeader','ENABLE_SELECTOR_SPAN_ROW','width','selectColsIng','config','getLeafKeys','solid','updateStyle','selectionClick','lineHeight','BOTTOM','imageEnterAndLeave','loadingWindows','mousedown','autofillMove','selector','hoverRow','function','leafCellHeaders','isDark','cellFooterMouseenter'];a=function(){return n8;};return a();}function dc(u,v=[]){const {column:w,row:x,visibleLeafColumns:y}=u,z=y['filter'](B=>v['includes'](B['key']));if(v['includes'](w['key'])){const B=os(x,z);return B[w['key']]===0x0?{'rowspan':0x0,'colspan':0x0,'relationColKeys':v,'mergeCol':!0x0}:{'rowspan':0x1,'colspan':B[w['key']],'relationColKeys':v,'mergeCol':!0x0};}}function mc(s,u=document['documentElement']){const bR=b,v=s['startsWith']('--')?s:'--'+s;return getComputedStyle(u)['getPropertyValue'](v)[bR(0x295)]();}function Tl(u){const bS=b;if(!u)return new Date(0x0);if(typeof u=='number')return new Date(u);const v=String(u)['trim'](),w=new Date(v);if(!isNaN(w['getTime']()))return w;const x=[/^(\d{4})-(\d{1,2})-(\d{1,2})$/,/^(\d{4})\/(\d{1,2})\/(\d{1,2})$/,/^(\d{4})\.(\d{1,2})\.(\d{1,2})$/,/^(\d{1,2})-(\d{1,2})-(\d{4})$/,/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/,/^(\d{1,2})\.(\d{1,2})\.(\d{4})$/,/^(\d{1,2})-(\d{1,2})-(\d{4})$/,/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/,/^(\d{1,2})\.(\d{1,2})\.(\d{4})$/,/^(\d{4})(\d{2})(\d{2})$/,/^(\d{4})-(\d{1,2})-(\d{1,2})\s+(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?$/,/^(\d{4})\/(\d{1,2})\/(\d{1,2})\s+(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?$/];for(const y of x){const z=v['match'](y);if(z){const B=z['slice'](0x1)['map'](Number);if(y['source']['includes']('YYYY-MM-DD')||y['source']['includes']('YYYY/MM/DD')||y['source']['includes']('YYYY.MM.DD')){const [C,F,G,H=0x0,J=0x0,K=0x0]=B;return new Date(C,F-0x1,G,H,J,K);}else{if(y['source']['includes'](bS(0x1a1))||y['source']['includes']('DD/MM/YYYY')||y['source']['includes']('DD.MM.YYYY')){const [L,N,O,P=0x0,R=0x0,S=0x0]=B;return new Date(O,N-0x1,L,P,R,S);}else{if(y['source']['includes']('MM-DD-YYYY')||y['source']['includes'](bS(0x2c6))||y[bS(0x32c)]['includes']('MM.DD.YYYY')){const [T,U,V,W=0x0,X=0x0,Y=0x0]=B;return new Date(V,T-0x1,U,W,X,Y);}else{if(y['source'][bS(0x8c)](bS(0x273))){const [a0,a1,a2]=B;return new Date(a0,a1-0x1,a2);}}}}}}return new Date(NaN);}function Zc(s,u){const bT=b,v=Tl(s),w=Tl(u);return isNaN(v['getTime']())&&isNaN(w['getTime']())?0x0:isNaN(v['getTime']())?-0x1:isNaN(w[bT(0x80)]())?0x1:v['getTime']()-w['getTime']();}class ns{constructor(u,v,w,x,y,z,B){const bU=b;m(this,'ctx'),m(this,'x',0x0),m(this,'y',0x0),m(this,'width',0x0),m(this,'height',0x0),m(this,'fixed'),m(this,bU(0x22b)),this[bU(0x1fa)]=u,this['x']=v,this['y']=w,this[bU(0x34d)]=x,this[bU(0x8e)]=y,this['fixed']=B,this['cellType']=z;}['isHorizontalVisible'](){const bV=b;if(this[bV(0x32a)])return!0x0;const {stageWidth:u,fixedLeftWidth:v,scrollX:w,fixedRightWidth:x}=this['ctx'],y=u;return!(this['x']+this['width']-v-w<=0x0||this['x']-w>=y-x);}['isVerticalVisible'](){const bW=b,{stageHeight:s,scrollY:u}=this['ctx'],v=s;return!(this['y']+this[bW(0x8e)]-u<=0x0||this['y']-u>=v);}['getDrawX'](){const bX=b;if(this['fixed']==='left')return this['x'];if(this[bX(0x32a)]==='right'){const {stageWidth:s,config:{SCROLLER_TRACK_SIZE:u}}=this[bX(0x1fa)];return s-(this['ctx'][bX(0x268)][bX(0x34d)]-this['x'])-u;}return this['x']-this[bX(0x1fa)]['scrollX'];}[bY(0x10e)](){const bZ=bY;return this['cellType']===bZ(0x268)?this['y']:this['cellType']==='footer'&&this['ctx']['config']['FOOTER_FIXED']?this['y']:this['y']-this[bZ(0x1fa)]['scrollY'];}['getLeftFixedX'](){return this['x']-this['ctx']['scrollX'];}['getRightFixedX'](){}}class il extends ns{constructor(u,v,w,x,y,z,B,C,F,G=bY(0x328),H=!0x0){const c0=bY;super(u,x,y,z,B,G,C['fixed']),m(this,'formatter'),m(this,'formatterFooter'),m(this,c0(0x2f5),''),m(this,'operation',!0x1),m(this,'align'),m(this,c0(0x125)),m(this,'fixed'),m(this,c0(0x13e)),m(this,'editorType'),m(this,c0(0xc1)),m(this,'cellType'),m(this,'level'),m(this,'colspan',0x1),m(this,c0(0xcb),0x1),m(this,'mergeRow',!0x1),m(this,'mergeCol',!0x1),m(this,'relationRowKeys',[]),m(this,'relationColKeys',[]),m(this,'key'),m(this,'column'),m(this,c0(0x396)),m(this,'colIndex'),m(this,'rowKey'),m(this,'row'),m(this,'value'),m(this,c0(0x1e2)),m(this,c0(0x31c)),m(this,'style',{}),m(this,'domDataset',{}),m(this,c0(0x3ba),[]),m(this,'message',''),m(this,'text',''),m(this,'displayText',''),m(this,'visibleWidth',0x0),m(this,c0(0x140),0x0),m(this,'isHasChanged',!0x1),m(this,'drawX',0x0),m(this,c0(0x2bd),0x0),m(this,'drawCellBgColor',''),m(this,c0(0x193),''),m(this,'drawTextColor',''),m(this,'drawTextFont',''),m(this,'drawTextX',0x0),m(this,'drawTextY',0x0),m(this,'drawTextWidth',0x0),m(this,'drawTextHeight',0x0),m(this,'drawTreeImageX',0x0),m(this,c0(0x2f1),0x0),m(this,'drawTreeImageWidth',0x0),m(this,'drawTreeImageHeight',0x0),m(this,'drawTreeImageName',''),m(this,'drawTreeImageSource'),m(this,'drawSelectionImageX',0x0),m(this,'drawSelectionImageY',0x0),m(this,'drawSelectionImageWidth',0x0),m(this,c0(0x300),0x0),m(this,'drawSelectionImageName',''),m(this,'drawSelectionImageSource'),m(this,c0(0x221),0x0),m(this,'drawHoverImageY',0x0),m(this,'drawHoverImageWidth',0x0),m(this,'drawHoverImageHeight',0x0),m(this,'drawHoverImageName',''),m(this,'drawHoverImageSource'),m(this,'autoRowHeight',!0x1),m(this,'calculatedHeight',0x0),m(this,'ellipsis',!0x1),m(this,'rowExpand',!0x1),m(this,'rowHasChildren',!0x1),m(this,c0(0xbb),!0x0),m(this,c0(0x135),'value'),m(this,c0(0x1d8),0x1f4),m(this,c0(0xcd),'top'),m(this,'maxLineClamp',c0(0x21c)),m(this,c0(0x312),'default'),m(this,'renderFooterType','default'),this[c0(0x250)]=this['width'],this['visibleHeight']=this['height'],this['colIndex']=w,this['rowIndex']=v,this[c0(0x17f)]=C['key'],this['type']=C['type']||'',this[c0(0x38e)]=C['editorType']||'text',this['selectorCellValueType']=C['selectorCellValueType']||this[c0(0x1fa)]['config'][c0(0x2d0)]||c0(0x121),this[c0(0xc1)]=C['editorProps']||{},this['cellType']=G,this['align']=C[c0(0x3c0)]||this['ctx'][c0(0x34f)][c0(0x293)],this['verticalAlign']=C['verticalAlign']||this['ctx']['config'][c0(0x254)],this[c0(0x32a)]=C['fixed']||'',this[c0(0x190)]=C['level']||0x0,this['operation']=C[c0(0xad)]||!0x1,this['column']=C,this['rules']=C['rules']||[],this[c0(0x17e)]=F,this['rowKey']=this['cellType']==='body'?this['ctx']['database']['getRowKeyForRowIndex'](v):this[c0(0x22b)]+'_'+this['rowIndex'],this['value']=this['getValue'](),this[c0(0x1e2)]=C['render'],this['overflowTooltipShow']=C['overflowTooltipShow']!==!0x1,this['autoRowHeight']=C['autoRowHeight']!==void 0x0?C[c0(0x36f)]:this['ctx'][c0(0x34f)]['AUTO_ROW_HEIGHT'],this['overflowTooltipMaxWidth']=C['overflowTooltipMaxWidth']||0x1f4,this['overflowTooltipPlacement']=C['overflowTooltipPlacement']||'top',this['renderFooter']=C['renderFooter'],this[c0(0x2f5)]=C[c0(0x2f5)],this['formatter']=C['formatter'],this['formatterFooter']=C['formatterFooter'],this['maxLineClamp']=C['maxLineClamp']||'auto',this['renderType']=C['renderType']||'default',this['renderFooterType']=C['renderFooterType']||'default',H&&this['update']();}['setWidthHeight'](s,u){this['width']=s,this['height']=u;}['getValidationMessage'](){const c1=bY,s=this[c1(0x1fa)]['database']['getValidationError'](this['rowKey'],this['key']);if(Array['isArray'](s)&&s['length']){const [u]=s;this['message']=u['message']||'';}return this[c1(0x83)];}[bY(0x1d1)](){const c2=bY;this[c2(0x2f2)]=this['getDrawX'](),this['drawY']=this['getDrawY'](),this[c2(0x3da)]=this['drawX'],this['drawTextY']=this[c2(0x2bd)],this['isHasChanged']=this['ctx']['database']['isHasChangedData'](this['rowKey'],this['key']),this['updateSpan'](),this[c2(0x3fb)]=this['visibleWidth'],this['drawTextHeight']=this['visibleHeight'],this[c2(0x352)](),this['updateType'](),this['updateHoverIcon'](),this['updateSelection'](),this['updateTree'](),this['updateEditor'](),this['updateRender'](),this['getValidationMessage'](),this['updateContainer'](),this['text']=this[c2(0x3c1)](),this['displayText']=this[c2(0x15d)]();}[bY(0x242)](){const c3=bY;if(this['cellType']===c3(0x1de))return;const {SPAN_METHOD:u}=this[c3(0x1fa)]['config'];if(typeof u=='function'){const v=u,{colspan:w=0x1,rowspan:x=0x1,relationRowKeys:y,relationColKeys:z,mergeRow:B=!0x1,mergeCol:C=!0x1}=v({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this['column'],'value':this['getValue'](),'headIndex':this['ctx']['body'][c3(0x7e)],'headPosition':this[c3(0x1fa)][c3(0x247)]['getPositionForRowIndex'](this['ctx']['body']['headIndex']),'visibleRows':this['ctx'][c3(0x328)]['visibleRows'],'visibleLeafColumns':this['ctx'][c3(0x268)]['visibleLeafColumns'],'rows':this['ctx']['body']['data']})||{};Array['isArray'](y)&&y['length']>0x0?this['relationRowKeys']=y:this['relationRowKeys']=[this['key']],Array['isArray'](z)&&z['length']>0x0?this['relationColKeys']=z:this['relationColKeys']=[this['key']],this[c3(0x2b7)]=C,this['mergeRow']=B,this['colspan']=w,this['rowspan']=x,this['visibleWidth']=this['getWidthByColIndexColSpan'](this[c3(0xa5)],this['colspan']),this['visibleHeight']=this['ctx'][c3(0x247)]['getHeightByRowIndexRowSpan'](this['rowIndex'],this['rowspan']);}}['updateSpanInfo'](){const c4=bY;if(this['mergeRow']||this['mergeCol']){const s=this['getSpanInfo']();this[c4(0x8e)]=s['height'],this['width']=s[c4(0x34d)],this[c4(0x2f2)]=this['getDrawX'](),this['drawY']=this['getDrawY'](),this['drawY']-=s['offsetTop'],this['drawX']-=s['offsetLeft'];}}['updateType'](){const c5=bY,{BODY_CELL_TYPE_METHOD:s}=this['ctx']['config'];if(typeof s=='function'){const u=s({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this[c5(0xa5)],'column':this['column'],'value':this['getValue']()});u!==void 0x0&&(this['type']=u);}}['updateEditor'](){const c6=bY,{BODY_CELL_EDITOR_METHOD:u}=this['ctx']['config'];if(typeof u=='function'){const v=u({'row':this['row'],'rowIndex':this[c6(0x396)],'colIndex':this['colIndex'],'column':this[c6(0x2ed)],'value':this[c6(0xa2)]()});if(v!==void 0x0){const {type:w,props:x={}}=v;this['editorType']=w,this['editorProps']=x;}}}['updateRender'](){const c7=bY,{BODY_CELL_RENDER_METHOD:s}=this[c7(0x1fa)]['config'];if(typeof s=='function'){const u=s({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this[c7(0x2ed)],'value':this['getValue']()});u!==void 0x0&&(this['render']=u);}}['validate'](){const c8=bY;this['ctx'][c8(0x247)]['getValidator'](this['rowKey'],this[c8(0x17f)])[c8(0x220)](()=>{const c9=c8;this['ctx'][c9(0x247)]['setValidationError'](this['rowKey'],this['key'],[]),this['message']='';})['catch'](s=>{const ca=c8;if(Array['isArray'](s)&&s['length']){const [u]=s;this['message']=u['message'],this[ca(0x1fa)][ca(0x247)]['setValidationError'](this['rowKey'],this['key'],s);}})[c8(0x2f3)](()=>{const cb=c8;this[cb(0x1fa)]['emit']('draw');});}['updateStyle'](){this['autoRowHeight']&&(this['domDataset']={'data-auto-height':!0x0,'data-row-index':this['rowIndex'],'data-col-index':this['colIndex']}),this['style']=this['getOverlayerViewsStyle']();}['updateTree'](){const cd=bY,{CELL_PADDING:u=0x0}=this['ctx']['config'],{rowKey:v,cellType:w}=this;let x,z=0x0,B='';if(!([cd(0x12f),cd(0x1c5),'tree-selection']['includes'](this['type'])&&w==='body'))return;const C=this['ctx']['database']['getRowForRowKey'](v),{expand:F=!0x1,hasChildren:H=!0x1,expandLoading:J=!0x1,level:N=0x0}=C||{};this['rowExpand']=F,this['rowHasChildren']=H;const {TREE_INDENT:O=0x10,CHECKBOX_SIZE:P,TREE_ICON_SIZE:R}=this['ctx']['config'];if(z=N*O,J){const a3=this['ctx']['icons']['get']('loading');B='loading',x=a3;}else{if(H){const a4=this[cd(0x1fa)]['icons']['get']('expand'),a5=this['ctx'][cd(0x2ea)][cd(0x27f)]('shrink');x=F?a5:a4,B=F?'shrink':'expand';}}let T=R,U=R,V=this['drawX'];(this['align']==='center'||this['align']==='right')&&(V=this['drawX']+(this['visibleWidth']-T-0x2*u)/0x2,this['align']=cd(0xca));let a0=V+z+u,a1=this['drawY']+(this[cd(0x140)]-U)/0x2,a2=z+this['drawX']+T-0.5;this['type']==='selection-tree'?(a0=z+this['drawSelectionImageX']+this['drawSelectionImageWidth'],a2=a0+T-u/0x2):this['type']==='tree-selection'?a2=a0+P+T-u/0x2:a2=a0+T-u/0x2,this['drawTextX']=a2,this['drawTextWidth']=this['drawX']+this['visibleWidth']-a2,!(a0+T+u>this[cd(0x2f2)]+this['visibleWidth'])&&(a1+U+u>this['drawY']+this['visibleHeight']||(this[cd(0x3d3)]=a0,this['drawTreeImageY']=a1,this['drawTreeImageWidth']=T,this['drawTreeImageHeight']=U,x?(this['drawTreeImageName']=B,this['drawTreeImageSource']=x):(this['drawTreeImageName']='',this['drawTreeImageSource']=void 0x0)));}['drawTreeLine'](){const cf=bY,{TREE_LINE:u,TREE_INDENT:v=0x10,TREE_ICON_SIZE:w=0x10,TREE_LINE_COLOR:x='#e1e6eb'}=this['ctx']['config'];if(!u||this['cellType']!==cf(0x328)||!['tree','selection-tree',cf(0x1fd)][cf(0x8c)](this['type'])||this['rowspan']===0x0||this[cf(0x217)]===0x0)return;const z=this['ctx']['database'][cf(0x152)](this['rowKey'])||{},B=z[cf(0x190)]??0x0,C=this['drawTreeImageX']+this[cf(0x176)]/0x2,F=this['drawTreeImageY']+this['drawTreeImageHeight']/0x2;let G=this[cf(0x3d3)]-B*v;const H=Array['isArray'](z['parentRowKeys'])?z[cf(0x118)]:[];if(B>0x0){for(let N=0x0;N<B-0x1;N+=0x1){const O=H[N+0x1];if((O?this['ctx'][cf(0x247)]['getRowForRowKey'](O)||{}:{})['isLastChild'])continue;const P=Math['round'](this['drawTreeImageX']-(B-N)*v+w/0x2);this['ctx'][cf(0x240)][cf(0x1ee)]([P,this['drawY'],P,this[cf(0x2bd)]+this[cf(0x140)]],{'borderColor':x,'borderWidth':0x1,'lineDash':[0x4,0x4],'lineDashOffset':0x0});}const J=Math['round'](this['drawTreeImageX']-v+w/0x2),K=z['isLastChild']?F:this[cf(0x2bd)]+this[cf(0x140)];this[cf(0x1fa)]['paint']['drawLine']([J,this['drawY'],J,K],{'borderColor':x,'borderWidth':0x1,'lineDash':[0x4,0x4],'lineDashOffset':0x0});const L=Math['round'](G+(B-0x1)*v+w/0x2);this['ctx'][cf(0x240)]['drawLine']([L,F,C,F],{'borderColor':x,'borderWidth':0x1,'lineDash':[0x4,0x4],'lineDashOffset':0x0});}if(z['hasChildren']&&z['expand']){const R=this['drawTreeImageY']+this[cf(0x3df)],S=this['drawY']+this['visibleHeight'];this['ctx']['paint'][cf(0x1ee)]([C,R,C,S],{'borderColor':x,'borderWidth':0x1,'lineDash':[0x4,0x4],'lineDashOffset':0x0});}}['updateContainer'](){const cg=bY,{BODY_BG_COLOR:u,EDIT_BG_COLOR:v,BODY_CELL_STYLE_METHOD:x,FOOTER_CELL_STYLE_METHOD:z,READONLY_TEXT_COLOR:B,BODY_TEXT_COLOR:C,FOOTER_TEXT_COLOR:H,FOOTER_BG_COLOR:J,HIGHLIGHT_SELECTED_ROW:N,HIGHLIGHT_SELECTED_ROW_COLOR:P,HIGHLIGHT_HOVER_ROW:a0,HIGHLIGHT_HOVER_ROW_COLOR:a1,STRIPE:a2,STRIPE_COLOR:a3,FINDER_CELL_BG_COLOR:a4}=this['ctx']['config'];if(this['cellType']==='footer'){let ai=J,aj=H;if(typeof z=='function'){const ak=z,{backgroundColor:al,color:am,font:an}=ak({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this['column'],'value':this['getValue']()})||{};al&&(ai=al),am&&(aj=am),an&&(this['drawTextFont']=an);}this['drawCellSkyBgColor']='transparent',this['drawCellBgColor']=ai,this['drawTextColor']=aj;return;}let a5='transparent';const a6=this['ctx']['hoverCell'],a7=this['ctx']['currentCell'];let a8=this['rowIndex'],a9=this['rowIndex'];if(this[cg(0xcb)]!==0x1&&(a0||N)){const ao=this['getSpanInfo'](),{yArr:ap}=ao;a8=ap[0x0],a9=ap[0x1];}a0&&a6&&(a6['rowKey']===this['rowKey']&&(a5=a1),a6['rowIndex']>=a8&&a6[cg(0x396)]<=a9&&(a5=a1)),N&&a7&&(a7['rowKey']===this[cg(0xf7)]&&(a5=P),a7['rowIndex']>=a8&&a7['rowIndex']<=a9&&(a5=P)),this['drawCellSkyBgColor']=a5;let aa=u,ab=C;if(this['ctx']['database']['getReadonly'](this['rowKey'],this['key'])||(aa=v,ab=B),a2&&(this[cg(0x396)]%0x2?aa=a3:aa=u),typeof x=='function'){const aq=x,{backgroundColor:ar,color:au,font:av}=aq({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this['column'],'isHasChanged':this[cg(0x27c)],'value':this[cg(0xa2)]()})||{};ar&&(aa=ar),au&&(ab=au),av&&(this[cg(0x13a)]=av);}const {rowIndex:ad,colIndex:af,type:ag}=this['ctx']['finderBar'];ad===this['rowIndex']&&af===this['colIndex']&&ag==='body'&&(aa=a4),this['drawCellBgColor']=aa,this[cg(0xa9)]=ab;}['updateSelection'](){const cj=bY,{visibleWidth:u,visibleHeight:v,rowspan:w,colspan:x,cellType:z,type:B,rowIndex:C,rowKey:F}=this;if(w===0x0||x===0x0||z==='footer'||!['index-selection',cj(0xc2),cj(0x1c5),'tree-selection'][cj(0x8c)](B))return;const H=this[cj(0x1fa)]['database']['getRowSelectable'](F),{CHECKBOX_SIZE:J=0x0,CELL_PADDING:K}=this['ctx']['config'];let N=this['drawX']+K;(this['align']===cj(0x346)||this['align']==='right')&&(N=this[cj(0x2f2)]+(u-J)/0x2);let O=N,P=this[cj(0x2bd)]+(v-J)/0x2;if(B!=='selection-tree'&&B==='tree-selection'){const {TREE_INDENT:U=0x10,TREE_ICON_SIZE:V}=this['ctx']['config'],a0=this['ctx'][cj(0x247)]['getRowForRowKey'](F),{level:a1=0x0}=a0||{},a2=a1*U;O=N+V+a2;}let R=this['ctx']['icons']['get'](cj(0x192)),T='checkbox-uncheck';if(B===cj(0x1c5)||B===cj(0x1fd)){const a3=this['ctx']['database']['getTreeSelectionState'](F);a3[cj(0xd1)]&&H?(R=this['ctx']['icons']['get']('checkbox-indeterminate'),T='checkbox-indeterminate'):a3['checked']&&H?(R=this['ctx'][cj(0x2ea)]['get']('checkbox-check'),T='checkbox-check'):!a3[cj(0x305)]&&H?(R=this['ctx']['icons'][cj(0x27f)]('checkbox-uncheck'),T='checkbox-uncheck'):(R=this['ctx']['icons']['get']('checkbox-disabled'),T=cj(0x1a0));}else{const a4=this['ctx']['database']['getRowSelection'](F);a4&&H?(R=this[cj(0x1fa)]['icons']['get']('checkbox-check'),T='checkbox-check'):a4&&!H?(R=this['ctx']['icons']['get']('checkbox-check-disabled'),T='checkbox-check-disabled'):!a4&&H?(R=this['ctx'][cj(0x2ea)]['get']('checkbox-uncheck'),T='checkbox-uncheck'):(R=this['ctx']['icons'][cj(0x27f)]('checkbox-disabled'),T='checkbox-disabled');}O+J+K>this['drawX']+this['visibleWidth']||P+J+K>this[cj(0x2bd)]+this['visibleHeight']||(B==='index-selection'?(this['ctx']['hoverCell']&&this['ctx'][cj(0x122)]['rowIndex']===C||['checkbox-disabled','checkbox-check'][cj(0x8c)](T))&&(this['drawSelectionImageX']=O,this['drawSelectionImageY']=P,this['drawSelectionImageWidth']=J,this['drawSelectionImageHeight']=J,this['drawSelectionImageName']=T,this[cj(0x3b6)]=R):(this['drawSelectionImageX']=O,this['drawSelectionImageY']=P,this[cj(0xae)]=J,this['drawSelectionImageHeight']=J,this[cj(0x29b)]=T,this['drawSelectionImageSource']=R));}['updateHoverIcon'](){const ck=bY;if(this['ctx']['database']['getReadonly'](this['rowKey'],this[ck(0x17f)]))return;const {BODY_CELL_HOVER_ICON_METHOD:u,CELL_HOVER_ICON_SIZE:v,CELL_PADDING:w,ENABLE_MERGE_CELL_LINK:x}=this[ck(0x1fa)][ck(0x34f)];if(typeof u==ck(0x35c)){const B=u({'row':this['row'],'rowIndex':this[ck(0x396)],'colIndex':this[ck(0xa5)],'column':this['column'],'value':this['getValue']()});B!==void 0x0&&(this['hoverIconName']=B);}const {hoverCell:z}=this['ctx'];if(this['hoverIconName']&&!this['ctx']['editing']&&z){let C=0x0,F=0x0;if(z['rowKey']===this[ck(0xf7)]&&(C=this[ck(0x2f2)]+this['width']-v-w,F=this['drawY']+(this['height']-v)/0x2),this['rowspan']!==0x1&&x){const H=this[ck(0x184)](),{yArr:J}=H,K=J[0x0],L=J[0x1];if(z[ck(0x396)]>=K&&z['rowIndex']<=L){const {width:N,height:O,offsetTop:P,offsetLeft:R}=H;C=this['drawX']-R+N-v-w,F=this[ck(0x2bd)]-P+(O-v)/0x2;}}const G=this['ctx']['icons'][ck(0x27f)](this['hoverIconName']);this['drawHoverImageX']=C,this['drawHoverImageY']=F,this['drawHoverImageWidth']=v,this['drawHoverImageHeight']=v,this['drawHoverImageName']=this['hoverIconName'],this['drawHoverImageSource']=G;}}['getAutoHeight'](){const cm=bY;if(this['cellType']!=='body'||!this[cm(0x36f)]||this['rowspan']===0x0)return 0x0;if(this[cm(0x1e2)]){const z=this[cm(0x1fa)]['database']['getOverlayerAutoHeight'](this['rowIndex'],this[cm(0xa5)]);return this['rowspan']>0x1?z<this['visibleHeight']?0x0:Math['round'](z-(this['visibleHeight']-this['height'])):Math[cm(0x1ff)](z);}if(!(this['displayText']&&typeof this['displayText']=='string'))return 0x0;const {BODY_FONT:u,CELL_PADDING:v,CELL_LINE_HEIGHT:w}=this['ctx']['config'],x=this['displayText']+'_'+this['drawTextWidth']+'_'+this['drawTextFont'],y=this['ctx']['paint']['calculateTextHeight'](this['displayText'],this['drawTextWidth'],{'font':this['drawTextFont']||u,'padding':v,'align':this['align'],'verticalAlign':this['verticalAlign'],'color':this['drawTextColor'],'autoRowHeight':this['autoRowHeight'],'lineHeight':w,'maxLineClamp':this['maxLineClamp'],'cacheTextKey':x});return this['rowspan']>0x1?y<this['visibleHeight']?0x0:Math['round'](y-(this[cm(0x140)]-this['height'])):Math['round'](y);}['getSpanInfo'](){const cn=bY;return this[cn(0x1fa)]['database']['getSpanInfo'](this);}['getDisplayText'](){const co=bY;return this[co(0x22b)]==='footer'?this['renderFooter']&&this['renderFooterType']==='default'||this['text']===null||this['text']===void 0x0?'':this['text']:this['rowspan']===0x0||this['colspan']===0x0||this[co(0x1e2)]&&this['renderType']==='default'||this['type']===co(0x1c2)&&(this['ctx']['hoverCell']&&this['ctx']['hoverCell']['rowIndex']===this['rowIndex']||['checkbox-disabled','checkbox-check']['includes'](this['drawSelectionImageName']))||this[co(0x31e)]===null||this['text']===void 0x0?'':''+this['text'];}['getText'](){const cp=bY;if(this['cellType']===cp(0x1de))return typeof this['formatterFooter']=='function'?this['formatterFooter']({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this['column'],'value':this[cp(0x17e)][this[cp(0x17f)]]}):this['row'][this['key']];if(typeof this['formatter']=='function')return this['formatter']({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this[cp(0xa5)],'column':this[cp(0x2ed)],'value':this['getValue']()});const {BODY_CELL_FORMATTER_METHOD:s}=this[cp(0x1fa)]['config'];return typeof s=='function'?s({'row':this['row'],'rowIndex':this[cp(0x396)],'colIndex':this['colIndex'],'column':this['column'],'value':this['getValue']()}):[cp(0x1c2),'index']['includes'](this['type'])?''+(this['rowIndex']+0x1):(this['value']=this['ctx']['database']['getItemValue'](this['rowKey'],this['key']),this['value']);}['getValue'](){return this['ctx']['database']['getItemValue'](this['rowKey'],this['key']);}['setValue'](s){const cq=bY;this['ctx']['setItemValueByEditor'](this['rowKey'],this[cq(0x17f)],s);}['getOverlayerViewsStyle'](){const cr=bY;let u=this[cr(0x2f2)]-this['ctx']['fixedLeftWidth'],v=this['drawY']-this['ctx']['body']['y'];if(this['fixed']==='left'?u=this['drawX']:this['fixed']==='right'&&(u=this['drawX']-(this['ctx']['stageWidth']-this['ctx']['fixedRightWidth'])),this[cr(0x22b)]==='footer'&&this['ctx'][cr(0x34f)]['FOOTER_FIXED']&&(v=this[cr(0x2bd)]-this[cr(0x1fa)]['footer']['y']),this['autoRowHeight']&&this['render']&&this['verticalAlign']===cr(0x1b9)){const x=this['ctx']['database']['getOverlayerAutoHeight'](this['rowIndex'],this['colIndex']);if(x<this['visibleHeight']&&x>0x0){const y=(this[cr(0x140)]-x)/0x2;v=v+y;}}this['autoRowHeight']&&this['ctx'][cr(0x247)][cr(0x3c5)](this[cr(0x396)],this[cr(0xa5)])===0x0&&(u=-0x1869f,v=-0x1869f);let w={};return this[cr(0xcb)]===0x0&&(w={'display':cr(0x25d)}),{'position':'absolute','overflow':'hidden','left':Math['round'](u-0x1)+'px','top':Math['round'](v-0x1)+'px','width':this['visibleWidth']+'px','height':this['autoRowHeight']&&this['renderType']===cr(0x289)?cr(0x21c):this[cr(0x140)]+'px','pointerEvents':'initial','userSelect':'none',...w};}[bY(0x316)](){const cu=bY,{paint:u,config:{BORDER_COLOR:v,BORDER:w}}=this['ctx'],{drawX:x,drawY:y}=this;u['drawRect'](x,y,this[cu(0x250)],this['visibleHeight'],{'borderColor':w?v:'transparent','fillColor':this['drawCellBgColor']}),u['drawRect'](x,y,this['width'],this['height'],{'borderColor':cu(0xaa),'fillColor':this['drawCellSkyBgColor']}),w||this['ctx']['paint']['drawLine']([x,y+this['visibleHeight'],x+this['visibleWidth'],y+this['visibleHeight']],{'borderColor':v,'fillColor':v,'borderWidth':0x1,'lineCap':'round','lineJoin':'round'});}['drawAutofillPiont'](){const cv=bY;if(this[cv(0x22b)]==='footer')return;const {SELECT_BORDER_COLOR:u,ENABLE_AUTOFILL:v,ENABLE_SELECTOR:w,AUTOFILL_POINT_BORDER_COLOR:x}=this[cv(0x1fa)]['config'];if(!w||!v||this['ctx']['editing'])return;const {xArr:y,yArr:z}=this[cv(0x1fa)][cv(0x35a)],B=y[0x1],C=z[0x1],{colIndex:F,rowIndex:G,drawX:H,drawY:J}=this;if(F===B&&G===C){const K=F===this[cv(0x1fa)]['maxColIndex']||G===this[cv(0x1fa)]['maxRowIndex']||F===this['ctx']['lastCenterColIndex']?0x6:0x4;this[cv(0x1fa)]['paint']['drawRect'](H+this[cv(0x34d)]-K,J+this['height']-K,0x6,0x6,{'borderColor':x,'fillColor':u});}}[bY(0x1ac)](){const cw=bY;this['drawTreeLine'](),this['drawText'](),this['drawImage'](),this['drawSelector'](),this['drawAutofillPiont'](),this[cw(0x3c8)]();}['getWidthByColIndexColSpan'](u,v){const cx=bY;if(v===0x0)return 0x0;let w=0x0;for(let x=u;x<u+v;x++){const y=this['ctx'][cx(0x268)]['leafCellHeaders'][x];w+=y[cx(0x34d)];}return w;}[bY(0x371)](){const cy=bY,{CELL_PADDING:u,BODY_FONT:v,PLACEHOLDER_COLOR:w,CELL_LINE_HEIGHT:x}=this['ctx']['config'],{placeholder:y}=this['column'];let z=this['displayText'],B=this['drawTextColor'];if(!this['ctx']['database']['getReadonly'](this['rowKey'],this['key'])&&y&&['',null,void 0x0]['includes'](this['text'])&&this['cellType']==='body'&&!(this['rowspan']===0x0||this['colspan']===0x0)&&(z=y,B=w),['',null,void 0x0]['includes'](z))return!0x1;typeof z!='string'&&(z=''+z);const C=z+'_'+this['drawTextWidth']+'_'+this['drawTextFont'];return this['ellipsis']=this['ctx'][cy(0x240)]['drawText'](z,this['drawTextX'],this['drawTextY'],this['drawTextWidth'],this['drawTextHeight'],{'font':this['drawTextFont']||v,'padding':u,'align':this['align'],'verticalAlign':this['verticalAlign'],'color':B,'autoRowHeight':this['autoRowHeight'],'lineHeight':x,'maxLineClamp':this[cy(0x2c0)],'cacheTextKey':C}),this['ellipsis'];}['drawImage'](){const cz=bY;if(this['drawSelectionImageSource']&&this[cz(0x1fa)][cz(0x240)]['drawImage'](this['drawSelectionImageSource'],this['drawSelectionImageX'],this[cz(0x1f2)],this['drawSelectionImageWidth'],this['drawSelectionImageHeight']),this['drawTreeImageSource']&&this['ctx']['paint']['drawImage'](this['drawTreeImageSource'],this['drawTreeImageX'],this['drawTreeImageY'],this[cz(0x176)],this['drawTreeImageHeight']),this['drawHoverImageSource']){const {CELL_HOVER_ICON_BG_COLOR:s,CELL_HOVER_ICON_BORDER_COLOR:u}=this['ctx']['config'];this[cz(0x1fa)]['paint'][cz(0x25f)](this['drawHoverImageX']-0x2,this['drawHoverImageY']-0x2,this['drawHoverImageWidth']+0x4,this['drawHoverImageHeight']+0x4,{'borderColor':u,'radius':0x4,'borderWidth':0x1,'fillColor':s}),this['ctx'][cz(0x240)]['drawImage'](this['drawHoverImageSource'],this['drawHoverImageX'],this[cz(0x38c)],this[cz(0x26c)],this[cz(0x24f)]);}}['drawSelector'](){const cA=bY;if(this['cellType']==='footer')return;const {ENABLE_SELECTOR:u}=this['ctx']['config'];if(!u)return;const {xArr:v,yArr:w,xArrCopy:x,yArrCopy:y}=this[cA(0x1fa)]['selector'];this['drawBorder']({'xArr':x,'yArr':y,'borderColor':this[cA(0x1fa)]['config']['SELECT_BORDER_COLOR']||'rgb(82,146,247)','fillColor':'transparent','borderWidth':0x1,'lineDash':[0x4,0x4]}),this['drawBorder']({'xArr':this['ctx']['autofill']['xArr'],'yArr':this[cA(0x1fa)]['autofill'][cA(0x3e9)],'borderColor':this[cA(0x1fa)]['config']['SELECT_BORDER_COLOR']||'rgb(82,146,247)','fillColor':cA(0xaa),'borderWidth':0x1,'lineDash':[0x4,0x4]}),this['drawBorder']({'xArr':v,'yArr':w,'borderColor':this['ctx']['config']['SELECT_BORDER_COLOR']||cA(0x25c),'fillColor':cA(0xaa),'borderWidth':0x1});const [z,B]=v,[C,F]=w;!(z===B&&C===F)&&this[cA(0xa5)]>=z&&this[cA(0xa5)]<=B&&this['rowIndex']>=C&&this['rowIndex']<=F&&this['ctx'][cA(0x240)]['drawRect'](this[cA(0x2f2)],this['drawY'],this['width'],this[cA(0x8e)],{'borderColor':'transparent','fillColor':this['ctx'][cA(0x34f)]['SELECT_AREA_COLOR']||'rgba(82,146,247,0.1)'}),this['operation']&&this['rowIndex']>=C&&this[cA(0x396)]<=F&&this['ctx']['paint']['drawRect'](this['drawX'],this['drawY'],this['visibleWidth'],this['visibleHeight'],{'borderColor':'transparent','fillColor':this['ctx']['config']['SELECT_ROW_COL_BG_COLOR']||'transparent'});}['drawErrorTip'](){const cB=bY;if(this['cellType']==='footer'||!this['message']||this[cB(0xcb)]===0x0||this['colspan']===0x0)return;const {ERROR_TIP_ICON_SIZE:u,ERROR_TIP_COLOR:v}=this['ctx']['config'],{width:w}=this,x=this['drawX'],y=this['drawY'],z=[x+w-u-0.5,y,x+w-0.5,y,x+w-0.5,y+u];this['ctx']['paint']['drawLine'](z,{'borderColor':v,'fillColor':v,'borderWidth':0x1,'lineCap':'round','lineJoin':'round'});}['drawBorder'](u){const cC=bY,{drawX:v,drawY:w,rowIndex:x,colIndex:z,height:B,width:C}=this;let F=v,H=w;const {xArr:J,yArr:K,lineDash:N=[],borderWidth:O=0x1,borderColor:P,fillColor:R}=u,T=J[0x0],U=J[0x1],V=K[0x0],a0=K[0x1];if(z>=T&&z<=U&&x===V){const a1=z===U?0x1:0x0,a2=z===T?0x1:0x0;this['ctx']['paint']['drawLine']([F+a2,H+0x1,F+C-a1,H+0x1],{'borderColor':P,'fillColor':R,'borderWidth':O,'lineCap':'round','lineJoin':'round','lineDash':N});}if(z===U&&x>=V&&x<=a0){const a3=x===V?0x1:0x0,a4=x===a0?0x1:0x0;this['ctx'][cC(0x240)]['drawLine']([F+C-0x1,H+a3,F+C-0x1,H+B-a4],{'borderColor':P,'fillColor':R,'borderWidth':O,'lineCap':'round','lineJoin':'round','lineDash':N});}if(z>=T&&z<=U&&x===a0){const a5=z===U?0x1:0x0,a6=z===T?0x1:0x0;this[cC(0x1fa)]['paint'][cC(0x1ee)]([F+a6,H+B-0x1,F+C-a5,H+B-0x1],{'borderColor':P,'fillColor':R,'borderWidth':O,'lineCap':'round','lineJoin':'round','lineDash':N});}if(z===T&&x>=V&&x<=a0){const a7=x===a0?0x1:0x0,a8=x===V?0x1:0x0;this[cC(0x1fa)][cC(0x240)][cC(0x1ee)]([F+0x1,H+a8,F+0x1,H+B-a7],{'borderColor':P,'fillColor':R,'borderWidth':O,'lineCap':'round','lineJoin':'round','lineDash':N});}}}class Ic{constructor(u,v){const cD=bY;m(this,'ctx'),m(this,'data'),m(this,'columns'),m(this,'footerData',[]),m(this,'rowKeyMap',new Map()),m(this,'colIndexKeyMap',new Map()),m(this,'headerMap',new Map()),m(this,'rowIndexRowKeyMap',new Map()),m(this,'rowKeyRowIndexMap',new Map()),m(this,'checkboxKeyMap',new Map()),m(this,'selectionMap',new Map()),m(this,'expandMap',new Map()),m(this,'originalDataMap',new Map()),m(this,'changedDataMap',new Map()),m(this,cD(0x3b7),new Map()),m(this,'itemRowKeyMap',new WeakMap()),m(this,cD(0xba),[]),m(this,'customHeader',{'fixedData':{},'sortData':{},'hideData':{},'resizableData':{}}),m(this,'overlayerAutoHeightMap',new Map()),m(this,'maxRowHeightCellMap',new Map()),m(this,'bufferCheckState',{'buffer':!0x1,'check':!0x1,'indeterminate':!0x1,'selectable':!0x0}),m(this,cD(0x2a4),0x0),m(this,'filterMethod'),m(this,'positions',[]),m(this,'sortState',new Map()),this[cD(0x1fa)]=u;const {data:w=[],columns:x=[],footerData:y=[]}=v;this['data']=w,this['footerData']=y,this[cD(0x380)]=x,this[cD(0x275)]();}['init'](u=!0x0){const cE=bY;this['ctx']['paint']['clearTextCache'](),this['clearBufferData'](),this['rowKeyMap'][cE(0x10f)](),this['checkboxKeyMap']['clear'](),this[cE(0x127)]['clear'](),this['rowIndexRowKeyMap'][cE(0x10f)](),this['rowKeyRowIndexMap']['clear'](),this['maxRowHeightCellMap']['clear']();const v=this['getColumns'](),w=Ci(v);if(this['ctx']['hasSelection']=w['some'](x=>x['type']===cE(0xc2)),this['ctx']['hasTree']=w['some'](x=>x['type']==='tree'),u){this[cE(0x107)][cE(0x10f)](),this['changedDataMap']['clear'](),this['validationErrorMap']['clear']();const {ROW_KEY:x}=this['ctx']['config'];x?(this['ctx']['hasSelection']||this[cE(0x1c4)]['clear'](),this['ctx'][cE(0x3c3)]||this['expandMap']['clear']()):(this['selectionMap'][cE(0x10f)](),this[cE(0x2b6)]['clear']());}this['itemRowKeyMap']=new WeakMap(),this['initData'](this['data']),this[cE(0x198)](),this['bufferCheckState'][cE(0x179)]=!0x1;}['clearBufferData'](){this['bufferData']=[];}['initData'](u,v=0x0,w=[]){const x=u['length'],{ROW_KEY:y='',DEFAULT_EXPAND_ALL:z,CELL_HEIGHT:B,SELECTABLE_METHOD:C,CHECKBOX_KEY:F,TREE_CHILDREN_KEY:G}=this['ctx']['config'];u['forEach']((H,J)=>{const cF=b;var K;G!=='children'&&(H['children']=H[G]);const N=H[y],O=N!=null?''+N:ms();this['itemRowKeyMap']['set'](H,O);const P=H['_height']||B,R=H['_readonly'];let T=!0x0;if(typeof C=='function'&&(T=C),F){const V=H[F];if(this['checkboxKeyMap']['has'](V)){const a0=this['checkboxKeyMap']['get'](V)||[];a0['push'](O),this[cF(0x2a1)]['set'](V,a0);}else this['checkboxKeyMap']['set'](V,[O]);}this['selectionMap']['set'](O,{'key':F?H[F]:O,'row':H,'check':((K=this['selectionMap']['get'](O))==null?void 0x0:K['check'])||!0x1});const U=z||this['expandMap']['get'](O)||H['_expand']||!0x1;this['expandMap']['set'](O,U),this['rowKeyMap'][cF(0x26b)](O,{'readonly':R,'index':J,'rowIndex':J,'level':v,'height':P,'calculatedHeight':-0x1,'check':!0x1,'selectable':T,'expand':U,'expandLazy':!0x1,'hasChildren':H['_hasChildren']||(Array['isArray'](H[cF(0xd0)])?H['children']['length']>0x0:!0x1),'expandLoading':!0x1,'item':H,'parentRowKeys':w,'parentRowKey':w[w['length']-0x1]||'','isLastChild':J===x-0x1}),Array['isArray'](H[cF(0xd0)])&&H['children'][cF(0xfa)]&&this[cF(0x15e)](H['children'],v+0x1,[...w,O]);});}['setRowHeight'](u,v){const cG=bY,w=this['rowIndexRowKeyMap'][cG(0x27f)](u);if(w===void 0x0)return;const x=this['rowKeyMap'][cG(0x27f)](w);x['height']=v,x['item']['_height']=v,this['clearBufferData']();}['setBatchRowHeight'](s){s['forEach'](({rowIndex:u,height:v})=>{const w=this['rowIndexRowKeyMap']['get'](u);if(w){const x=this['rowKeyMap']['get'](w);x['height']=v,x['item']['_height']=v;}}),this['clearBufferData']();}['setBatchCalculatedRowHeight'](s){const cH=bY;return s['every'](({height:u,rowIndex:v})=>this['getPositionForRowIndex'](v)['calculatedHeight']===u)?!0x1:(s[cH(0x3e1)](({rowIndex:u,height:v})=>{const cI=cH,w=this['rowIndexRowKeyMap']['get'](u);if(w){const x=this['rowKeyMap'][cI(0x27f)](w),{height:y=-0x1}=this['getMaxRowHeightItem'](w)||{};x['calculatedHeight']=Math['max'](v,y);}}),this[cH(0x3ee)](),this['getData'](),!0x0);}[bY(0x23a)](){let s=[];const u=v=>{v['forEach'](w=>{s['push'](w),Array['isArray'](w['children'])&&u(w['children']);});};return u(this['data']),s;}['generateColumns'](s){const cJ=bY,u=v=>v[cJ(0x387)](w=>{const cK=cJ;var x,z,B,C,F,G,H,J;const K=w[cK(0xd0)]&&Array[cK(0x1b4)](w['children'])?u(w[cK(0xd0)]):void 0x0,L={'hide':(z=(x=this['customHeader'])==null?void 0x0:x['hideData'])==null?void 0x0:z[w['key']],'fixed':(C=(B=this[cK(0x233)])==null?void 0x0:B['fixedData'])==null?void 0x0:C[w['key']],'sort':(G=(F=this['customHeader'])==null?void 0x0:F['sortData'])==null?void 0x0:G[w[cK(0x17f)]],'width':(J=(H=this['customHeader'])==null?void 0x0:H['resizableData'])==null?void 0x0:J[w['key']]},N={};for(const [P,R]of Object['entries'](L))R!==void 0x0&&(N[P]=R);const O=K&&K['every'](T=>T[cK(0x3c2)]);return{...w,'children':K,'hide':O||(typeof w['hide']=='function'?w[cK(0x3c2)](w):w['hide']),...N};});return u(s);}['getColumns'](){return this['generateColumns'](this['columns']);}['setColumns'](s){const cL=bY;this[cL(0x380)]=s,this['clearBufferData']();}['setData'](s){this['data']=s,this['init']();}['getData'](){const cM=bY;if(this['bufferData'][cM(0xfa)]>0x0)return{'data':this['bufferData'],'sumHeight':this['sumHeight'],'positions':this['positions']};let u=[],v=0x0;this['sumHeight']=0x0,this['positions']=[];const w=y=>{y['forEach'](z=>{const cN=b;u['push'](z);const B=this[cN(0x31b)]['get'](z),{expand:C,hasChildren:F,height:G,calculatedHeight:H}=this['rowKeyMap']['get'](B),J=this[cN(0x2a4)],K=Math['max'](H,G);this['sumHeight']+=K,this['rowIndexRowKeyMap']['set'](v,B),this['rowKeyRowIndexMap']['set'](B,v),this[cN(0x2b4)]['push']({'top':J,'height':K,'bottom':this['sumHeight'],'calculatedHeight':H}),v+=0x1,C&&F&&w(z['children']);});};this['rowIndexRowKeyMap']['clear'](),this['rowKeyRowIndexMap']['clear']();let x=this['data'];if(typeof this['filterMethod']=='function'&&(x=this[cM(0x132)](x)),this['sortState']['size']){const y=Array[cM(0x163)](this['sortState']['entries']())['sort']((z,B)=>z[0x1]['timestamp']-B[0x1]['timestamp']);x=this[cM(0x3ea)](x,y);}return w(x),this['bufferData']=u,{'data':u,'sumHeight':this['sumHeight'],'positions':this['positions']};}['setFooterData'](s){this['footerData']=s;}[bY(0x284)](){const cO=bY;return this[cO(0x30f)];}['setFilterMethod'](s){this['filterMethod']=s;}['clearFilterMethod'](){this['filterMethod']=void 0x0;}['getSortState'](s){const cP=bY;return this['sortState'][cP(0x27f)](s)||{'direction':'none','timestamp':0x0};}['setSortState'](s,u){const cQ=bY,v=Date['now']();this['ctx']['config']['SORT_STRICTLY']&&this['sortState']['clear'](),u===cQ(0x25d)?this['sortState']['delete'](s):this['sortState'][cQ(0x26b)](s,{'direction':u,'timestamp':v}),this['ctx']['emit']('sortChange',this['sortState']),this['clearBufferData'](),this[cQ(0x1fa)]['emit']('draw');}['clearSort'](){const cR=bY;this['sortState']['clear'](),this[cR(0x1fa)]['emit']('sortChange',this['sortState']),this[cR(0x3ee)](),this['ctx']['emit']('draw');}[bY(0x3ea)](u,v){let w=[...u];for(const [x,{direction:y}]of v){if(y==='none')continue;const z=this['getColumnByKey'](x);!z||!z['column']['sortBy']||(w=this['applySingleColumnSort'](w,x,y,z['column']['sortBy']));}return w['map'](B=>(B['children']&&Array['isArray'](B['children'])&&(B['children']=this['sortDataRecursive'](B['children'],v)),B));}['applySingleColumnSort'](u,v,w,x){const cS=bY;return u[cS(0x9b)]((y,z)=>{const cT=cS,B=y[v],C=z[v];let F=0x0;if(typeof x=='function')F=x(y,z);else{if(x==='number'){const G=Number(B)||0x0,H=Number(C)||0x0;F=G-H;}else{if(x===cT(0x11e)){const J=String(B||''),K=String(C||'');F=J['localeCompare'](K);}else x==='date'&&(F=Zc(B,C));}}return w==='asc'?F:-F;});}['expandItem'](s,u=!0x1){const cU=bY,v=this[cU(0x3f0)]['get'](s);v['expand']=u,this['expandMap']['set'](s,u),this[cU(0x3ee)](),this['ctx'][cU(0xc8)]('draw');}['setExpandRowKeys'](s,u=!0x0){const cV=bY;this['expandMap']['clear'](),s['forEach'](v=>{const w=this['rowKeyMap']['get'](v);this['expandMap']['set'](v,u),w['expand']=u;}),this['clearBufferData'](),this['ctx']['emit'](cV(0x1ac));}['getExpandRowKeys'](){let s=[];return this['rowKeyMap']['forEach']((u,v)=>{u['expand']&&s['push'](v);}),s;}['expandAll'](s){const cX=bY;this['expandMap']['clear'](),this['rowKeyMap']['forEach'](u=>{const cW=b;u['expand']=s,this[cW(0x2b6)]['set'](u['key'],s);}),this['clearBufferData'](),this['ctx'][cX(0xc8)]('draw');}[bY(0x200)](s,u=!0x1){const cY=bY,v=this[cY(0x3f0)]['get'](s);v[cY(0x200)]=u,this['clearBufferData'](),this[cY(0x1fa)][cY(0xc8)]('draw');}['setExpandChildren'](s,u){const cZ=bY,v=this['rowKeyMap']['get'](s);v['expand']=!0x0,this['expandMap'][cZ(0x26b)](s,!0x0),v[cZ(0x3cc)]=!0x0,v['item'][cZ(0xd0)]=u,this[cZ(0x15e)](v['item']['children'],v['level']+0x1),this[cZ(0x3ee)]();}['getIsExpandLoading'](s){return this['rowKeyMap']['get'](s)['expandLoading'];}['getIsExpandLazy'](s){const d0=bY;return this[d0(0x3f0)]['get'](s)['expandLazy'];}['getIsExpand'](s){const d1=bY;return this['rowKeyMap']['get'](s)[d1(0x14f)];}['getRowForRowKey'](s){return this['rowKeyMap']['get'](s);}['getRowForRowIndex'](s){const u=this['getRowKeyForRowIndex'](s);return this['rowKeyMap']['get'](u);}['getRowKeyForRowIndex'](s){return this['rowIndexRowKeyMap']['get'](s)||'';}['getRowKeyByItem'](s){return this['itemRowKeyMap']['get'](s);}['getRowIndexForRowKey'](s){return this['rowKeyRowIndexMap']['get'](s);}['getItemValueForRowIndexAndColIndex'](u,v){const d2=bY;if(!(this['rowIndexRowKeyMap']['has'](u)&&this[d2(0x127)]['get'](v)))return null;const w=this['rowIndexRowKeyMap']['get'](u),x=this[d2(0x127)][d2(0x27f)](v);return w===void 0x0||x===void 0x0?null:{'rowKey':w,'key':x,'value':this['getItemValue'](w,x)};}['getItemValue'](s,u){const d3=bY,v=this['rowKeyMap'][d3(0x27f)](s);return v&&v['item']?v['item'][u]===void 0x0?null:v['item'][u]:null;}async['batchSetItemValue'](u,v=!0x1,w=!0x0,x='none'){const d5=bY;let z=[],B=w;const C=new Set();let F=[],G=u['map'](N=>{const d4=b,{rowKey:O,key:P}=N;let R=N['value'],T=R;const U=this['getRowDataItemForRowKey'](O),V=this['getItemValue'](O,P),a0=this['getVirtualBodyCellByKey'](O,P);return a0?.['type']==='number'&&(['',void 0x0,null][d4(0x8c)](R)?T=null:/^-?\d+(\.\d+)?$/['test'](''+R)?T=Number(R):(T=V,F['push']({...N,'value':T,'oldValue':V,'row':U}))),{...N,'value':T,'oldValue':V,'row':U};});if(G=G[d5(0x36a)](N=>!F['some'](O=>N[d5(0xf7)]===O['rowKey']&&N['key']===O['key'])),F['length']){const N={'code':'ERR_BATCH_SET_NUMBER_VALUE','message':'Assignment\x20failed,\x20not\x20a\x20numeric\x20type','data':F};this['ctx'][d5(0xc8)]('error',N);}if(G=G['filter'](O=>O['oldValue']!==O['value']),!G[d5(0xfa)])return;const {BEFORE_VALUE_CHANGE_METHOD:H}=this['ctx'][d5(0x34f)];x==='none'&&typeof H=='function'&&(G=await H(G),B=!0x1),G[d5(0x3e1)](O=>{const {value:P,rowKey:R,key:T}=O,U=this['getItemValue'](R,T);C['add'](R),this['setItemValue'](R,T,P,!0x1,!0x1,!0x1,B),z['push']({'rowKey':R,'key':T,'oldValue':U,'newValue':P});});let J=[];C['forEach'](O=>{const d6=d5;J['push'](this['ctx']['database'][d6(0x210)](O));});const K=G['map'](({rowKey:O,key:P})=>this['getValidator'](O,P));Promise[d5(0x2c8)](K)[d5(0x220)](()=>{const d7=d5;this['validationErrorMap']['size']===0x0&&this['changedDataMap']['size']>0x0&&this[d7(0x1fa)]['emit']('validateChangedData',this['getChangedData']());});const L=G[d5(0x387)](O=>{const P=!!this['getValidationError'](O['rowKey'],O['key'])['length'];return{...O,'errorTip':P};});this['ctx']['emit'](d5(0x15a),L,J),v&&this['ctx']['history']['pushState']({'changeList':z,'scrollX':this['ctx']['scrollX'],'scrollY':this[d5(0x1fa)]['scrollY'],'type':'multiple'}),this[d5(0x1fa)]['emit']('draw');}async['setItemValue'](u,v,w,x=!0x1,z=!0x1,B=!0x1,C=!0x0){const d8=bY;if(!this['rowKeyMap']['has'](u))return{};const {item:F}=this[d8(0x3f0)]['get'](u);let G=F[v],H=w;if(C&&this['ctx']['database'][d8(0x1ca)](u,v))return{'oldValue':G,'newValue':G};F[v]!==null&&typeof F[v]=='object'&&(G=JSON['parse'](JSON['stringify'](F[v])));const J=u+'_'+v;this['originalDataMap']['has'](J)||this['originalDataMap']['set'](J,G);const K=this['originalDataMap']['get'](J),L=this['getRowDataItemForRowKey'](u);if(B){const N=this[d8(0x178)](u,v);if(N?.['type']===d8(0x186)){if(['',void 0x0,null][d8(0x8c)](w))H=null;else{if(/^-?\d+(\.\d+)?$/['test'](''+w))H=Number(w);else{H=G;const P={'code':d8(0x18d),'message':'Assignment\x20failed,\x20not\x20a\x20numeric\x20type','data':[{'rowKey':u,'key':v,'value':H,'oldValue':G,'row':L}]};this['ctx']['emit'](d8(0xa1),P);}}}if(H===G)return{'oldValue':G,'newValue':G};let O=[{'rowKey':u,'key':v,'value':H,'oldValue':G,'row':L}];this['batchSetItemValue'](O,x,!0x1),this['ctx'][d8(0xc8)]('editChange',{'rowKey':u,'key':v,'oldValue':G,'value':H,'originalValue':K,'row':L});}else this['changedDataMap']['set'](J,H),F[v]=H;return this['ctx']['hasEvent']('iterationChange')&&this['ctx']['emit'](d8(0x255),{'rowKey':u,'key':v,'oldValue':G,'value':H,'originalValue':this['originalDataMap'][d8(0x27f)](J),'row':L}),z&&this['ctx']['emit']('draw'),{'oldValue':G,'newValue':H};}['getRowDataItemForRowKey'](s){const d9=bY;if(!this[d9(0x3f0)]['has'](s))return{};const {item:u}=this['rowKeyMap']['get'](s);return u;}[bY(0x3c7)](u,v){const da=bY,{CHECKBOX_KEY:w}=this['ctx']['config'];if(w){if(!this['rowKeyMap']['has'](u))return!0x1;const {item:x}=this['rowKeyMap']['get'](u),y=x[w];this['checkboxKeyMap']['has'](y)&&(this['checkboxKeyMap'][da(0x27f)](y)||[])['forEach'](z=>{const B=this['selectionMap']['get'](z);B&&(B['check']=v);});}}['toggleRowSelection'](u,v){const db=bY,w=this['rowKeyMap'][db(0x27f)](u),x=this['selectionMap'][db(0x27f)](u);if(!x)return;v==='selection-tree'||v==='tree-selection'?this['toggleTreeSelection'](u):(x['check']=!x['check'],this['setRowSelectionByCheckboxKey'](u,x[db(0x21b)])),this[db(0x1fa)]['emit']('toggleRowSelection',w);const y=this['getSelectionRows']();this['ctx']['emit']('selectionChange',y),this['bufferCheckState'][db(0x179)]=!0x1,this[db(0x1fa)]['emit']('draw');}['toggleTreeSelection'](u){const dd=bY,v=this['getTreeSelectionState'](u),w=this['ctx']['config'][dd(0x2ff)];if(w===dd(0x21c))v['checked']&&!v['indeterminate']?(this['clearTreeSelectionRecursive'](u),this['setRowSelection'](u,!0x1,!0x1)):(this['selectTreeSelectionRecursive'](u),this['setRowSelection'](u,!0x0,!0x1));else{if(w==='cautious')v['checked']&&!v[dd(0xd1)]?(this['clearTreeSelectionRecursive'](u),this['setRowSelection'](u,!0x1,!0x1)):(this['selectTreeSelectionRecursive'](u),this['setRowSelection'](u,!0x0,!0x1));else{if(w==='strictly'){const x=this['selectionMap'][dd(0x27f)](u);x&&(x['check']=!x['check'],this[dd(0x3c7)](u,x['check']));}}}this[dd(0x1fa)]['emit']('selectionChange',this['getSelectionRows']()),this[dd(0x1fa)]['emit']('draw');}['selectTreeSelectionRecursive'](s){this['getTreeChildren'](s)['forEach'](u=>{this['setRowSelectionByParent'](u,!0x0),this['selectTreeSelectionRecursive'](u);});}[bY(0xf6)](s){this['getTreeChildren'](s)['forEach'](u=>{this['setRowSelectionByParent'](u,!0x1),this['clearTreeSelectionRecursive'](u);});}[bY(0x2e8)](u){const df=bY,v=this['getTreeParent'](u);if(!v)return;const w=this['getTreeChildren'](v)['map'](C=>this['selectionMap']['get'](C)),x=w['filter'](C=>C?.['check'])['length'],y=w['length'];let z=!0x1;y>0x0&&(x===0x0?z=!0x1:x===y||this['ctx']['config'][df(0x2ff)]==='auto'?z=!0x0:this['ctx'][df(0x34f)]['TREE_SELECT_MODE']==='cautious'&&(z=!0x1));const B=this['selectionMap']['get'](v);B&&B['check']!==z&&(B['check']=z,this['setRowSelectionByCheckboxKey'](v,z),this['updateParentTreeSelection'](v));}[bY(0x344)](u,v,w=!0x0){const dg=bY,x=this['selectionMap']['get'](u);x&&(x['check']=v,this['setRowSelectionByCheckboxKey'](u,x['check']),this['ctx']['emit'](dg(0x344),v,x[dg(0x17e)]),(this[dg(0x1fa)][dg(0x34f)][dg(0x2ff)]==='auto'||this['ctx']['config']['TREE_SELECT_MODE']==='cautious')&&this['updateParentTreeSelection'](u),w&&(this['bufferCheckState'][dg(0x179)]=!0x1,this['ctx']['emit']('draw')));}['setRowSelectionByParent'](s,u){const dj=bY,v=this['selectionMap']['get'](s);v&&(v[dj(0x21b)]=u,this['setRowSelectionByCheckboxKey'](s,v['check']));}['getSelectionRows'](){let s=[];return this['selectionMap']['forEach'](u=>{const dk=b;u[dk(0x21b)]&&s['push'](u['row']);}),s;}['getRowSelection'](s){const u=this['selectionMap']['get'](s);return u?u['check']:!0x1;}[bY(0x2f0)](u){const dm=bY;if(!this['getRowForRowKey'](u))return{'checked':!0x1,'indeterminate':!0x1};const v=this['selectionMap'][dm(0x27f)](u),w=v?.['check']||!0x1;if(this['getTreeChildren'](u)['length']===0x0)return{'checked':w,'indeterminate':!0x1};let x=!0x1,y=w;if(this['ctx']['config']['TREE_SELECT_MODE']==='auto'){const z=H=>{const dn=dm,J=this[dn(0x159)](H);let K=[];for(const L of J)K['push'](L),K['push'](...z(L));return K;},B=z(u)['map'](H=>this['selectionMap']['get'](H)),C=B[dm(0x36a)](H=>H?.['check'])['length'],F=B['length'],G=C>0x0;x=G&&C!==F,y=w||G,w&&F>0x0&&C===0x0&&(y=!0x1,x=!0x1);}else{if(this['ctx'][dm(0x34f)][dm(0x2ff)]==='cautious'){const H=P=>{const dp=dm,R=this['getTreeChildren'](P);let S=[];for(const T of R)S[dp(0x1f5)](T),S['push'](...H(T));return S;},J=H(u)['map'](P=>this['selectionMap']['get'](P)),K=J[dm(0x36a)](P=>P?.[dm(0x21b)])['length'],L=J[dm(0xfa)],N=K>0x0,O=K===L;x=N&&!O,y=w||O,w&&L>0x0&&K===0x0&&(y=!0x1,x=!0x1);}else this['ctx'][dm(0x34f)]['TREE_SELECT_MODE']==='strictly'&&(x=!0x1,y=w);}return{'checked':y,'indeterminate':x};}['getTreeChildren'](u){const dq=bY,v=this[dq(0x152)](u);if(!v||!v[dq(0x25e)]||!v['item'][dq(0xd0)])return[];const w=[],x=y=>{const dr=dq;for(const z of y){const B=this[dr(0x33e)](z);B&&w[dr(0x1f5)](B),z['children']&&z['children']['length']>0x0&&x(z['children']);}};return x(v['item']['children']),w;}['getTreeParent'](s){const u=(v,w)=>{const du=b;for(const x of v){const y=this['getRowKeyByItem'](x);if(x[du(0xd0)])for(const z of x['children']){if(this['getRowKeyByItem'](z)===w)return y;const B=u(x['children'],w);if(B)return B;}}return null;};return u(this['data'],s);}['getRowSelectable'](u){const {selectable:v,item:w,rowIndex:x}=this['rowKeyMap']['get'](u);return typeof v=='function'?v({'row':w,'rowIndex':x}):v;}['toggleAllSelection'](){const dv=bY;this[dv(0x1fa)]['config']['TREE_SELECT_MODE']==='auto'||this['ctx']['config']['TREE_SELECT_MODE']==='cautious'?this['rowKeyMap']['forEach']((u,v)=>{const dw=dv;let w=u[dw(0xbd)];if(typeof w=='function'&&(w=w({'row':u['item'],'rowIndex':u[dw(0x396)]})),w){const x=this['selectionMap']['get'](v);x&&(x['check']=!0x0,this['setRowSelectionByCheckboxKey'](v,!0x0));}}):this[dv(0x3f0)]['forEach']((u,v)=>{const dx=dv;let w=u[dx(0xbd)];typeof w==dx(0x35c)&&(w=w({'row':u[dx(0x25e)],'rowIndex':u['rowIndex']})),w&&this['setRowSelection'](v,!0x0,!0x1);});const s=this['getSelectionRows']();this['ctx']['emit']('toggleAllSelection',s),this['ctx']['emit']('selectionChange',s),this['bufferCheckState']['buffer']=!0x1,this['ctx']['emit']('draw');}['clearSelection'](s=!0x1){const dy=bY,u=this['ctx']['config']['TREE_SELECT_MODE']==='auto'||this[dy(0x1fa)]['config']['TREE_SELECT_MODE']==='cautious';s?u?this['rowKeyMap']['forEach']((w,x)=>{const y=this['selectionMap']['get'](x);y&&(y['check']=!0x1,this['setRowSelectionByCheckboxKey'](x,!0x1));}):this['rowKeyMap']['forEach']((w,x)=>{const dz=dy;this[dz(0x344)](x,!0x1,!0x1);}):(this[dy(0x1c4)][dy(0x10f)](),this[dy(0x3f0)]['forEach']((w,x)=>{const dA=dy;this[dA(0x1c4)]['set'](x,{'check':!0x1,'row':w['item'],'key':x});}));const v=this[dy(0xb8)]();this[dy(0x1fa)]['emit']('clearSelection'),this['ctx'][dy(0xc8)]('selectionChange',v),this['bufferCheckState']['buffer']=!0x1,this['ctx']['emit']('draw');}['getCheckedState'](){const dB=bY,{buffer:u,...v}=this[dB(0x199)];if(u)return v;const w=this['rowKeyMap']['size'];let x=0x0,y=0x0;const z=this['selectionMap']['size'],B=Array['from'](this['selectionMap']['values']())['some'](J=>J['check']);this['rowKeyMap'][dB(0x3e1)]((J,K)=>{var L;(L=this['selectionMap']['get'](K))!=null&&L['check']&&(x+=0x1);let N=J['selectable'];typeof N=='function'&&(N=N({'row':J['item'],'rowIndex':J['rowIndex']})),N&&(y+=0x1);});const C=z>w&&x===0x0&&B,F=y&&y>x&&x>0x0||C,G=y!==0x0,H=!!y&&y===x;return this['bufferCheckState']={'buffer':!0x0,'check':H,'indeterminate':F,'selectable':G},{'check':H,'indeterminate':F,'selectable':G};}['updateColIndexKeyMap'](s=[]){const dC=bY;this[dC(0x127)]['clear'](),s['forEach'](u=>{this['colIndexKeyMap']['set'](u['colIndex'],u['key']);});}[bY(0x1d6)](s){const dD=bY;var u;const v=this['colIndexKeyMap']['get'](s);if(v&&this['headerMap']['has'](v))return(u=this['headerMap']['get'](v))==null?void 0x0:u[dD(0x2ed)];}['getColumnByKey'](s){const u=this['headerMap']['get'](s);if(u)return u;}['getColIndexForKey'](s){const dE=bY;var u;if(s&&this[dE(0x263)]['has'](s))return(u=this['headerMap']['get'](s))==null?void 0x0:u['colIndex'];}['getColHeaderByIndex'](s){const u=this['colIndexKeyMap']['get'](s);if(u&&this['headerMap']['has'](u))return this['headerMap']['get'](u);}['getChangedData'](){const dF=bY;let s=[];return this[dF(0x191)]['forEach']((u,v)=>{const dG=dF,w=this['originalDataMap']['get'](v),x=v['split']('_')[0x0],y=v['split']('_')[0x1];w!==u&&s['push']({'rowKey':x,'colKey':y,'originalValue':w,'row':this['ctx'][dG(0x247)]['getRowDataItemForRowKey'](x),'value':u});}),s;}['getChangedRows'](){const s=new Set();this['changedDataMap']['forEach']((v,w)=>{const x=this['originalDataMap']['get'](w),y=w['split']('_')[0x0];x!==v&&s['add'](y);});let u=[];return s['forEach'](v=>{const dH=b;u['push'](this[dH(0x1fa)]['database']['getRowDataItemForRowKey'](v));}),u;}['isHasChangedData'](u,v){const dI=bY,w=u+'_'+v;if(!this[dI(0x191)]['has'](w))return!0x1;const x=this['originalDataMap'][dI(0x27f)](w),y=this['changedDataMap']['get'](w);return x!==y;}['getPositionForRowIndex'](s){const dJ=bY;return s<this[dJ(0x2b4)]['length']?this['positions'][s]:{'height':0x0,'top':0x0,'bottom':0x0,'calculatedHeight':0x0};}['setHeader'](s,u){return s?(this['headerMap']['set'](s,u),!0x0):!0x1;}['getReadonly'](u,v){const dK=bY,{DISABLED:w}=this['ctx']['config'];if(w)return!0x0;const x=this[dK(0x3f0)]['get'](u),y=this['headerMap'][dK(0x27f)](v);if(!x||!y)return!0x0;const z=x['readonly'],B=y['readonly'],{BODY_CELL_READONLY_METHOD:C}=this['ctx']['config'];if(typeof C=='function'&&y){const F=C({'row':x['item'],'rowIndex':x['rowIndex'],'colIndex':y['colIndex'],'column':y['column'],'value':this['getItemValue'](u,v)});if(F!==void 0x0)return F;}return B||z;}['clearValidate'](){this['validationErrorMap']['clear']();}[bY(0xe4)](){const dL=bY;return this['validationErrorMap'][dL(0x22f)]!==0x0;}['getValidator'](s,u){return this['ctx']['database']['getReadonly'](s,u)?new Promise(v=>{v([]);}):new Promise(v=>{const dM=b,w=this[dM(0x3f0)]['get'](s),x=this[dM(0x263)]['get'](u),{BODY_CELL_RULES_METHOD:y}=this['ctx']['config'];if(w===void 0x0||x===void 0x0)return v([]);const z=x['column'];let B=z[dM(0x3ba)];if(typeof y=='function'){const C=y({'row':w['item'],'rowIndex':w['rowIndex'],'colIndex':x['colIndex'],'column':z,'value':this[dM(0x234)](s,u)});C&&(B=C);}if(B){const F={'row':w['item'],'rowIndex':w['rowIndex'],'colIndex':x['colIndex'],'column':z,'key':u,'rowKey':s,'value':this[dM(0x234)](s,u),'field':u,'fieldValue':this['getItemValue'](s,u)},G=new tc(B)['validate'](F);this[dM(0x1a3)](s,u,G),v(G);}else this['clearValidationError'](s,u),v([]);});}['getHeightByRowIndexRowSpan'](u,v){const dN=bY;let w=0x0;for(let x=0x0;x<v;x++){const y=this['positions'][u+x];y&&(w+=y[dN(0x8e)]);}return w;}['getSpanInfo'](u){const dP=bY,{rowIndex:v,key:x,rowKey:z,row:B,value:C,colIndex:H,relationRowKeys:J,relationColKeys:N,rowspan:O,height:P,width:a0,colspan:a1,mergeRow:a2,mergeCol:a3}=u;if(O===0x1&&a1===0x1)return{'xArr':[H,H],'yArr':[v,v],'rowspan':O,'colspan':a1,'height':P,'width':a0,'offsetTop':0x0,'offsetLeft':0x0,'dataList':[{'rowKey':z,'key':x,'row':B,'value':C}]};let a4=v,a5=v,a6=H,a7=H,a8=[],a9=0x0,aa=0x0,ab=0x0,ad=0x0;if(O!==0x1&&a2){ad=a0;const af=J['reduce']((ag,ai)=>{const aj=this['getItemValue'](z,ai)??'';return''+ag+aj;},'');for(let ag=v-0x1;ag>=0x0;ag--){const ai=this['rowIndexRowKeyMap']['get'](ag)||'',aj=J['reduce']((ak,al)=>{const am=this['getItemValue'](ai,al)??'';return''+ak+am;},'');if(af===aj)a4=ag;else break;}for(let ak=v;ak<=this['ctx']['maxRowIndex'];ak++){const al=this['rowIndexRowKeyMap']['get'](ak)||'',am=J['reduce']((an,ao)=>{const dO=b,ap=this[dO(0x234)](al,ao)??'';return''+an+ap;},'');if(af===am)a5=ak;else break;}for(let an=a4;an<v;an++){const {height:ao}=this['positions'][an];a9+=ao;}for(let ap=a4;ap<=a5;ap++){const {height:aq}=this['positions'][ap];ab+=aq;const ar=this[dP(0x291)]['get'](ap)||'',{item:au}=this['rowKeyMap']['get'](ar),av=this['getItemValue'](ar,x);a8['push']({'rowKey':ar,'key':x,'value':av,'row':au});}}if(a1!==0x1&&a3){ab=P;for(let aw=H-0x1;aw>=0x0;aw--){const ax=this['getColumnByColIndex'](aw);if(!ax)break;const ay=this[dP(0x234)](z,x),az=this['getItemValue'](z,ax['key']);if(ay===az&&N['includes'](ax['key']))a6=aw;else break;}for(let aA=H;aA<=this['ctx']['maxColIndex'];aA++){const aB=this['getColumnByColIndex'](aA);if(!aB)break;const aC=this['getItemValue'](z,x),aD=this['getItemValue'](z,aB['key']);if(aC===aD&&N['includes'](aB['key']))a7=aA;else break;}for(let aE=a6;aE<H;aE++){const aF=this['getColumnByColIndex'](aE);if(!aF)break;aa+=aF['width']||0x64;}for(let aG=a6;aG<=a7;aG++){const aH=this['getColumnByColIndex'](aG);if(!aH)break;ad+=aH['width']||0x64,a8['push']({'rowKey':z,'key':aH['key'],'value':this['getItemValue'](z,aH['key']),'row':B});}}return{'xArr':[a6,a7],'yArr':[a4,a5],'rowspan':O,'colspan':a1,'height':ab,'width':ad,'offsetTop':a9,'offsetLeft':aa,'dataList':a8};}['setValidationErrorByRowKey'](u,v,w){const dQ=bY,x=u+'_'+v,y=this[dQ(0x152)](u),z=y?.['rowIndex'],B=this['getColumnByKey'](v);if(!u||!B||!y)return;const C=this['getItemValue'](u,v),F=[{'key':v,'rowKey':u,'rowIndex':z,'colIndex':B['colIndex'],'column':B['column'],'row':y,'value':C,'message':w,'field':v,'fieldValue':C}];this[dQ(0x3b7)][dQ(0x26b)](x,F);}['setValidationError'](u,v,w){const x=u+'_'+v;this['validationErrorMap']['set'](x,w);}['clearValidationError'](s,u){const v=s+'_'+u;this['validationErrorMap']['has'](v)&&this['validationErrorMap']['delete'](v);}['getValidationError'](s,u){const v=s+'_'+u;return this['validationErrorMap']['get'](v)||[];}['getVirtualBodyCell'](u,v,w=!0x0){const dR=bY,x=this[dR(0x1d6)](v),y=this['getRowForRowIndex'](u);return!x||!y?void 0x0:new il(this['ctx'],u,v,0x0,0x0,0x0,0x0,x,y[dR(0x25e)],'body',w);}['getVirtualBodyCellByKey'](u,v){const w=this['getRowIndexForRowKey'](u),x=this['getColIndexForKey'](v);if(!(w===void 0x0||x===void 0x0))return this['getVirtualBodyCell'](w,x);}['hasMergeCell'](u,v){let w=!0x1;for(let x=v[0x0];x<=v[0x1];x++)for(let y=u[0x0];y<=u[0x1];y++){const z=this['getVirtualBodyCell'](x,y);if(z&&(z['rowspan']!==0x1||z['colspan']!==0x1)){w=!0x0;break;}}return w;}[bY(0x1ae)](s,u=0x0){let v=u;return s['forEach'](w=>{const dS=b;if(Array['isArray'](w[dS(0xd0)])&&w['children']['length']>0x0){const x=this['calculateMaxTreeDepth'](w[dS(0xd0)],u+0x1);v=Math['max'](v,x);}}),v;}['setOverlayerAutoHeightMap'](s){const dT=bY;this[dT(0x17c)]=s;}['getOverlayerAutoHeightMap'](){return this['overlayerAutoHeightMap'];}['getOverlayerAutoHeight'](s,u){const dU=bY,v=s+'_'+u;return this[dU(0x17c)][dU(0x27f)](v)||0x0;}['setCustomHeader'](s,u=!0x1){const dW=bY;if(['fixedData','sortData','hideData','resizableData']['forEach'](v=>{const dV=b,w=s[v];w!==void 0x0&&(this[dV(0x233)][v]=w);}),!u){const v=this['clearCustomHeaderInvalidValues'](this['columns']);this['ctx'][dW(0xc8)](dW(0x364),v);}}['resetCustomHeader'](){this['customHeader']={},this['ctx']['emit']('resetHeader'),this['ctx']['emit']('customHeaderChange',this['customHeader']);}['getCustomHeader'](){return this['customHeader'];}[bY(0xe8)](s,u){let {resizableData:v={}}=this['customHeader'];v[s]=u,this['setCustomHeader']({'resizableData':v});}['setCustomHeaderHideData'](s,u){let {hideData:v={}}=this['customHeader'];s['forEach'](w=>{v[w]=u;}),this['setCustomHeader']({'hideData':v}),this['ctx']['emit']('resetHeader');}['setCustomHeaderFixedData'](s,u){const dX=bY;let {fixedData:v={}}=this['customHeader'];s[dX(0x3e1)](w=>{v[w]=u;}),this[dX(0x3ab)]({'fixedData':v}),this['ctx']['emit']('resetHeader');}['clearCustomHeaderInvalidValues'](s){const u=(w,x={})=>{w['forEach'](y=>{const dY=b;y['children']&&y['children'][dY(0xfa)]>0x0&&u(y['children'],x);const z=(B,C)=>{const dZ=dY;var F,G;const H=(F=this['customHeader'][B])==null?void 0x0:F[y['key']];H!==void 0x0&&H!==C&&(x[B]||(x[B]={}),x[B][y['key']]=H,B===dZ(0x313)&&!H&&!C&&((G=x[B])==null||delete G[y['key']]));};z('fixedData',y['fixed']),z('sortData',y[dY(0x9b)]),z('hideData',y['hide']),z('resizableData',y['width']);});};let v={};return u(s,v),v;}['setMaxRowHeightItem'](s,u,v){this['maxRowHeightCellMap']['set'](s,{'key':u,'height':v});}['getMaxRowHeightItem'](s){return this['maxRowHeightCellMap']['get'](s);}['clearChangeData'](){this['changedDataMap']['clear']();}}class oc{constructor(s){const e0=bY;m(this,'ctx'),m(this,'history',[]),m(this,'historyIndex',-0x1),this['ctx']=s,this[e0(0x275)]();}['init'](){this['ctx']['on']('keydown',s=>{const e1=b;if(!this['ctx'][e1(0x1a4)]){if(s[e1(0x29c)]&&!s[e1(0x251)]&&s['code']===e1(0x37e)||s[e1(0x1e5)]&&!s['shiftKey']&&s['code']==='KeyZ'){s['preventDefault'](),this['ctx'][e1(0x108)](),this[e1(0x1fa)]['clearAutofill'](),this['backState']();return;}if(s['ctrlKey']&&s['code']==='KeyY'||s['ctrlKey']&&s[e1(0x251)]&&s['code']===e1(0x37e)||s['metaKey']&&s['shiftKey']&&s['code']==='KeyZ'){s['preventDefault'](),this['ctx']['clearSelector'](),this['ctx'][e1(0x382)](),this[e1(0x3b3)]();return;}}});}['pushState'](s){const e2=bY,{HISTORY_NUM:u=0x0,ENABLE_HISTORY:v}=this[e2(0x1fa)]['config'];v&&(this[e2(0x39d)]['push'](s),this[e2(0x39d)]['length']>u&&this['history']['splice'](0x0,0x1),this['historyIndex']=this['history'][e2(0xfa)]-0x1);}['backState'](){const e3=bY;if(this[e3(0x174)]>=0x0){const {changeList:u,scrollX:v,scrollY:w}=this['history'][this['historyIndex']],x=u['map'](y=>({'rowKey':y['rowKey'],'key':y['key'],'value':y['oldValue'],'row':{}}));this['ctx']['setScroll'](v,w),this['ctx']['database']['batchSetItemValue'](x,!0x1,!0x1,'back'),this['historyIndex']-=0x1;}}['forwardState'](){const e4=bY;if(this['historyIndex']<this['history']['length']-0x1){this['historyIndex']+=0x1;const {changeList:s}=this[e4(0x39d)][this['historyIndex']],u=s[e4(0x387)](v=>({'rowKey':v['rowKey'],'key':v['key'],'value':v['newValue'],'row':{}}));this['ctx'][e4(0x247)]['batchSetItemValue'](u,!0x1,!0x1,e4(0x20d));}}['clear'](){this['history']=[],this['historyIndex']=-0x1;}}class nc{constructor(s){m(this,'eventTasks',new Set()),m(this,'ctx'),this['ctx']=s,this['init']();}['init'](){const e5=bY;this['bind'](window,'resize',this['handleResize']['bind'](this)),this['bind'](window,'mouseup',this['handleMouseUp'][e5(0xd9)](this)),this[e5(0xd9)](window,'mousemove',this['handleMousemove'][e5(0xd9)](this)),this['bind'](window,'blur',this['handleOutsideMousedown']['bind'](this)),this['bind'](window,'mousedown',this['handleOutsideMousedown']['bind'](this)),this[e5(0xd9)](this['ctx']['stageElement'],'click',this[e5(0x161)]['bind'](this)),this[e5(0xd9)](window,'keydown',this['handleKeydown'][e5(0xd9)](this)),this['bind'](this['ctx']['stageElement'],'wheel',this['handleWheel']['bind'](this),{'passive':!0x1}),this['bind'](this['ctx'][e5(0x13c)],'touchstart',this['handleTouchstart']['bind'](this),{'passive':!0x1}),this['bind'](this[e5(0x1fa)]['stageElement'],'touchend',this['handleTouchend']['bind'](this)),this[e5(0xd9)](this['ctx'][e5(0x13c)],'touchmove',this['handleTouchmove']['bind'](this),{'passive':!0x1}),this['bind'](this['ctx']['stageElement'],'contextmenu',this[e5(0x262)][e5(0xd9)](this)),this['bind'](this['ctx']['stageElement'],e5(0x358),this[e5(0x3eb)]['bind'](this)),this[e5(0xd9)](this['ctx'][e5(0x13c)],'dblclick',this[e5(0x28a)][e5(0xd9)](this)),this['bind'](this['ctx']['stageElement'],'mouseover',this['handleMouseover']['bind'](this)),this['bind'](this['ctx']['stageElement'],'mouseout',this['handleMouseout']['bind'](this)),this['bind'](document,e5(0x3a2),this['selectionchange']['bind'](this));}['selectionchange'](){const e6=bY;this['ctx'][e6(0x3f5)]='';const s=window['getSelection']();s&&s['toString']()&&(this['ctx']['domSelectionStr']=s['toString']());}[bY(0x19b)](){const s=window['getSelection']();s&&!s['isCollapsed']&&s['removeAllRanges']();}['destroy'](){const e7=bY;Array[e7(0x163)](this['eventTasks'])['forEach'](({target:u,name:v,fn:w,options:x})=>{this['unbind'](u,v,w,x);}),this['eventTasks']['clear']();}['handleResize'](s){const e8=bY;this['ctx']['emit'](e8(0x399),s),this[e8(0x1fa)]['emit']('resize',s);}['handleMouseDown'](s){const e9=bY;this[e9(0x19b)](),s['button']===0x0&&(this['ctx'][e9(0x358)]=!0x0),this['ctx']['emit'](e9(0x358),s);}[bY(0x1af)](u){const ea=bY,v=u,w=this['ctx']['containerElement']['getBoundingClientRect'](),x=v['clientX']-w['left'],y=v[ea(0x1b5)]-w['top'];this['ctx']['mouseX']=x,this['ctx']['mouseY']=y,this['ctx']['emit']('mousemove',u);}['handleMouseUp'](s){const eb=bY;s['button']===0x0&&(this['ctx']['mousedown']=!0x1),this[eb(0x1fa)][eb(0xc8)]('mouseup',s);}['handleClick'](s){const ed=bY;this[ed(0x1fa)]['emit'](ed(0x3dc),s);}['handleKeydown'](s){const ef=bY,{ENABLE_KEYBOARD:u}=this['ctx']['config'];u&&this['ctx']['isTarget'](s)&&(this['ctx'][ef(0x131)]||this['ctx']['emit']('keydown',s));}['handleWheel'](s){const eg=bY;this[eg(0x1fa)]['emit'](eg(0x3ca),s);}['handleTouchstart'](s){this['ctx']['emit']('touchstart',s);}[bY(0xeb)](s){this['ctx']['emit']('touchend',s);}[bY(0xe9)](s){this['ctx']['emit']('touchmove',s);}[bY(0x262)](s){s['preventDefault'](),this['ctx']['emit']('contextMenu',s);}['handleMouseover'](s){this['ctx']['isMouseoverTargetContainer']=!0x0,this['ctx']['emit']('mouseover',s);}['handleMouseout'](s){this['ctx']['isMouseoverTargetContainer']=!0x1,this['ctx']['emit']('mouseout',s);}[bY(0x28a)](s){this['ctx']['emit']('dblclick',s);}[bY(0x3e7)](s){const ej=bY;this['ctx'][ej(0x35a)]['enable']&&(s[ej(0x86)]instanceof Window||s['target']instanceof Node&&!this[ej(0x1fa)]['containerElement'][ej(0x1f8)](s[ej(0x86)]))&&this[ej(0x1fa)]['emit'](ej(0x23c),s);}['bind'](u,v,w,x){const ek=bY;u['addEventListener'](v,w,x),this[ek(0x320)]['add']({'target':u,'name':v,'fn':w,'options':x});}['unbind'](u,v,w,x){u['removeEventListener'](v,w,x);for(const y of this['eventTasks'])if(y['target']===u&&y['name']===v&&y['fn']===w){this['eventTasks']['delete'](y);break;}}}class bc{constructor(){m(this,'events',new Map());}[bY(0x1bc)](s){return this['events']['has'](s);}['on'](s,u){const em=bY,v=this['events']['get'](s)||[];v['push'](u),this[em(0x2a9)]['set'](s,v);}['once'](s,u){const v=(...w)=>{const en=b;u(...w),this[en(0x1db)](s,v);};return this['on'](s,v),this;}['off'](u,v){const eo=bY,w=this[eo(0x2a9)]['get'](u);if(w){const x=w[eo(0x37a)](v);x>=0x0&&(w['splice'](x,0x1),w['length']===0x0?this['events'][eo(0x1df)](u):this['events']['set'](u,w));}}['emit'](s,...u){const v=this['events']['get'](s);v&&v['forEach'](w=>{w(...u);});}['destroy'](){const ep=bY;this['events'][ep(0x10f)]();}}class ac{constructor(s){const eq=bY;m(this,'ctx'),m(this,'textCacheMap',new Map());const u=s[eq(0x113)]('2d');if(!u)throw new Error(eq(0x136));this['ctx']=u;}['clearTextCache'](){const er=bY;this['textCacheMap'][er(0x10f)]();}[bY(0x2a5)](s){const eu=bY;this['ctx'][eu(0x1b8)](0x1,0x0,0x0,0x1,0x0,0x0),this['ctx']['scale'](s,s);}['save'](){const ev=bY;this['ctx'][ev(0xa6)]();}['restore'](){const ew=bY;this['ctx'][ew(0x374)]();}['translate'](s,u){const ex=bY;this[ex(0x1fa)]['translate'](s,u);}[bY(0x38d)](s='default'){this['ctx']['canvas']['style']['cursor']=s;}[bY(0x10f)](u=0x0,v=0x0,w,x){this['ctx']['clearRect'](u,v,w||this['ctx']['canvas']['width'],x||this['ctx']['canvas']['height']);}[bY(0x16b)](u,v,w,x,y){const ey=bY,{fillColor:z,side:B,shadowWidth:C,colorStart:F,colorEnd:G}=y;this['ctx']['save'](),z&&(this['ctx']['fillStyle']=z,this['ctx']['fillRect'](u,v,w,x));let H;switch(B){case'left':H=this['ctx'][ey(0x130)](u-C,v,u,v),H['addColorStop'](0x0,F),H[ey(0x1f9)](0x1,G),this['ctx'][ey(0x2c4)]=H,this['ctx']['fillRect'](u-C,v,C,x);break;case'right':H=this['ctx']['createLinearGradient'](u+w,v,u+w+C,v),H['addColorStop'](0x0,F),H['addColorStop'](0x1,G),this['ctx']['fillStyle']=H,this[ey(0x1fa)]['fillRect'](u+w,v,C,x);break;case'top':H=this['ctx']['createLinearGradient'](u,v-C,u,v),H['addColorStop'](0x0,F),H['addColorStop'](0x1,G),this['ctx']['fillStyle']=H,this['ctx'][ey(0x2df)](u,v-C,w,C);break;case'bottom':H=this['ctx']['createLinearGradient'](u,v+x,u,v+x+C),H['addColorStop'](0x0,F),H['addColorStop'](0x1,G),this['ctx']['fillStyle']=H,this['ctx']['fillRect'](u,v+x,w,C);break;default:console['error']('Invalid\x20side\x20specified\x20for\x20shadow');break;}this['ctx']['restore']();}['drawLine'](u,v){const ez=bY;if(u[ez(0xfa)]<0x4||u['length']%0x2!==0x0)throw new Error('A\x20valid\x20array\x20of\x20points\x20is\x20required\x20to\x20draw\x20a\x20line');this['ctx']['save']();const {borderColor:w='black',borderWidth:x=0x1}=v;this['ctx']['beginPath'](),this['ctx']['moveTo'](u[0x0]-0.5,u[0x1]-0.5);for(let y=0x2;y<u['length'];y+=0x2)this[ez(0x1fa)]['lineTo'](u[y]-0.5,u[y+0x1]-0.5);this[ez(0x1fa)]['strokeStyle']=w,this['ctx']['lineWidth']=x,v[ez(0x390)]&&(this['ctx']['lineDashOffset']=v['lineDashOffset']??0x0,this[ez(0x1fa)]['setLineDash'](v['lineDash'])),v['fillColor']&&(this['ctx']['fillStyle']=v['fillColor'],this['ctx']['fill']()),v['borderColor']&&(this[ez(0x1fa)]['strokeStyle']=v['borderColor']),this['ctx']['stroke'](),this['ctx']['closePath'](),this['ctx']['restore']();}['drawImage'](u,v,w,x,y){const eA=bY;this['ctx']['save'](),this['ctx'][eA(0x2ce)](u,v,w,x,y),this['ctx']['restore']();}[bY(0x25f)](u,v,w,x,{borderWidth:y=0x1,borderColor:z,fillColor:B,radius:C=0x0}={}){const eB=bY;if(this['ctx'][eB(0xa6)](),this[eB(0x1fa)]['beginPath'](),B!==void 0x0&&(this[eB(0x1fa)]['fillStyle']=B),z!==void 0x0&&(this['ctx']['lineWidth']=y,this['ctx']['strokeStyle']=z),C===0x0)this['ctx']['rect'](u-0.5,v-0.5,w,x);else{const [F,G,H,J]=typeof C==eB(0x186)?[C,C,C,C]:C;this['ctx']['moveTo'](u+F,v),this['ctx']['arcTo'](u+w,v,u+w,v+G,G),this['ctx'][eB(0x1c6)](u+w,v+x,u+w-H,v+x,H),this['ctx']['arcTo'](u,v+x,u,v+x-J,J),this['ctx']['arcTo'](u,v,u+F,v,F);}B!==void 0x0&&this['ctx']['fill'](),z!==void 0x0&&this[eB(0x1fa)]['stroke'](),this['ctx']['restore']();}['drawText'](u='',v,x,z,B,C={}){const eC=bY;var H;this['ctx'][eC(0xa6)]();const {font:J=eC(0xa0),align:N='center',color:P=eC(0xec),padding:a0=0x0,verticalAlign:a1='middle',maxLineClamp:a2=0x1,autoRowHeight:a3=!0x1,offsetLeft:a4=0x0,offsetRight:a5=0x0}=C;if(this['ctx']['font']=J,this['ctx'][eC(0x2c4)]=P,this['ctx'][eC(0x307)]=N,['',null,void 0x0]['includes'](u))return this['ctx']['restore'](),!0x1;const a6=parseInt(((H=J['match'](/\d+/))==null?void 0x0:H[0x0])||'12')*(C['lineHeight']||1.2),a7=z-a0*0x2-a4-a5;let a8=!0x1;const a9=Math['round']((B-0x2*a0)/a6);let aa=this['wrapText'](u,a7,C['cacheTextKey']),ab=Math[eC(0x1fe)](aa['length'],Math['max'](a9,0x1));a2==='auto'&&a3?ab=aa[eC(0xfa)]:typeof a2=='number'&&a2<ab&&a2!==0x1?ab=a2:(a2===0x1&&(aa=[u],ab=0x1),a2===eC(0x21c)&&a9===0x1&&(aa=[u],ab=0x1));let ad=x+a0;const af=Math['round'](ab*a6);a1===eC(0x1b9)?ad=x+(B-af)/0x2:a1===eC(0x287)&&(ad=x+B-af-a0);let ag=v+a0+a4;N==='center'?ag=v+z/0x2:N==='right'&&(ag=v+z-a0-a5);for(let ai=0x0;ai<aa[eC(0xfa)];ai++){const aj=aa[ai],ak=ad+ai*a6;if(this[eC(0x1fa)]['textBaseline']='top',ai===ab-0x1){const al=aa['slice'](ai)['join'](''),{_text:am,ellipsis:an}=this['handleEllipsis'](al,z,a0,J);this[eC(0x1fa)]['fillText'](am,ag,ak),a8=an;break;}this['ctx']['fillText'](aj,ag,ak);}if(C['textCallback']&&aa['length']){const ao=aa[eC(0x1cb)]((av,aw)=>Math['max'](av,this['ctx']['measureText'](aw)['width']),0x0),ap=Math['round'](ao);let aq=ag,ar=ag+ap;N==='center'?(aq=ag-ap/0x2,ar=ag+ap/0x2):N==='right'&&(aq=ag-ap,ar=ag);const au={'x':ag,'y':ad,'width':ap,'height':af,'left':aq,'right':ar,'top':ad,'bottom':ad+af};C[eC(0x18f)](au);}return this['ctx'][eC(0x374)](),a8;}['wrapText'](u,v,w=''){const eD=bY;if(!u)return[''];if(w&&this['textCacheMap']['has'](w))return this['textCacheMap'][eD(0x27f)](w)||[''];const x=[],y=u[eD(0x20a)]('\x0a');for(const B of y){if(B===''){x['push']('');continue;}const C=B['split']('');let F='';for(const G of C){const H=F+G;this['ctx']['measureText'](H)['width']<=v?F=H:F?(x['push'](F),F=G):(x[eD(0x1f5)](G),F='');}F&&x['push'](F);}const z=x[eD(0xfa)]>0x0?x:[''];return w&&this['textCacheMap']['set'](w,z),z;}['calculateTextHeight'](u='',v,w={}){const eE=bY;var x;const {font:z='12px\x20Arial',padding:B=0x0,align:C=eE(0x346),color:F=eE(0xec),maxLineClamp:G=0x1,cacheTextKey:H=''}=w;this['ctx'][eE(0xa6)](),this['ctx']['font']=z,this['ctx']['fillStyle']=F,this['ctx'][eE(0x307)]=C;const J=parseInt(((x=z[eE(0x182)](/\d+/))==null?void 0x0:x[0x0])||'12'),K=J*(w[eE(0x354)]||1.2),L=v-B*0x2,N=this['wrapText'](u,L,H);let O=0x1;return G===eE(0x21c)?O=N['length']:N['length']>G?O=G:O=N['length'],this['ctx']['restore'](),Math['max'](Math['floor'](O*K+B*0x2),Math['floor'](J+B*0x2));}['handleEllipsis'](u,v,w=0x0,x=bY(0xa0)){const eF=bY;this['ctx']['save']();let y=!0x1,z=u;if(this['ctx']['font']=x,u==null||u==='')return this['ctx']['restore'](),{'_text':'','ellipsis':y};const B=this[eF(0x1fa)]['measureText']('...')['width'];if(v<=B+w*0x2)return this['ctx']['restore'](),{'_text':'','ellipsis':!0x0};const C=this['ctx']['measureText'](u)[eF(0x34d)],F=v-w*0x2;if(C&&C>=F){y=!0x0;let G=0x0;for(let H=0x0;H<u['length'];H++)if(G+=this['ctx']['measureText'](u[H])['width'],G>=F-B){z=u[eF(0x30b)](0x0,H)+eF(0x213),y=!0x0;break;}}return this['ctx']['restore'](),{'_text':z,'ellipsis':y};}}class Jl{constructor(s){const eG=bY;m(this,'_config',{}),m(this,'CSS_PREFIX','e-virt-table'),m(this,'ICONS',[]),m(this,eG(0x279),''),m(this,'DISABLED',!0x1),m(this,'HEADER_FONT','12px\x20normal\x20Arial'),m(this,eG(0x1da),'12px\x20normal\x20Arial'),m(this,'BORDER',!0x0),m(this,'STRIPE',!0x1),m(this,eG(0x376),'#fafafa'),m(this,'BORDER_COLOR','#e1e6eb'),m(this,eG(0x3f2),0x0),m(this,eG(0xf5),'#CDD0DC'),m(this,eG(0x2e9),0x78),m(this,'EMPTY_CUSTOM_STYLE',{}),m(this,'NUMBER_ERROR_TIP','只允许输入数字'),m(this,'EMPTY_TEXT','暂无数据'),m(this,eG(0x82),eG(0x2ee)),m(this,eG(0xb2),0x3e8),m(this,'BORDER_RADIUS',0x8),m(this,'ENABLE_OFFSET_HEIGHT',!0x1),m(this,'OFFSET_HEIGHT',0x0),m(this,eG(0x1c3),0x24),m(this,'ENABLE_HEADER_STICKY',!0x1),m(this,'HEADER_BG_COLOR','#F8FAFF'),m(this,eG(0x1cc),'#FFF'),m(this,'HEADER_TEXT_COLOR','#1D2129'),m(this,'REQUIRED_COLOR','#F56C6C'),m(this,'BODY_TEXT_COLOR','#4E5969'),m(this,eG(0x2cd),'#4E5969'),m(this,'LOADING_ICON_SVG',''),m(this,'LOADING_ICON_COLOR','#4E5969'),m(this,'EXPAND_ICON_SVG',''),m(this,'SHRINK_ICON_SVG',''),m(this,eG(0x139),'#4E5969'),m(this,'SHRINK_ICON_COLOR','#4E5969'),m(this,'ERROR_TIP_ICON_COLOR','red'),m(this,'ERROR_TIP_ICON_SIZE',0x6),m(this,'COLUMNS_ALIGN','left'),m(this,'COLUMNS_VERTICAL_ALIGN',eG(0x1b9)),m(this,'EXPAND_LAZY',!0x0),m(this,'DEFAULT_EXPAND_ALL',!0x1),m(this,eG(0x1eb),0x64),m(this,'CELL_HEIGHT',0x24),m(this,'CELL_PADDING',0x8),m(this,eG(0x1bd),0xe),m(this,'CELL_HOVER_ICON_BG_COLOR','#fff'),m(this,'CELL_HOVER_ICON_BORDER_COLOR','#DDE0EA'),m(this,'SCROLLER_TRACK_SIZE',0xe),m(this,'SCROLLER_SIZE',0x8),m(this,'SCROLLER_COLOR','#dee0e3'),m(this,'SCROLLER_TRACK_COLOR','#fff'),m(this,'SCROLLER_FOCUS_COLOR','#bbbec4'),m(this,'SELECT_BORDER_COLOR','rgb(82,146,247)'),m(this,'SELECT_AREA_COLOR','rgba(82,146,247,0.1)'),m(this,'SELECT_ROW_COL_BG_COLOR','transparent'),m(this,'AUTOFILL_POINT_BORDER_COLOR',eG(0x33c)),m(this,'EDIT_BG_COLOR','#fcf6ed'),m(this,'CHECKBOX_KEY',''),m(this,'CHECKBOX_COLOR',eG(0x25c)),m(this,'FINDER_CELL_BG_COLOR','rgb(255,229,144)'),m(this,'ENABLE_FINDER',!0x0),m(this,'CHECKBOX_SIZE',0x14),m(this,'CHECKBOX_DISABLED_SVG',''),m(this,'CHECKBOX_DISABLED_COLOR','#F1F2F4'),m(this,'CHECKBOX_CHECK_SVG',''),m(this,'CHECKBOX_UNCHECK_SVG',''),m(this,eG(0x325),'#DDE0EA'),m(this,eG(0x26d),''),m(this,'CHECKBOX_CHECK_DISABLED_SVG',''),m(this,'CHECKBOX_CHECK_DISABLED_COLOR','#DDE0EA'),m(this,'ICON_EDIT_SVG',''),m(this,'ICON_EDIT_COLOR','#4E5969'),m(this,'ICON_SELECT_SVG',''),m(this,eG(0x2dd),'#4E5969'),m(this,eG(0x12c),!0x0),m(this,'SORT_ASC_ICON_SVG',''),m(this,'SORT_DESC_ICON_SVG',''),m(this,eG(0x81),''),m(this,'SORT_ICON_COLOR',eG(0x25c)),m(this,eG(0x338),'#fff'),m(this,'READONLY_TEXT_COLOR',eG(0xe0)),m(this,'ERROR_TIP_COLOR',eG(0x339)),m(this,eG(0x3af),'#fafafa'),m(this,'FOOTER_FIXED',!0x0),m(this,'FOOTER_POSITION','bottom'),m(this,eG(0x1ba),0x24),m(this,'ENABLE_SELECTOR',!0x0),m(this,'TREE_SELECT_MODE','auto'),m(this,'TREE_CHILDREN_KEY','children'),m(this,'TREE_INDENT',0x14),m(this,'TREE_ICON_SIZE',0x14),m(this,'TREE_LINE',!0x1),m(this,'TREE_LINE_COLOR','#e1e6eb'),m(this,'ENABLE_EDIT_SINGLE_CLICK',!0x1),m(this,eG(0x29e),!0x0),m(this,'SELECTOR_AREA_MIN_X',0x0),m(this,'SELECTOR_AREA_MAX_X_OFFSET',0x0),m(this,'SELECTOR_AREA_MAX_X',0x0),m(this,'SELECTOR_AREA_MIN_Y',0x0),m(this,'SELECTOR_AREA_MAX_Y',0x0),m(this,eG(0x126),0x0),m(this,'SELECTOR_CELL_VALUE_TYPE','value'),m(this,'ENABLE_AUTO_THEME',!0x0),m(this,'ENABLE_SELECTOR_SINGLE',!0x1),m(this,'ENABLE_SELECTOR_SPAN_COL',!0x0),m(this,eG(0x34c),!0x0),m(this,'ENABLE_SELECTOR_ALL_ROWS',!0x0),m(this,eG(0x91),!0x0),m(this,eG(0x129),!0x1),m(this,'ENABLE_AUTOFILL',!0x1),m(this,eG(0x10a),!0x0),m(this,'ENABLE_AUTOFILL_SPAN_ROW',!0x0),m(this,'ENABLE_CONTEXT_MENU',!0x1),m(this,eG(0x228),!0x1),m(this,'ENABLE_COPY',!0x0),m(this,eG(0x14e),!0x0),m(this,eG(0x144),!0x0),m(this,eG(0x2ae),!0x0),m(this,'RESIZE_ROW_LINE_COLOR',eG(0x1e9)),m(this,'RESIZE_COLUMN_LINE_COLOR','#e1e6eb'),m(this,'ENABLE_RESIZE_COLUMN_TEXT',!0x0),m(this,'RESIZE_COLUMN_TEXT_COLOR','#fff'),m(this,'RESIZE_COLUMN_TEXT_BG_COLOR','rgb(82,146,247)'),m(this,'RESIZE_ROW_MIN_HEIGHT',0x24),m(this,eG(0x1c7),0x28),m(this,'DRAG_TIP_BG_COLOR','rgba(82,146,247,0.1)'),m(this,'DRAG_TIP_LINE_COLOR','rgb(82,146,247)'),m(this,eG(0x248),!0x0),m(this,'ENABLE_HISTORY',!0x1),m(this,eG(0x1f1),!0x0),m(this,'HISTORY_NUM',0x32),m(this,eG(0x214),!0x1),m(this,'HIGHLIGHT_HOVER_ROW_COLOR','rgba(186,203,231,0.1)'),m(this,'HIGHLIGHT_SELECTED_ROW',!0x1),m(this,'HIGHLIGHT_SELECTED_ROW_COLOR','rgba(82,146,247,0.1)'),m(this,'TOOLTIP_BG_COLOR','#303133'),m(this,'TOOLTIP_TEXT_COLOR','#fff'),m(this,'TOOLTIP_ZINDEX',0xbb8),m(this,'TOOLTIP_CUSTOM_STYLE',{}),m(this,eG(0x3ac),[{'label':'复制','value':'copy'},{'label':'剪切','value':eG(0x208)},{'label':'粘贴','value':'paste'},{'label':'清空选中内容','value':eG(0x3d6)}]),m(this,'CUSTOM_BODY_CONTEXT_MENU',[]),m(this,eG(0x154),[{'label':eG(0x15b),'value':'fixedLeft'},{'label':'右固定','value':eG(0x109)},{'label':eG(0x1d5),'value':'fixedNone'},{'label':'隐藏','value':eG(0x3c2)},{'label':'显示','value':'visible'},{'label':'恢复默认','value':'resetHeader'}]),m(this,'CUSTOM_HEADER_CONTEXT_MENU',[]),m(this,eG(0x27b),1.3),m(this,'AUTO_ROW_HEIGHT',!0x1),m(this,eG(0x1ce),!0x1),m(this,'HEADER_CELL_STYLE_METHOD'),m(this,'BODY_CELL_STYLE_METHOD'),m(this,'FOOTER_CELL_STYLE_METHOD'),m(this,'BODY_CELL_READONLY_METHOD'),m(this,eG(0x282)),m(this,'BODY_CELL_RULES_METHOD'),m(this,'BODY_CELL_TYPE_METHOD'),m(this,'BODY_CELL_EDITOR_METHOD'),m(this,eG(0xc7)),m(this,eG(0xd8)),m(this,'SPAN_METHOD'),m(this,'SELECTABLE_METHOD'),m(this,'EXPAND_LAZY_METHOD'),m(this,'BEFORE_VALUE_CHANGE_METHOD'),m(this,'BEFORE_PASTE_DATA_METHOD'),m(this,eG(0x3c4)),m(this,'BEFORE_SET_SELECTOR_METHOD'),m(this,'BEFORE_SET_AUTOFILL_METHOD'),m(this,'BEFORE_HEADER_CONTEXT_MENU_METHOD'),m(this,'BEFORE_BODY_CONTEXT_MENU_METHOD'),m(this,'BEFORE_COPY_METHOD'),this['_config']=s,this['updateCssVar']();}['init'](s){const eH=bY;this['_config']=s,this[eH(0x38b)]();}['updateCssVar'](){const eI=bY;let s={};Object[eI(0x3bf)](this)['forEach'](u=>{const eJ=eI;if(u[eJ(0x241)]('_COLOR')||u['endsWith'](eJ(0xaf))){const v='--evt-'+u['toLocaleLowerCase']()['replace'](/_/g,'-'),w=mc(v);w&&(s[u]=w);}}),Object['assign'](this,s,this['_config']);}}const ct='<svg\x20t=\x221724122015492\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x224237\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M401.472\x20316.992l159.04\x20217.664L591.488\x20512l-30.976-22.656-159.04\x20217.728q-2.24\x203.008-3.84\x206.464-1.6\x203.456-2.496\x207.104-0.896\x203.648-1.024\x207.424-0.192\x203.84\x200.384\x207.552\x200.64\x203.712\x201.92\x207.296\x201.28\x203.52\x203.2\x206.784\x201.984\x203.2\x204.544\x206.016\x202.56\x202.752\x205.632\x204.992\x203.072\x202.24\x206.464\x203.84\x203.456\x201.6\x207.168\x202.496\x203.648\x200.896\x207.424\x201.024\x203.776\x200.192\x207.488-0.448\x203.776-0.576\x207.296-1.856\x203.584-1.28\x206.784-3.264\x203.2-1.92\x206.016-4.48\x202.816-2.56\x205.056-5.632l159.04-217.728q3.584-4.928\x205.504-10.752\x201.92-5.76\x201.92-11.904\x200-6.08-1.92-11.904-1.92-5.76-5.504-10.752L463.488\x20271.68q-2.24-3.072-5.056-5.632-2.752-2.56-6.016-4.48-3.2-1.984-6.784-3.328-3.52-1.28-7.296-1.856-3.712-0.576-7.488-0.448-3.84\x200.192-7.424\x201.088-3.712\x200.896-7.168\x202.496-3.392\x201.6-6.4\x203.84-3.136\x202.176-5.696\x204.992-2.56\x202.752-4.48\x206.016-1.984\x203.2-3.264\x206.784-1.28\x203.52-1.92\x207.296-0.576\x203.712-0.384\x207.488\x200.128\x203.84\x201.024\x207.488\x200.896\x203.648\x202.496\x207.04\x201.6\x203.456\x203.84\x206.528z\x20m30.976-61.056q-3.776\x200-7.488\x200.704-3.712\x200.768-7.168\x202.24-3.52\x201.408-6.656\x203.52-3.2\x202.112-5.824\x204.8-2.688\x202.624-4.8\x205.76-2.112\x203.2-3.52\x206.656-1.472\x203.52-2.176\x207.232-0.768\x203.712-0.768\x207.488\x200\x203.776\x200.768\x207.488\x200.704\x203.712\x202.176\x207.232\x201.408\x203.456\x203.52\x206.592\x202.112\x203.2\x204.8\x205.824\x202.688\x202.688\x205.76\x204.8\x203.2\x202.112\x206.72\x203.52\x203.456\x201.472\x207.168\x202.176\x203.712\x200.768\x207.488\x200.768\x203.84\x200\x207.488-0.768\x203.712-0.704\x207.232-2.176\x203.456-1.408\x206.592-3.52\x203.2-2.112\x205.824-4.8\x202.688-2.688\x204.8-5.76\x202.112-3.2\x203.52-6.656\x201.472-3.52\x202.24-7.232\x200.704-3.712\x200.704-7.488\x200-3.84-0.704-7.488-0.768-3.712-2.24-7.232-1.408-3.456-3.52-6.592-2.112-3.2-4.8-5.824-2.624-2.688-5.76-4.8-3.2-2.112-6.656-3.52-3.52-1.472-7.232-2.24Q436.224\x20256\x20432.448\x20256z\x20m0\x20435.392q-3.776\x200-7.488\x200.704-3.712\x200.768-7.168\x202.176-3.52\x201.472-6.656\x203.584-3.2\x202.112-5.824\x204.736-2.688\x202.688-4.8\x205.824-2.112\x203.2-3.52\x206.656-1.472\x203.52-2.176\x207.232-0.768\x203.712-0.768\x207.488\x200\x203.776\x200.768\x207.488\x200.704\x203.712\x202.176\x207.168\x201.408\x203.52\x203.52\x206.656\x202.112\x203.2\x204.8\x205.76\x202.688\x202.752\x205.76\x204.8\x203.2\x202.112\x206.72\x203.584\x203.456\x201.472\x207.168\x202.176\x203.712\x200.768\x207.488\x200.768\x203.84\x200\x207.488-0.768\x203.712-0.704\x207.232-2.176\x203.456-1.472\x206.592-3.584\x203.2-2.048\x205.824-4.736\x202.688-2.688\x204.8-5.824\x202.112-3.2\x203.52-6.656\x201.472-3.456\x202.24-7.168\x200.704-3.712\x200.704-7.488\x200-3.84-0.704-7.488-0.768-3.712-2.24-7.232-1.408-3.52-3.52-6.656-2.112-3.136-4.8-5.76-2.624-2.688-5.76-4.8-3.2-2.112-6.656-3.584-3.52-1.408-7.232-2.176-3.712-0.704-7.488-0.704z\x22\x20p-id=\x224238\x22></path></svg>',Ml='<svg\x20t=\x221722595535853\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x224551\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M640\x20128H384c-170.496\x200-256\x2085.504-256\x20256v256c0\x20170.496\x2085.504\x20256\x20256\x20256h256c170.496\x200\x20256-85.504\x20256-256V384c0-170.496-85.504-256-256-256z\x20m67.584\x20302.592c-2.048\x204.608-4.608\x208.704-8.192\x2012.288L506.88\x20634.88c-3.584\x203.584-7.68\x206.144-12.288\x208.192-4.608\x202.048-9.728\x203.072-14.848\x203.072s-10.24-1.024-14.848-3.072c-4.608-2.048-8.704-4.608-12.288-8.192l-96.256-96.256c-3.584-3.584-6.144-7.68-8.192-12.288-2.048-4.608-3.072-9.728-3.072-14.848\x200-2.56\x200-5.12\x201.024-7.68\x200.512-2.56\x201.024-5.12\x202.048-7.168\x201.024-2.56\x202.048-4.608\x203.584-6.656\x201.536-2.048\x203.072-4.096\x204.608-5.632\x201.536-2.048\x203.584-3.584\x205.632-4.608\x202.048-1.536\x204.096-2.56\x206.656-3.584\x202.56-1.024\x204.608-1.536\x207.168-2.048\x202.56-0.512\x205.12-0.512\x207.68-0.512\x205.12\x200\x2010.24\x201.024\x2014.848\x203.072\x204.608\x202.048\x208.704\x204.608\x2012.288\x208.192l69.12\x2068.608L645.12\x20389.12c3.584-3.584\x207.68-6.144\x2012.288-8.192\x204.608-2.048\x209.728-3.072\x2014.848-3.072\x202.56\x200\x205.12\x200\x207.68\x200.512s5.12\x201.024\x207.168\x202.048c2.56\x201.024\x204.608\x202.048\x206.656\x203.584\x202.048\x201.536\x204.096\x203.072\x205.632\x204.608\x201.536\x201.536\x203.584\x203.584\x204.608\x205.632\x201.536\x202.048\x202.56\x204.096\x203.584\x206.656\x201.024\x202.56\x201.536\x204.608\x202.048\x207.168\x200.512\x202.56\x201.024\x205.12\x201.024\x207.68\x200\x205.12-1.024\x2010.24-3.072\x2014.848z\x22\x20p-id=\x224552\x22></path></svg>',Nl='<svg\x20t=\x221724122044148\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x224551\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M707.648\x20401.28L489.28\x20560.704l22.656\x2030.976\x2022.656-30.976L316.16\x20401.216q-3.072-2.24-6.464-3.84-3.456-1.536-7.104-2.432-3.712-0.896-7.488-1.088-3.776-0.128-7.488\x200.448-3.776\x200.64-7.296\x201.92-3.584\x201.28-6.784\x203.2-3.2\x201.984-6.016\x204.544-2.816\x202.56-5.056\x205.632-2.176\x203.072-3.84\x206.464-1.536\x203.456-2.432\x207.104-0.896\x203.712-1.088\x207.488-0.128\x203.776\x200.448\x207.488\x200.64\x203.776\x201.92\x207.296\x201.28\x203.584\x203.2\x206.784\x201.984\x203.2\x204.544\x206.016\x202.56\x202.752\x205.632\x204.992l218.368\x20159.552q4.928\x203.584\x2010.752\x205.504\x205.76\x201.92\x2011.904\x201.92\x206.08\x200\x2011.904-1.92\x205.76-1.92\x2010.752-5.504l218.368-159.552q3.008-2.24\x205.568-4.992\x202.56-2.816\x204.544-6.016\x201.92-3.2\x203.264-6.784\x201.28-3.52\x201.92-7.296\x200.576-3.712\x200.384-7.488-0.128-3.84-1.024-7.488-0.896-3.648-2.496-7.04-1.6-3.456-3.84-6.528-2.24-3.072-4.992-5.632-2.816-2.56-6.016-4.48-3.2-1.984-6.784-3.328-3.584-1.28-7.296-1.856-3.712-0.64-7.488-0.448-3.84\x200.192-7.488\x201.088-3.648\x200.896-7.04\x202.496-3.456\x201.536-6.528\x203.84z\x20m61.056\x2030.976q0-3.84-0.768-7.488-0.704-3.712-2.176-7.232-1.472-3.456-3.52-6.656-2.112-3.136-4.8-5.76-2.688-2.688-5.76-4.8-3.2-2.112-6.72-3.584-3.456-1.408-7.168-2.176-3.712-0.704-7.488-0.704-3.84\x200-7.488\x200.704-3.712\x200.768-7.232\x202.176-3.456\x201.472-6.656\x203.584-3.136\x202.112-5.76\x204.8-2.688\x202.624-4.8\x205.76-2.112\x203.2-3.584\x206.656-1.408\x203.52-2.176\x207.232-0.704\x203.712-0.704\x207.488\x200\x203.776\x200.704\x207.488\x200.768\x203.712\x202.176\x207.168\x201.472\x203.52\x203.584\x206.656\x202.112\x203.2\x204.8\x205.824\x202.624\x202.688\x205.76\x204.8\x203.2\x202.112\x206.656\x203.52\x203.52\x201.472\x207.232\x202.176\x203.712\x200.768\x207.488\x200.768\x203.776\x200\x207.488-0.768\x203.712-0.704\x207.168-2.176\x203.52-1.408\x206.656-3.52\x203.2-2.112\x205.824-4.8\x202.688-2.688\x204.8-5.76\x202.048-3.2\x203.52-6.72\x201.472-3.456\x202.176-7.168\x200.768-3.712\x200.768-7.488z\x20m-436.736\x200q0-3.84-0.768-7.488-0.704-3.712-2.176-7.232-1.408-3.456-3.52-6.656-2.112-3.136-4.8-5.76-2.688-2.688-5.76-4.8-3.2-2.112-6.656-3.584-3.52-1.408-7.232-2.176-3.712-0.704-7.488-0.704-3.84\x200-7.488\x200.704-3.712\x200.768-7.232\x202.176-3.456\x201.472-6.592\x203.584-3.2\x202.112-5.824\x204.8-2.688\x202.624-4.8\x205.76-2.112\x203.2-3.52\x206.656-1.472\x203.52-2.24\x207.232-0.704\x203.712-0.704\x207.488\x200\x203.776\x200.704\x207.488\x200.768\x203.712\x202.24\x207.168\x201.408\x203.52\x203.52\x206.656\x202.112\x203.2\x204.8\x205.824\x202.624\x202.688\x205.76\x204.8\x203.2\x202.112\x206.656\x203.52\x203.52\x201.472\x207.232\x202.176\x203.712\x200.768\x207.488\x200.768\x203.776\x200\x207.488-0.768\x203.712-0.704\x207.232-2.176\x203.456-1.408\x206.592-3.52\x203.2-2.112\x205.824-4.8\x202.688-2.688\x204.8-5.76\x202.112-3.2\x203.52-6.72\x201.472-3.456\x202.176-7.168\x200.768-3.712\x200.768-7.488z\x22\x20p-id=\x224552\x22></path></svg>',tl='<svg\x20t=\x221755138507987\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x225079\x22\x20width=\x22200\x22\x20height=\x22200\x22><path\x20d=\x22M512\x20938.688a42.688\x2042.688\x200\x200\x201-35.072-18.432l-192-277.312A42.56\x2042.56\x200\x200\x201\x20320\x20576h384a42.752\x2042.752\x200\x200\x201\x2035.072\x2066.944l-192\x20277.312a42.688\x2042.688\x200\x200\x201-35.072\x2018.432\x22\x20fill=\x22currentColor\x22\x20p-id=\x222016\x22></path><path\x20d=\x22M704\x20448H320a42.752\x2042.752\x200\x200\x201-35.072-66.944l192-277.312c16-23.04\x2054.208-23.04\x2070.144\x200l192\x20277.312A42.56\x2042.56\x200\x200\x201\x20704\x20448\x22\x20fill=\x22currentColor\x22\x20p-id=\x222015\x22></path></svg>',Yc=tl['replace']('fill=\x22currentColor\x22\x20p-id=\x222016\x22','fill=\x22#bec4c7\x22\x20p-id=\x222016\x22'),Wc=tl['replace']('fill=\x22currentColor\x22\x20p-id=\x222015\x22','fill=\x22#bec4c7\x22\x20p-id=\x222015\x22'),bs='<svg\x20t=\x221724133395728\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x222893\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M512\x20226.8476541a19.82487759\x2019.82487759\x200\x200\x201\x2014.66497778\x205.70304692c3.80203107\x203.82918865\x205.70304692\x208.71751457\x205.70304693\x2014.66497779v122.20814825a19.82487759\x2019.82487759\x200\x200\x201-5.70304693\x2014.66497778\x2019.82487759\x2019.82487759\x200\x200\x201-14.66497778\x205.70304691\x2019.82487759\x2019.82487759\x200\x200\x201-14.66497778-5.70304691\x2019.82487759\x2019.82487759\x200\x200\x201-5.70304693-14.66497778v-122.20814825a19.82487759\x2019.82487759\x200\x200\x201\x205.70304693-14.66497779\x2019.82487759\x2019.82487759\x200\x200\x201\x2014.66497778-5.70304692z\x20m0\x20407.36049415a19.82487759\x2019.82487759\x200\x200\x201\x2014.66497778\x205.70304691c3.80203107\x203.82918865\x205.70304692\x208.71751457\x205.70304693\x2014.66497778v122.20814827a19.82487759\x2019.82487759\x200\x200\x201-5.70304693\x2014.66497776\x2019.82487759\x2019.82487759\x200\x200\x201-14.66497778\x205.70304693\x2019.82487759\x2019.82487759\x200\x200\x201-14.66497778-5.70304693\x2019.82487759\x2019.82487759\x200\x200\x201-5.70304693-14.66497776v-122.20814827a19.82487759\x2019.82487759\x200\x200\x201\x205.70304693-14.66497778\x2019.82487759\x2019.82487759\x200\x200\x201\x2014.66497778-5.70304691zM797.1523459\x20512a19.82487759\x2019.82487759\x200\x200\x201-5.70304692\x2014.66497778\x2019.82487759\x2019.82487759\x200\x200\x201-14.66497779\x205.70304693h-122.20814825a19.82487759\x2019.82487759\x200\x200\x201-14.66497778-5.70304693\x2019.82487759\x2019.82487759\x200\x200\x201-5.70304691-14.66497778\x2019.82487759\x2019.82487759\x200\x200\x201\x205.70304691-14.66497778\x2019.82487759\x2019.82487759\x200\x200\x201\x2014.66497778-5.70304693h122.20814825a19.82487759\x2019.82487759\x200\x200\x201\x2014.66497779\x205.70304693c3.80203107\x203.82918865\x205.70304692\x208.71751457\x205.70304692\x2014.66497778z\x20m-407.36049415\x200a19.82487759\x2019.82487759\x200\x200\x201-5.70304691\x2014.66497778\x2019.82487759\x2019.82487759\x200\x200\x201-14.66497778\x205.70304693h-122.20814827a19.82487759\x2019.82487759\x200\x200\x201-14.66497776-5.70304693\x2019.82487759\x2019.82487759\x200\x200\x201-5.70304693-14.66497778\x2019.82487759\x2019.82487759\x200\x200\x201\x205.70304693-14.66497778\x2019.82487759\x2019.82487759\x200\x200\x201\x2014.66497776-5.70304693h122.20814827a19.82487759\x2019.82487759\x200\x200\x201\x2014.66497778\x205.70304693c3.80203107\x203.82918865\x205.70304692\x208.71751457\x205.70304691\x2014.66497778zM310.22076878\x20310.22076878a21.29137537\x2021.29137537\x200\x200\x201\x2014.66497779-5.70304693c5.51294514\x200\x2010.18401235\x201.90101585\x2014.01320099\x205.70304693l86.55052591\x2086.57768347a20.91117183\x2020.91117183\x200\x200\x201\x205.73020449\x2014.31193182\x2019.28172983\x2019.28172983\x200\x200\x201-6.05609289\x2014.013201\x2019.11878565\x2019.11878565\x200\x200\x201-14.013201\x206.05609289\x2020.96548698\x2020.96548698\x200\x200\x201-14.31193182-5.70304692L310.22076878\x20338.87178998a19.06447114\x2019.06447114\x200\x200\x201-5.70304693-14.01320099c0-5.54010272\x201.90101585-10.42842865\x205.70304693-14.66497778z\x20m288.32975775\x20288.32975775a19.79772001\x2019.79772001\x200\x200\x201\x2014.3390894-6.35482371c5.29568642\x200\x2010.04822572\x202.11827457\x2014.31193182\x206.38198066l86.57768347\x2086.55052651c3.80203107\x203.80203107\x205.70304692\x208.47309828\x205.70304691\x2014.01320102a19.55330372\x2019.55330372\x200\x200\x201-6.05609225\x2014.31193182\x2019.66193339\x2019.66193339\x200\x200\x201-14.31193245\x206.05609288\x2019.01015661\x2019.01015661\x200\x200\x201-14.01320099-5.70304692l-86.55052591-86.57768347a19.79772001\x2019.79772001\x200\x200\x201-6.38198129-14.31193245c0-5.29568642\x202.11827457-10.07538268\x206.38198129-14.33908939zM713.77923122\x20310.22076878c3.80203107\x204.26370672\x205.70304692\x209.15203265\x205.70304693\x2014.66497779s-1.90101585\x2010.18401235-5.70304693\x2014.01320099l-86.57768347\x2086.55052591a20.91117183\x2020.91117183\x200\x200\x201-14.31193182\x205.73020449\x2019.28172983\x2019.28172983\x200\x200\x201-14.013201-6.05609289\x2019.11878565\x2019.11878565\x200\x200\x201-6.05609289-14.013201c0-5.29568642\x201.90101585-10.07538268\x205.70304692-14.31193182l86.57768348-86.57768347c3.80203107-3.80203107\x208.50025585-5.70304692\x2014.01320099-5.70304693\x205.54010272\x200\x2010.40127108\x201.90101585\x2014.66497779\x205.70304693zM425.44947347\x20598.57768347a19.79772001\x2019.79772001\x200\x200\x201\x206.35482371\x2014.33908939c0\x205.29568642-2.11827457\x2010.04822572-6.38198066\x2014.31193245L338.89894756\x20713.77923122a19.06447114\x2019.06447114\x200\x200\x201-14.01320099\x205.70304693\x2019.55330372\x2019.55330372\x200\x200\x201-14.31193245-6.05609227\x2019.68909035\x2019.68909035\x200\x200\x201-6.05609227-14.31193245\x2019.01015661\x2019.01015661\x200\x200\x201\x205.70304693-14.01320099l86.57768347-86.55052591a19.79772001\x2019.79772001\x200\x200\x201\x2014.31193182-6.38198129c5.29568642\x200\x2010.07538268\x202.11827457\x2014.3390894\x206.38198129z\x22\x20fill=\x22#000000\x22\x20fill-opacity=\x22.65\x22\x20p-id=\x222894\x22></path></svg>';class yc{constructor(s){const eK=bY;m(this,'ctx'),m(this,'list',[{'name':'loading','configName':'LOADING_ICON_SVG','configColorName':'LOADING_ICON_COLOR','svg':bs,'color':'#4E5969'},{'name':eK(0x14f),'configName':'EXPAND_ICON_SVG','configColorName':'EXPAND_ICON_COLOR','svg':ct,'color':'#4E5969'},{'name':eK(0x38f),'configName':'SHRINK_ICON_SVG','configColorName':'SHRINK_ICON_COLOR','svg':Nl,'color':'#4E5969'},{'name':'checkbox-uncheck','configName':'CHECKBOX_UNCHECK_SVG','configColorName':'CHECKBOX_UNCHECK_COLOR','svg':'<svg\x20t=\x221722595639920\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x224708\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M128\x20640V384a256\x20256\x200\x200\x201\x20256-256h256a256\x20256\x200\x200\x201\x20256\x20256v256a256\x20256\x200\x200\x201-256\x20256H384a256\x20256\x200\x200\x201-256-256z\x20m64\x200q0\x2079.552\x2056.256\x20135.744Q304.448\x20832\x20384\x20832h256q79.552\x200\x20135.744-56.256Q832\x20719.552\x20832\x20640V384q0-79.552-56.256-135.744Q719.552\x20192\x20640\x20192H384q-79.552\x200-135.744\x2056.256Q192\x20304.448\x20192\x20384v256z\x22\x20p-id=\x224709\x22></path></svg>','color':''},{'name':'checkbox-check','configName':'CHECKBOX_CHECK_SVG','configColorName':'CHECKBOX_COLOR','svg':Ml,'color':'rgb(82,146,247)'},{'name':eK(0x10b),'configName':'CHECKBOX_INDETERMINATE_SVG','configColorName':'CHECKBOX_COLOR','svg':'<svg\x20t=\x221722595280953\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x224394\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M128\x20384v256q0\x2012.608\x201.28\x2025.088\x201.216\x2012.544\x203.648\x2024.832\x202.432\x2012.352\x206.08\x2024.384t8.448\x2023.68q4.864\x2011.584\x2010.752\x2022.72\x205.952\x2011.072\x2012.928\x2021.504\x207.04\x2010.496\x2014.976\x2020.224\x208\x209.728\x2016.896\x2018.56\x208.896\x208.96\x2018.56\x2016.896\x209.728\x208\x2020.224\x2014.976\x2010.432\x207.04\x2021.504\x2012.928\x2011.136\x205.888\x2022.72\x2010.688\x2011.648\x204.864\x2023.68\x208.512\x2012.032\x203.648\x2024.32\x206.08\x2012.352\x202.432\x2024.896\x203.712Q371.392\x20896\x20384\x20896h256q12.608\x200\x2025.088-1.28\x2012.544-1.216\x2024.832-3.648\x2012.352-2.432\x2024.384-6.08t23.68-8.512q11.584-4.8\x2022.72-10.688\x2011.072-5.952\x2021.504-12.928\x2010.496-7.04\x2020.224-14.976\x209.728-8\x2018.56-16.896\x208.96-8.832\x2016.896-18.56\x208-9.728\x2014.976-20.224\x207.04-10.432\x2012.928-21.504\x205.888-11.136\x2010.688-22.72\x204.864-11.648\x208.512-23.68\x203.648-12.032\x206.08-24.32\x202.432-12.352\x203.712-24.896Q896\x20652.608\x20896\x20640V384q0-12.608-1.28-25.088-1.216-12.544-3.648-24.832-2.432-12.352-6.08-24.384t-8.512-23.68q-4.8-11.584-10.688-22.72-5.952-11.072-12.928-21.504-7.04-10.496-14.976-20.224-8-9.664-16.896-18.56-8.832-8.96-18.56-16.896-9.728-8-20.224-14.976-10.432-7.04-21.504-12.928-11.136-5.888-22.72-10.752-11.648-4.8-23.68-8.448-12.032-3.648-24.32-6.08-12.352-2.432-24.896-3.712Q652.608\x20128\x20640\x20128H384q-12.608\x200-25.088\x201.28-12.544\x201.216-24.832\x203.648-12.352\x202.432-24.384\x206.08t-23.68\x208.448q-11.584\x204.864-22.72\x2010.752-11.072\x205.952-21.504\x2012.928-10.496\x207.04-20.224\x2014.976-9.664\x208-18.56\x2016.896-8.96\x208.896-16.896\x2018.56-8\x209.728-14.976\x2020.224-7.04\x2010.432-12.928\x2021.504-5.888\x2011.136-10.752\x2022.72-4.8\x2011.648-8.448\x2023.68-3.648\x2012.032-6.08\x2024.32-2.432\x2012.352-3.712\x2024.896Q128\x20371.392\x20128\x20384z\x20m566.016\x20166.336H330.112a38.4\x2038.4\x200\x200\x201\x200-76.8h363.904a38.4\x2038.4\x200\x200\x201\x200\x2076.8z\x22\x20p-id=\x224395\x22></path></svg>','color':eK(0x25c)},{'name':eK(0x322),'configName':eK(0x134),'svg':Ml,'color':'#DDE0EA'},{'name':'checkbox-disabled','configName':'CHECKBOX_DISABLED_SVG','configColorName':'CHECKBOX_DISABLED_COLOR','svg':'<svg\x20t=\x221722595946663\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x224865\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M128\x20640V384a256\x20256\x200\x200\x201\x20256-256h256a256\x20256\x200\x200\x201\x20256\x20256v256a256\x20256\x200\x200\x201-256\x20256H384a256\x20256\x200\x200\x201-256-256z\x22\x20p-id=\x224866\x22></path><path\x20d=\x22M128\x20640V384a256\x20256\x200\x200\x201\x20256-256h256a256\x20256\x200\x200\x201\x20256\x20256v256a256\x20256\x200\x200\x201-256\x20256H384a256\x20256\x200\x200\x201-256-256z\x20m64\x200q0\x2079.552\x2056.256\x20135.744Q304.448\x20832\x20384\x20832h256q79.552\x200\x20135.744-56.256Q832\x20719.552\x20832\x20640V384q0-79.552-56.256-135.744Q719.552\x20192\x20640\x20192H384q-79.552\x200-135.744\x2056.256Q192\x20304.448\x20192\x20384v256z\x22\x20fill=\x22#DDE0EA\x22\x20p-id=\x224867\x22></path></svg>','color':'#F1F2F4'},{'name':'icon-edit','configName':eK(0x205),'configColorName':eK(0xcf),'svg':'<svg\x20t=\x221744798692576\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x226606\x22\x20width=\x22200\x22\x20height=\x22200\x22><path\x20d=\x22M855.296\x20894.528H168.768v-76.8h686.528v76.8z\x20m38.4-38.4q0\x203.84-0.768\x207.488-0.704\x203.712-2.176\x207.232-1.472\x203.52-3.52\x206.656-2.112\x203.136-4.8\x205.76-2.688\x202.688-5.824\x204.8-3.2\x202.112-6.656\x203.584-3.456\x201.408-7.168\x202.176-3.712\x200.704-7.488\x200.704-3.84\x200-7.488-0.704-3.712-0.768-7.232-2.176-3.52-1.472-6.656-3.584-3.136-2.112-5.76-4.736-2.688-2.688-4.8-5.824-2.112-3.2-3.584-6.656-1.408-3.52-2.176-7.232-0.704-3.648-0.704-7.488\x200-3.776\x200.704-7.488\x200.768-3.712\x202.176-7.168\x201.472-3.52\x203.584-6.656\x202.112-3.136\x204.736-5.76\x202.688-2.752\x205.824-4.8\x203.2-2.112\x206.656-3.584\x203.52-1.472\x207.232-2.176\x203.712-0.768\x207.488-0.768\x203.776\x200\x207.488\x200.768\x203.712\x200.704\x207.168\x202.176\x203.52\x201.472\x206.656\x203.584\x203.2\x202.048\x205.76\x204.736\x202.752\x202.688\x204.864\x205.824\x202.048\x203.2\x203.52\x206.656\x201.472\x203.456\x202.176\x207.168\x200.768\x203.712\x200.768\x207.488z\x20m-686.528\x200q0\x203.84-0.768\x207.488-0.704\x203.712-2.176\x207.232-1.472\x203.52-3.52\x206.656-2.112\x203.136-4.8\x205.76-2.688\x202.688-5.76\x204.8-3.2\x202.112-6.72\x203.584-3.456\x201.408-7.168\x202.176-3.712\x200.704-7.488\x200.704-3.84\x200-7.488-0.704-3.712-0.768-7.232-2.176-3.456-1.472-6.656-3.584-3.136-2.112-5.76-4.736-2.688-2.688-4.8-5.824-2.112-3.2-3.584-6.656-1.408-3.52-2.176-7.232-0.704-3.648-0.704-7.488\x200-3.776\x200.704-7.488\x200.768-3.712\x202.176-7.168\x201.472-3.52\x203.584-6.656\x202.112-3.136\x204.736-5.76\x202.688-2.752\x205.824-4.8\x203.2-2.112\x206.656-3.584\x203.52-1.472\x207.232-2.176\x203.712-0.768\x207.488-0.768\x203.776\x200\x207.488\x200.768\x203.712\x200.704\x207.168\x202.176\x203.52\x201.472\x206.656\x203.584\x203.2\x202.048\x205.824\x204.736\x202.688\x202.688\x204.8\x205.824\x202.048\x203.2\x203.52\x206.656\x201.472\x203.456\x202.176\x207.168\x200.768\x203.712\x200.768\x207.488zM652.032\x20211.2l-369.92\x20370.368v89.344h90.048l369.664-369.856L652.032\x20211.2z\x20m-54.4-54.272q22.528-22.528\x2054.4-22.528\x2031.808\x200\x2054.336\x2022.528l89.792\x2089.856q22.464\x2022.464\x2022.464\x2054.272t-22.464\x2054.272l-369.664\x20369.856q-22.464\x2022.528-54.336\x2022.528H282.24q-31.808\x200-54.336-22.528-22.464-22.464-22.464-54.272V581.568q0-31.808\x2022.4-54.272l369.92-370.368z\x22\x20p-id=\x226607\x22></path></svg>','color':'#4E5969'},{'name':eK(0x319),'configName':'ICON_SELECT_SVG','configColorName':'ICON_SELECT_COLOR','svg':Nl,'color':'#4E5969'},{'name':eK(0x137),'configName':'SORT_ASC_ICON_SVG','configColorName':'SORT_ICON_COLOR','svg':Yc,'color':'rgb(82,146,247)'},{'name':'sort-desc','configName':'SORT_DESC_ICON_SVG','configColorName':'SORT_ICON_COLOR','svg':Wc,'color':'rgb(82,146,247)'},{'name':'sort-default','configName':'SORTABLE_ICON_SVG','svg':tl,'color':'#bec4c7'}]),m(this,'icons',new Map()),this['ctx']=s,this['init']();}async['init'](){const eL=bY,u=[];for(let v=0x0;v<this['list']['length'];v++){const w=this['list'][v];let x=w['color'],y=w[eL(0x2d8)];if(w[eL(0xc3)]){const B=this['ctx']['config'][w['configColorName']];B&&(x=B);}if(w['configName']){const C=this[eL(0x1fa)]['config'][w['configName']];C&&(y=C);}const z=this['createImageFromSVG'](y,x)['then'](F=>{const eM=eL;this[eM(0x2ea)]['set'](w[eM(0x209)],F);});u['push'](z);}for(let F=0x0;F<this[eL(0x1fa)][eL(0x34f)]['ICONS']['length'];F++){const G=this['ctx']['config']['ICONS'][F];let H=G[eL(0x90)];const I=this['createImageFromSVG'](G['svg'],H,G['isBlob'])['then'](J=>{const eN=eL;this['icons']['set'](G[eN(0x209)],J);});u['push'](I);}await Promise['all'](u),this['ctx']['emit'](eL(0x1ac));}async['createImageFromSVG'](u,v,w=!0x1){const eO=bY,x=new DOMParser()['parseFromString'](u,'image/svg+xml')['documentElement'];v&&x[eO(0x1b2)]('*')['forEach'](B=>{const eP=eO,C=B[eP(0x1c9)]('fill');(C==='currentColor'||C===null)&&B['setAttribute']('fill',v);});const y=new Image();let z='';if(w){const B=new Blob([new XMLSerializer()['serializeToString'](x)],{'type':'image/svg+xml'});z=URL['createObjectURL'](B);}else z='data:image/svg+xml;charset=utf-8,'+encodeURIComponent(new XMLSerializer()['serializeToString'](x));return y['src']=z,new Promise((C,F)=>{y['onerror']=()=>F(new Error('Failed\x20to\x20load\x20image:'+u)),y['onload']=()=>{C(y);};});}['get'](s){return this['icons']['get'](s);}['getSvg'](s){const eQ=bY;return this[eQ(0x15f)]['find'](u=>u['name']===s);}}class kt extends ns{constructor(u,v,w,x,y,z,B){const eR=bY;super(u,w,x,y,z,'header',B['fixed']),m(this,'align'),m(this,'hideHeaderSelection',!0x1),m(this,eR(0x125),eR(0x1b9)),m(this,'fixed'),m(this,'minWidth'),m(this,eR(0x20e)),m(this,'widthFillDisable'),m(this,'type'),m(this,'operation',!0x1),m(this,eR(0x38e)),m(this,eR(0x190)),m(this,'text'),m(this,'hide',!0x1),m(this,'displayText',''),m(this,'colspan'),m(this,'rowspan'),m(this,eR(0x17e)),m(this,'key'),m(this,'required',!0x1),m(this,'readonly',!0x1),m(this,eR(0xbf),!0x1),m(this,'overflowTooltipShow',!0x0),m(this,eR(0xd0),[]),m(this,'column'),m(this,'colIndex'),m(this,'rowKey'),m(this,'rules'),m(this,'hasChildren'),m(this,'render'),m(this,'style',{}),m(this,'drawX',0x0),m(this,eR(0x2bd),0x0),m(this,'sortIconName',eR(0x23d)),m(this,'sortAscIconName','sort-asc'),m(this,'sortDescIconName','sort-desc'),m(this,'visibleWidth',0x0),m(this,eR(0x140),0x0),m(this,'maxLineClampHeader','auto'),m(this,'domDataset',{}),m(this,'drawTextX',0x0),m(this,eR(0xd2),0x0),m(this,'drawTextWidth',0x0),m(this,'drawTextHeight',0x0),m(this,'drawCellBgColor',''),m(this,eR(0xa9),''),m(this,'drawTextFont',''),m(this,'drawSelectionImageX',0x0),m(this,'drawSelectionImageY',0x0),m(this,'drawSelectionImageWidth',0x0),m(this,eR(0x300),0x0),m(this,'drawSelectionImageName',''),m(this,'drawSelectionImageSource'),m(this,'drawSortImageX',0x0),m(this,'drawSortImageY',0x0),m(this,'drawSortImageWidth',0x0),m(this,'drawSortImageHeight',0x0),m(this,'drawSortImageName',''),m(this,'drawSortImageSource'),m(this,'renderHeaderType','default'),this['ctx']=u,this['x']=w,this['y']=x,this['width']=y,this['height']=z,this['visibleWidth']=y,this['visibleHeight']=z,this['colIndex']=v,this['key']=B['key'],this['minWidth']=B['minWidth'],this[eR(0x20e)]=B['maxWidth'],this['hide']=(typeof B[eR(0x3c2)]=='function'?B['hide'](B):B['hide'])||!0x1,this['type']=B['type']||'',this['editorType']=B['editorType']||'text',this['hideHeaderSelection']=B['hideHeaderSelection']||!0x1,this['align']=B['headerAlign']||B[eR(0x3c0)]||this['ctx']['config']['COLUMNS_ALIGN'],this['verticalAlign']=B['headerVerticalAlign']||B[eR(0x125)]||this[eR(0x1fa)]['config']['COLUMNS_VERTICAL_ALIGN'],this['fixed']=B[eR(0x32a)]||'',this['level']=B['level']||0x0,this['operation']=B['operation']||!0x1,this['text']=B['title'],this['column']=B,this['colspan']=B['colspan']||0x1,this['widthFillDisable']=B['widthFillDisable']||!0x1,this['rowspan']=B['rowspan']||0x1,this['rules']=B['rules'],this[eR(0x368)]=B['readonly']||!0x1,this['required']=B['required']||!0x1,this['sortIconName']=B['sortIconName']||'sort-default',this[eR(0xee)]=B['sortAscIconName']||'sort-asc',this['sortDescIconName']=B[eR(0x180)]||eR(0x2b1),this['rowKey']=ms(),this['overflowTooltipShow']=B['overflowTooltipHeaderShow']!==!0x1,this['hasChildren']=B['children']&&B['children']['length']>0x0||!0x1,this['render']=B['renderHeader'],this['maxLineClampHeader']=B['maxLineClampHeader']||'auto',this['renderHeaderType']=B[eR(0x230)]||'default';}['isVerticalVisible'](){const {stageHeight:s}=this['ctx'],u=s;return!(this['y']+this['height']<=0x0||this['y']>=u);}['updateStyle'](){const eS=bY;this['style']=this[eS(0x3a0)]();}['updateContainer'](){const {HEADER_CELL_STYLE_METHOD:u,HEADER_BG_COLOR:v,HEADER_TEXT_COLOR:w}=this['ctx']['config'];let x=v,y=w;if(typeof u=='function'){const C=u,{backgroundColor:F,color:G,font:H}=C({'colIndex':this['colIndex'],'column':this['column']})||{};F&&(x=F),G&&(y=G),H&&(this['drawTextFont']=H);}const {colKey:z,type:B}=this['ctx']['finderBar'];B==='header'&&z===this['key']&&(x=this['ctx']['config']['FINDER_CELL_BG_COLOR']),this['drawCellBgColor']=x,this['drawTextColor']=y;}['update'](){const eT=bY;this['updateContainer'](),this[eT(0x9a)]=this[eT(0x3c1)](),this['drawX']=this['getDrawX'](),this['drawY']=this[eT(0x10e)](),this['drawTextX']=this['drawX'],this['drawTextY']=this['drawY'],this[eT(0x3fb)]=this['width'],this[eT(0x105)]=this['height'],this[eT(0x352)]();}['draw'](){this['drawEdge'](),this['drawSelection'](),this['drawText'](),this['drawBg'](),this['drawSortIcon']();}['drawEdge'](){const eU=bY,{paint:s,config:{BORDER_COLOR:u,BORDER:v}}=this['ctx'];s[eU(0x25f)](this['drawX'],this['drawY'],this['width'],this['height'],{'borderColor':v?u:'transparent','fillColor':this['drawCellBgColor']});}['drawText'](){const eV=bY,{paint:u,config:{HEADER_FONT:v,CELL_PADDING:w,REQUIRED_COLOR:x}}=this['ctx'],y=this['displayText']+'_'+this['drawTextWidth']+'_'+this['drawTextFont'];this['ellipsis']=u['drawText'](this['displayText'],this['drawTextX'],this['drawTextY'],this['drawTextWidth'],this[eV(0x105)],{'font':this[eV(0x13a)]||v,'padding':w,'color':this['drawTextColor'],'align':this[eV(0x3c0)],'verticalAlign':this[eV(0x125)],'maxLineClamp':this['maxLineClampHeader'],'offsetRight':this[eV(0x2ed)]['sortBy']?0x10:0x0,'offsetLeft':this['required']?0xc:0x0,'cacheTextKey':y,'textCallback':z=>{const eW=eV;this['column']['sortBy']&&(this['drawSortImageX']=z['right']+0x4,this['drawSortImageY']=z['top']+(z['height']-0x10)/0x2),this['required']&&u['drawText']('*',z['left']-0x12,z['top']+(z[eW(0x8e)]-0xc)/0x2,0x18,0x18,{'color':x,'font':'18px\x20Arial','align':eW(0x346),'verticalAlign':'middle','padding':0x0});}});}['drawBg'](){const eX=bY;if(this['ctx']['dragHeaderIng'])return;const {ENABLE_SELECTOR:u,ENABLE_SELECTOR_SINGLE:v}=this['ctx'][eX(0x34f)];let w=-0x1,x=-0x1;if(this['ctx']['focusCellHeader']&&(w=this[eX(0x1fa)][eX(0x207)]['colIndex'],x=this['ctx']['focusCellHeader']['colIndex']+this['ctx']['focusCellHeader']['colspan']-0x1),u&&!v){const {xArr:z}=this[eX(0x1fa)]['selector'];w=z[0x0],x=z[0x1];}const y=this['colspan']+this['colIndex']-0x1;this['colIndex']>=w&&this[eX(0xa5)]<=x&&y<=x&&this[eX(0x1fa)]['paint']['drawRect'](this['drawX'],this['drawY'],this['width'],this[eX(0x8e)],{'borderColor':'transparent','fillColor':this['ctx'][eX(0x34f)][eX(0xb9)]||'transparent'});}['drawSelection'](){const eY=bY;if(!this[eY(0xf0)]&&['index-selection','selection','selection-tree','tree-selection'][eY(0x8c)](this['type'])){const {indeterminate:u,check:v,selectable:w}=this[eY(0x1fa)]['database']['getCheckedState'](),{CHECKBOX_SIZE:x=0x0,CELL_PADDING:y}=this[eY(0x1fa)]['config'];let z=this['drawX']+(this[eY(0x34d)]-x)/0x2,B=this[eY(0x2bd)]+(this['height']-x)/0x2;this['drawTextX']=z+x-y/0x2,this['drawTextWidth']=this['drawX']+this['visibleWidth']-this[eY(0x3da)],(this['align']==='left'||this[eY(0x3c0)]==='right')&&(z=this['drawX']+y,this['drawTextX']=z+x-y/0x2,this['drawTextWidth']=this['drawX']+this['visibleWidth']-this['drawTextX']),this['verticalAlign']==='top'?B=this['drawY']+y/0x2:this['verticalAlign']==='bottom'&&(B=this['drawY']+this[eY(0x8e)]-x-y/0x2);let C=this['ctx']['icons'][eY(0x27f)]('checkbox-uncheck'),F='checkbox-uncheck';u?(C=this['ctx']['icons']['get']('checkbox-indeterminate'),F=eY(0x10b)):v&&w?(C=this['ctx'][eY(0x2ea)]['get'](eY(0x225)),F='checkbox-check'):v&&!w?(C=this['ctx']['icons'][eY(0x27f)]('checkbox-check-disabled'),F=eY(0x322)):!v&&w?(C=this['ctx']['icons'][eY(0x27f)](eY(0x192)),F='checkbox-uncheck'):(C=this['ctx']['icons']['get']('checkbox-disabled'),F='checkbox-disabled'),C&&(this['drawSelectionImageX']=z,this['drawSelectionImageY']=B,this['drawSelectionImageWidth']=x,this['drawSelectionImageHeight']=x,this['drawSelectionImageName']=F,this['drawSelectionImageSource']=C,this['ctx']['paint']['drawImage'](this['drawSelectionImageSource'],this['drawSelectionImageX'],this['drawSelectionImageY'],this['drawSelectionImageWidth'],this['drawSelectionImageHeight']));}}['drawSortIcon'](){const eZ=bY;if(!this['column']['sortBy'])return;const u=0x10;let v=this['sortIconName'];const w=this['ctx'][eZ(0x247)]['getSortState'](this['key']);w['direction']==='asc'?v=this[eZ(0xee)]:w['direction']==='desc'&&(v=this['sortDescIconName']);const x=this['ctx']['icons'][eZ(0x27f)](v);x&&(this['drawSortImageWidth']=u,this['drawSortImageHeight']=u,this['drawSortImageName']=v,this['drawSortImageSource']=x,this[eZ(0x1fa)]['paint']['drawImage'](this['drawSortImageSource'],this['drawSortImageX'],this[eZ(0x334)],this['drawSortImageWidth'],this['drawSortImageHeight']));}['getText'](){const f0=bY;return this['render']&&this['renderHeaderType']==='default'||['',null,void 0x0]['includes'](this[f0(0x31e)])?'':''+this['text'];}['getOverlayerViewsStyle'](){const f1=bY;let s='';return this[f1(0x32a)]==='left'?s=this['drawX']+'px':this['fixed']==='right'?s=this['drawX']-(this['ctx']['stageWidth']-this['ctx']['fixedRightWidth'])+'px':s=this['drawX']-this['ctx']['fixedLeftWidth']+'px',{'position':f1(0x393),'overflow':'hidden','left':s,'top':this['drawY']+0x1+'px','width':this['width']+'px','height':this['height']-0x2+'px','pointerEvents':f1(0x285),'userSelect':'none'};}}class Sc{constructor(s){const f2=bY;m(this,'ctx'),m(this,'visibleHoverCell'),m(this,'resizeObserver'),m(this,f2(0x164)),this[f2(0x1fa)]=s,this['init']();}['init'](){const f4=bY;this['resizeObserver']=new ResizeObserver(s=>{const f3=b;this['ctx'][f3(0xc8)]('resetHeader'),this['ctx']['emit']('resizeObserver',s),this['ctx']['emit']('containerResize',this['ctx']['containerElement']);}),this['resizeObserver'][f4(0x302)](this[f4(0x1fa)]['containerElement']),this['mutationObserver']=new MutationObserver(s=>{const f5=f4;for(const u of s)u['type']===f5(0x24e)&&u['attributeName']==='class'&&(this['ctx']['config']['updateCssVar'](),this['ctx'][f5(0xc8)]('draw'));}),this['ctx'][f4(0x34f)]['ENABLE_AUTO_THEME']&&this['mutationObserver']['observe'](document[f4(0x11b)],{'attributes':!0x0,'attributeFilter':[f4(0x2bc)]}),this['ctx']['on']('mousedown',u=>{const f6=f4;if(this['isBusy'](u))return;const {offsetY:v,offsetX:w}=this['ctx']['getOffset'](u),x=v,y=w,{body:{height:z,visibleHeight:B,visibleWidth:C,y:F}}=this['ctx'],G=Math['min'](z,B);y>0x0&&y<C&&x>F&&x<F+G||this['ctx']['emit']('mousedownBodyOutside',u),u['button']===0x0&&(this['handleHeaderEvent'](y,x,this['ctx'][f6(0x268)]['renderCellHeaders'],H=>{const f7=f6;this[f7(0x1fa)]['focusCellHeader']=H,this['ctx']['focusCell']=void 0x0,this['ctx']['emit']('cellHeaderMousedown',H,u);}),this['handleBodyEvent'](y,x,this['ctx']['body']['renderRows'],H=>{const f8=f6;this[f8(0x1fa)]['setFocusCell'](H),this['ctx']['focusCellHeader']=void 0x0,this['ctx']['emit']('cellMousedown',H,u);}));}),this['ctx']['on']('mouseup',u=>{const f9=f4;if(u[f9(0x84)]!==0x0||this['isBusy'](u))return;const {offsetY:v,offsetX:w}=this['ctx']['getOffset'](u),x=v,y=w;this['handleHeaderEvent'](y,x,this['ctx']['header']['renderCellHeaders'],z=>{const fa=f9;this[fa(0x1fa)][fa(0x207)]=z,this['ctx'][fa(0xc8)](fa(0x252),z,u);}),this['handleBodyEvent'](y,x,this['ctx']['body']['renderRows'],z=>{this['ctx']['setFocusCell'](z),this['ctx']['emit']('cellMouseup',z,u);});}),this[f4(0x1fa)]['on']('click',s=>{const fb=f4;if(s['button']!==0x0||this[fb(0xb1)](s))return;const u=this[fb(0x1fa)]['getOffset'](s)['offsetY'],v=this['ctx']['getOffset'](s)['offsetX'];this['handleHeaderEvent'](v,u,this['ctx'][fb(0x268)]['renderCellHeaders'],w=>{const fd=fb;this['ctx']['clickCellHeader']=w,this['ctx']['emit'](fd(0x2bf),w,s),this['selectionClick'](w,s),this['sortClick'](w,s);}),this['handleBodyEvent'](v,u,this['ctx']['body']['renderRows'],w=>{this['ctx']['clickCell']=w,this['ctx']['emit']('cellClick',w,s),this['selectionClick'](w,s),this['treeClick'](w,s);},!0x0),this['handleBodyEvent'](v,u,this['ctx']['body']['renderRows'],w=>{this['hoverIconClick'](w);},!0x1);}),this['ctx']['on']('dblclick',s=>{const ff=f4;if(s['button']!==0x0||this['isBusy'](s))return;const u=this[ff(0x1fa)]['getOffset'](s)['offsetY'],v=this['ctx']['getOffset'](s)['offsetX'];this['handleHeaderEvent'](v,u,this[ff(0x1fa)]['header']['renderCellHeaders'],w=>{const fg=ff;this[fg(0x1fa)]['emit']('cellHeaderDblclick',w,s);}),this[ff(0x34a)](v,u,this['ctx'][ff(0x328)]['renderRows'],w=>{this['ctx']['clickCell']=w,this['ctx']['emit']('cellDblclick',w,s);});}),this['ctx']['on']('contextMenu',u=>{const fh=f4;if(this['isBusy'](u))return;const {offsetY:v,offsetX:w}=this['ctx']['getOffset'](u),x=v,y=w;this[fh(0xc5)](y,x,this['ctx'][fh(0x268)]['renderCellHeaders'],z=>{const fi=fh;this['ctx'][fi(0xc8)]('cellHeaderContextMenuClick',z,u);}),this['handleBodyEvent'](y,x,this[fh(0x1fa)]['body']['renderRows'],z=>{this['ctx']['emit']('cellContextMenuClick',z,u);});}),this[f4(0x1fa)]['on'](f4(0x1e3),s=>{const fj=f4;!this['ctx'][fj(0x94)]['contains'](s['relatedTarget'])&&this['ctx']['hoverCell']!==void 0x0&&(this['ctx']['hoverRow']=void 0x0,this['ctx'][fj(0x122)]=void 0x0,this[fj(0x1fa)][fj(0xc8)](fj(0x1ac)));}),this[f4(0x1fa)]['on'](f4(0x96),s=>{const fk=f4;if(this['isBusy'](s))return;this['ctx']['isPointer']=!0x1,this['ctx']['stageElement']['style']['cursor']==='pointer'&&(this['ctx']['stageElement']['style']['cursor']='default');const u=this['ctx']['getOffset'](s)['offsetY'],v=this['ctx']['getOffset'](s)[fk(0x123)];this['handleHeaderEvent'](v,u,this['ctx']['header']['renderCellHeaders'],w=>{const fm=fk;this['ctx']['emit'](fm(0x3d2),w,s),this['ctx'][fm(0x294)]&&this[fm(0x1fa)]['hoverCellHeader']!==w&&this[fm(0x1fa)][fm(0xc8)]('cellHeaderMouseleave',this[fm(0x1fa)]['hoverCellHeader'],s),this['imageEnterAndLeave'](w,s),this['ctx']['hoverCellHeader']!==w&&(this[fm(0x1fa)]['hoverCellHeader']=w,this['visibleHoverCell']=void 0x0,this[fm(0x1fa)]['emit']('cellHeaderHoverChange',w,s));}),this['handleBodyEvent'](v,u,this['ctx']['body']['renderRows'],w=>{const fn=fk;this['imageEnterAndLeave'](w,s),this['visibleHoverCell']!==w&&(this['ctx'][fn(0xc8)](fn(0x231),w,s),this['visibleHoverCell']=w,this['ctx']['hoverCellHeader']=void 0x0,this['ctx']['emit'](fn(0x32f),w,s));},!0x0),this['handleBodyEvent'](v,u,this['ctx']['body']['renderRows'],w=>{const fo=fk;var x;this['imageEnterAndLeave'](w,s),this['ctx']['emit']('cellMouseenter',w,s),this[fo(0x1fa)][fo(0x122)]&&this['ctx']['hoverCell']!==w&&this['ctx']['emit']('cellMouseleave',w,s),this['ctx'][fo(0x122)]!==w&&(((x=this['ctx']['hoverCell'])==null?void 0x0:x['rowKey'])!==w['rowKey']&&(this[fo(0x1fa)]['hoverCell']=w,this['ctx']['hoverRow']=this['ctx']['body']['renderRows']['find'](y=>y['rowKey']===w['rowKey']),this[fo(0x1fa)][fo(0xc8)]('rowHoverChange',this['ctx'][fo(0x35b)],w,s),this['ctx']['emit']('draw')),this['ctx']['hoverCell']=w,this['ctx'][fo(0xc8)]('cellHoverChange',w,s));}),this[fk(0x31d)](v,u,this['ctx']['footer']['renderRows'],w=>{const fp=fk;this[fp(0x1fa)]['emit'](fp(0x35f),w,s),this['ctx']['hoverCell']&&this['ctx']['hoverCell']!==w&&this['ctx']['emit']('cellFooterMouseleave',w,s),this['ctx'][fp(0xc8)]('cellFooterHoverChange',w,s);});});}['hoverIconClick'](s){const fq=bY;s[fq(0x2f5)]&&this['ctx']['isPointer']&&!this['ctx'][fq(0x244)]&&this['ctx']['emit']('hoverIconClick',s);}[bY(0x353)](u,v){const fr=bY;if(!(['selection','index-selection',fr(0x1c5),'tree-selection']['includes'](u[fr(0x13e)])&&this['ctx']['isPointer']))return;const {offsetY:w,offsetX:x}=this[fr(0x1fa)]['getOffset'](v),y=w,z=x;if(this['isInsideElement'](z,y,u['drawSelectionImageX'],u['drawSelectionImageY'],u['drawSelectionImageWidth'],u['drawSelectionImageHeight'])){if(u instanceof kt)u['drawSelectionImageName']==='checkbox-uncheck'||u[fr(0x29b)]==='checkbox-indeterminate'?this['ctx'][fr(0x247)]['toggleAllSelection']():u[fr(0x29b)]===fr(0x225)&&this['ctx']['database'][fr(0x3d9)](!0x0);else{if(!this['ctx']['database']['getRowSelectable'](u[fr(0xf7)]))return;this['ctx']['database']['toggleRowSelection'](u['rowKey'],u['type']);}}}['treeClick'](u,v){const fu=bY;if(!([fu(0x12f),fu(0x1c5),'tree-selection'][fu(0x8c)](u['type'])&&this['ctx'][fu(0x167)]))return;const {offsetY:w,offsetX:x}=this[fu(0x1fa)][fu(0x398)](v),y=w,z=x;if(!this['isInsideElement'](z,y,u['drawTreeImageX'],u['drawTreeImageY'],u['drawTreeImageWidth'],u[fu(0x3df)]))return;const B=this[fu(0x1fa)]['database']['getRowForRowKey'](u['rowKey']),{expand:C=!0x1,expandLazy:F=!0x1}=B||{},{EXPAND_LAZY:G,EXPAND_LAZY_METHOD:H}=this['ctx']['config'];if(G&&H&&!C&&!F)typeof H=='function'&&(this['ctx'][fu(0x247)]['expandLoading'](u['rowKey'],!0x0),H({'row':u['row'],'rowIndex':u['rowIndex'],'colIndex':u['colIndex'],'column':u['column'],'value':u['getValue']()})['then'](J=>{const fv=fu;this[fv(0x1fa)][fv(0x247)]['setExpandChildren'](u['rowKey'],J),this['ctx']['database']['expandLoading'](u['rowKey'],!0x1),this['ctx']['emit']('expandChange',this['ctx'][fv(0x247)]['getExpandRowKeys']());})[fu(0x1bf)](J=>{const fw=fu;this[fw(0x1fa)]['database']['expandLoading'](u['rowKey'],!0x1),console['error'](J);}));else{const J=this['ctx']['database']['getIsExpand'](u['rowKey']);this['ctx']['database']['expandItem'](u['rowKey'],!J),this['ctx']['emit']('expandChange',this['ctx']['database']['getExpandRowKeys']());}}['sortClick'](u,v){const fx=bY,{offsetY:w,offsetX:x}=this['ctx'][fx(0x398)](v),y=w,z=x;if(!this['isInsideElement'](z,y,u[fx(0x3a6)],u[fx(0x334)],u['drawSortImageWidth'],u['drawSortImageHeight']))return;const B=this['ctx']['database'][fx(0x212)](u['key']);let C;B['direction']===fx(0x25d)?C='asc':B[fx(0x117)]===fx(0x146)?C=fx(0x89):C='none',this[fx(0x1fa)]['database']['setSortState'](u['key'],C);}[bY(0x356)](u,v){const fy=bY,{offsetY:w,offsetX:x}=this['ctx']['getOffset'](v),y=w,z=x;if(u instanceof kt){if(u['drawSelectionImageSource']&&this['isInsideElement'](z,y,u[fy(0x3d0)],u['drawSelectionImageY'],u['drawSelectionImageWidth'],u['drawSelectionImageHeight'])){this['ctx']['stageElement']['style']['cursor']='pointer',this['ctx'][fy(0x167)]=!0x0;return;}if(u[fy(0x1e4)]&&this['isInsideElement'](z,y,u['drawSortImageX'],u['drawSortImageY'],u[fy(0x367)],u['drawSortImageHeight'])){this['ctx']['stageElement']['style'][fy(0x2ca)]='pointer',this['ctx']['isPointer']=!0x0;return;}}if(u instanceof il){if(u['drawSelectionImageSource']&&this['isInsideElement'](z,y,u['drawSelectionImageX'],u['drawSelectionImageY'],u[fy(0xae)],u['drawSelectionImageHeight'])){this[fy(0x1fa)]['stageElement']['style']['cursor']='pointer',this['ctx']['isPointer']=!0x0,this['ctx'][fy(0x247)]['getRowSelectable'](u['rowKey'])||(this['ctx']['stageElement']['style'][fy(0x2ca)]='not-allowed');return;}if(u['drawHoverImageSource']&&this['isInsideElement'](z,y,u[fy(0x221)],u['drawHoverImageY'],u['drawHoverImageWidth'],u['drawHoverImageHeight'])){this['ctx']['stageElement']['style']['cursor']='pointer',this[fy(0x1fa)]['isPointer']=!0x0;return;}if(u['drawTreeImageSource']&&this['isInsideElement'](z,y,u['drawTreeImageX'],u['drawTreeImageY'],u['drawTreeImageWidth'],u['drawTreeImageHeight'])){this['ctx']['stageElement']['style']['cursor']='pointer',this['ctx']['isPointer']=!0x0;return;}}}[bY(0x271)](u,v,w,x,y,z){return u>w&&u<w+y&&v>x&&v<x+z;}['isBusy'](u){const fz=bY,{offsetY:v,offsetX:w}=this['ctx']['getOffset'](u),x=v,y=w;if(this['ctx']['loading']||!this[fz(0x1fa)][fz(0x8a)](u)||this['ctx']['stageElement']['style']['cursor']==='row-resize'||this['ctx']['stageElement']['style']['cursor']===fz(0x169)||this['ctx']['columnResizing']||this['ctx']['rowResizing'])return!0x0;const {SCROLLER_TRACK_SIZE:z}=this[fz(0x1fa)]['config'];return!!(this[fz(0x1fa)]['scrollerMove']||this['ctx']['scrollerFocus']||x>this['ctx']['stageHeight']-z||y>this['ctx']['stageWidth']-z);}['handleBodyEvent'](u,v,w,x,y=!0x1){const fA=bY;if(this['isInsideBody'](v))for(const z of w){const B=z['fixedCells']['concat'](z['noFixedCells']);for(const C of B){const F=C['getDrawX'](),G=C['getDrawY']();if(y){if(u>F&&u<F+C['visibleWidth']&&v>G&&v<G+C['visibleHeight']){x(C);return;}}else{if(u>F&&u<F+C[fA(0x34d)]&&v>G&&v<G+C['height']){x(C);return;}}}}}['handleHeaderEvent'](u,v,w,x){for(const y of w){const z=y['getDrawX'](),B=y['getDrawY']();if(u>z&&u<z+y['width']&&v>B&&v<B+y['height']){x(y);return;}}}['handleFooterEvent'](u,v,w,x,y=!0x1){const fB=bY;for(const z of w){const B=z['fixedCells']['concat'](z['noFixedCells']);for(const C of B){const F=C['getDrawX'](),G=C['getDrawY']();if(y){if(u>F&&u<F+C['visibleWidth']&&v>G&&v<G+C[fB(0x140)]){x(C);return;}}else{if(u>F&&u<F+C['width']&&v>G&&v<G+C['height']){x(C);return;}}}}}['isInsideBody'](s){const fC=bY;return s>this['ctx']['body']['y']&&s<this['ctx']['body']['y']+this[fC(0x1fa)][fC(0x328)]['visibleHeight'];}['destroy'](){const fD=bY;this[fD(0x226)][fD(0x33b)](this['ctx']['stageElement']),this['mutationObserver']['disconnect']();}}class Xc{constructor(u,v){const fE=bY;m(this,'eventBus'),m(this,'eventBrowser'),m(this,fE(0x2e6)),m(this,'containerElement'),m(this,'stageElement'),m(this,'canvasElement'),m(this,'overlayerElement'),m(this,'editorElement'),m(this,'emptyElement'),m(this,'contextMenuElement'),m(this,'loadingElement'),m(this,'stageWidth',0x0),m(this,'stageHeight',0x0),m(this,'paint'),m(this,'icons'),m(this,fE(0x3f5),''),m(this,'isMouseoverTargetContainer',!0x1),m(this,fE(0x358),!0x1),m(this,'isPointer',!0x1),m(this,'isEmpty',!0x1),m(this,'rowResizing',!0x1),m(this,'columnResizing',!0x1),m(this,'scrollerMove',!0x1),m(this,'scrollerFocus',!0x1),m(this,'autofillMove',!0x1),m(this,'selectorMove',!0x1),m(this,fE(0x244),!0x1),m(this,fE(0x34e),!0x1),m(this,'selectRowsIng',!0x1),m(this,fE(0x131),!0x1),m(this,'finding',!0x1),m(this,fE(0x1e7),!0x1),m(this,fE(0x1a4),!0x1),m(this,fE(0x23b),!0x1),m(this,fE(0x188),!0x1),m(this,fE(0x31a),!0x1),m(this,'hasSelection',!0x1),m(this,'hasTree',!0x1),m(this,'scrollY',0x0),m(this,'scrollX',0x0),m(this,'fixedLeftWidth',0x0),m(this,fE(0x23e),0x0),m(this,'lastCenterColIndex',0x0),m(this,fE(0x363),0x0),m(this,'maxRowIndex',0x0),m(this,'hoverRow'),m(this,'clickCell'),m(this,'focusCell'),m(this,'currentCell'),m(this,'hoverCell'),m(this,fE(0x197)),m(this,'focusCellHeader'),m(this,'hoverCellHeader'),m(this,'mouseX',0x0),m(this,'mouseY',0x0),m(this,'body',{'x':0x0,'y':0x0,'width':0x0,'height':0x0,'visibleHeight':0x0,'visibleWidth':0x0,'headIndex':0x0,'tailIndex':0x0,'visibleRows':[],'renderRows':[],'data':[]}),m(this,'footer',{'x':0x0,'y':0x0,'width':0x0,'height':0x0,'visibleHeight':0x0,'visibleWidth':0x0,'renderRows':[]}),m(this,fE(0x268),{'x':0x0,'y':0x0,'width':0x0,'height':0x0,'visibleHeight':0x0,'visibleWidth':0x0,'visibleLeafColumns':[],'leafCellHeaders':[],'allCellHeaders':[],'renderLeafCellHeaders':[],'renderCellHeaders':[],'fixedLeftCellHeaders':[],'fixedRightCellHeaders':[],'renderCenterCellHeaders':[]}),m(this,fE(0x35a),{'enable':!0x1,'xArr':[-0x1,-0x1],'yArr':[-0x1,-0x1],'xArrCopy':[-0x1,-0x1],'yArrCopy':[-0x1,-0x1]}),m(this,fE(0x16a),{'enable':!0x1,'xArr':[-0x1,-0x1],'yArr':[-0x1,-0x1]}),m(this,'finderBar',{'text':'','rowIndex':-0x1,'colIndex':-0x1,'type':'body'}),m(this,'database'),m(this,'history'),m(this,'config');const {containerElement:w,stageElement:x,canvasElement:y,overlayerElement:z,editorElement:B,emptyElement:C,loadingElement:F,contextMenuElement:G}=u;this['containerElement']=w,x['tabIndex']=0x0,this['stageElement']=x,this['canvasElement']=y,this[fE(0x10c)]=z,this['editorElement']=B,this['emptyElement']=C,this['loadingElement']=F,this['contextMenuElement']=G,this['config']=new Jl(v['config']||{}),this['eventBus']=new bc(),this['eventBrowser']=new nc(this),this['eventTable']=new Sc(this),this['paint']=new ac(this['canvasElement']),this[fE(0x247)]=new Ic(this,v),this['history']=new oc(this),this['icons']=new yc(this);}['setConfig'](s){this['config']=new Jl(s);}['setItemValueByEditor'](u,v,w,x=!0x0,y=!0x0,z=!0x0){const fF=bY;if(this['config']['ENABLE_MERGE_CELL_LINK']){const B=this['database'][fF(0x178)](u,v);if(B&&(B['mergeRow']||B['mergeCol'])){const {dataList:C}=B['getSpanInfo'](),F=C['map'](G=>({...G,'value':w}));this['database']['batchSetItemValue'](F,x,z);return;}}this['database']['setItemValue'](u,v,w,x,y,!0x0,z);}['batchSetItemValueByEditor'](u,v=!0x0,w=!0x0){const fH=bY;if(this['config']['ENABLE_MERGE_CELL_LINK']){const x=[];u['forEach'](y=>{const fG=b,z=this[fG(0x247)][fG(0x1e8)](y[fG(0xf7)]),B=this['database']['getColIndexForKey'](y['key']);if(z===void 0x0||B===void 0x0)return;const C=this[fG(0x247)][fG(0x2f8)](z,B);if(C){const {dataList:F}=C['getSpanInfo'](),G=F['map'](H=>({...H,'value':y['value']}));x['push'](...G);}}),this['database'][fH(0x335)](x,v,w);}else this['database']['batchSetItemValue'](u,v,w);}['setFocusCell'](s){const fI=bY;var u;if(this['focusCell']!==s){if(((u=this[fI(0x101)])==null?void 0x0:u['rowKey'])!==s['rowKey']){this['currentCell']=s,this['emit'](fI(0xa8),s);const v={'rowIndex':s['rowIndex'],'rowKey':s['rowKey'],'row':s['row']};this['emit']('currentRowChange',v);}this[fI(0x101)]=s,this['emit']('cellFocusChange',s);}}[bY(0x108)](){const fJ=bY;this['selector']['enable']=!0x1,this[fJ(0x35a)]['xArr']=[-0x1,-0x1],this['selector'][fJ(0x3e9)]=[-0x1,-0x1],this[fJ(0xc8)]('clearSelector');}['clearSelectorCopy'](){this['selector']['xArrCopy']=[-0x1,-0x1],this['selector']['yArrCopy']=[-0x1,-0x1];}[bY(0x382)](){this['autofill']={'enable':!0x1,'xArr':[-0x1,-0x1],'yArr':[-0x1,-0x1]};}['getSelectedData'](){const fK=bY,u=[],v=this['selector']['yArr'],w=this['selector']['xArr'];let x='';for(let y=0x0;y<=v[0x1]-v[0x0];y++){const z=[];for(let B=0x0;B<=w[0x1]-w[0x0];B++){const C=y+v[0x0],F=B+w[0x0],G=this['database']['getVirtualBodyCell'](C,F);G&&(G[fK(0x135)]==='displayText'?z['push'](G['displayText']):z['push'](G[fK(0xa2)]()));}x+=z[fK(0x369)]('\x09')+'\x0d',u['push'](z);}return x=x?x['replace'](/\r$/,''):'\x20',{'xArr':w,'yArr':v,'text':x,'value':u};}[bY(0x203)](u,v){const fL=bY;let w=Math[fL(0x236)](u);const x=this['body']['width']-this['body'][fL(0x250)];w<0x0?w=0x0:w>x&&(w=x);let y=Math[fL(0x236)](v),z=this[fL(0x328)]['height']-this['body']['visibleHeight'];this['config']['FOOTER_FIXED']||(z=this[fL(0x328)]['height']+this['footer']['height']-this['body']['visibleHeight']),y<0x0?y=0x0:y>z&&(y=z),this['emit']('setScroll',w,y);}['setScrollX'](s){const fM=bY;let u=Math['floor'](s);const v=this['body']['width']-this[fM(0x328)]['visibleWidth'];u<0x0?u=0x0:u>v&&(u=v),this['emit']('setScrollX',u);}['setScrollY'](u){const fN=bY;let v=Math[fN(0x236)](u),w=0x0;this['config']['FOOTER_FIXED']||(w=this['footer']['height']);const x=this['body']['height']-this['body']['visibleHeight']+w;v<0x0?v=0x0:v>x&&(v=x),this['emit']('setScrollY',v);}['startAdjustPosition'](s){const fO=bY;this['emit'](fO(0x170),s);}['stopAdjustPosition'](){this['emit']('stopAdjustPosition');}['isTarget'](s){return!!this['containerElement']['contains'](s['target']);}[bY(0x398)](s){const fP=bY,{left:u,top:v}=this[fP(0x94)]['getBoundingClientRect']();return{'offsetX':s['clientX']-u,'offsetY':s[fP(0x1b5)]-v};}['hasEvent'](s){return this['eventBus']['has'](s);}['on'](s,u){this['eventBus']['on'](s,u);}['once'](s,u){this['eventBus']['once'](s,u);}['off'](s,u){this['eventBus']['off'](s,u);}[bY(0xc8)](s,...u){this['eventBus']['emit'](s,...u);}['destroy'](){const fQ=bY;this['eventTable']['destroy'](),this['eventBrowser'][fQ(0x110)](),this['eventBus']['destroy']();}}class Fl{constructor(s,u){const fR=bY;m(this,'ctx'),m(this,'type'),m(this,'isFocus',!0x1),m(this,'trackX',0x0),m(this,'trackY',0x0),m(this,'trackWidth',0x0),m(this,fR(0x365),0x0),m(this,'splitPoints',[]),m(this,'barX',0x0),m(this,'barY',0x0),m(this,'barWidth',0x0),m(this,'barHeight',0x0),m(this,'distance',0x0),m(this,'visibleDistance',0x0),m(this,'clientX',0x0),m(this,'clientY',0x0),m(this,'dragStart',0x0),m(this,fR(0xa7),!0x1),m(this,'scroll',0x0),this[fR(0x1fa)]=s,this['type']=u,this['type']==='vertical'?this['scroll']=this['ctx']['scrollY']:this[fR(0x238)]=this['ctx']['scrollX'];}['onWheel'](s){this['updateScroll'](s);}[bY(0x171)](u){const fS=bY,{clientY:v,clientX:w}=u['touches'][0x0],x=v-this['clientY'],y=w-this['clientX'];let z=0x0;this['type']==='vertical'?(z=Math['max'](0x0,Math['min'](this['dragStart']-x,this['distance'])),this['hasScrollbar']()&&!(z===0x0&&x>0x0||z===this['distance']&&x<0x0)&&u['preventDefault']()):this['type']==='horizontal'&&(z=Math['max'](0x0,Math[fS(0x1fe)](this['dragStart']-y,this['distance']))),this['scroll']=z;}[bY(0x306)](s){const fT=bY,{clientY:u,clientX:v}=s['touches'][0x0];this['clientX']=v,this[fT(0x1b5)]=u,this['dragStart']=this[fT(0x238)];}['onMouseDown'](u){const fU=bY;if(!(u['target']instanceof Element)||!this['ctx']['isTarget'](u))return;if(this['ctx'][fU(0x13c)][fU(0x270)][fU(0x2ca)]===fU(0x2c2)||this['ctx'][fU(0x13c)][fU(0x270)]['cursor']==='col-resize')return!0x0;const {offsetX:v,offsetY:w,clientX:x,clientY:y}=u;if(!(x==this['clientX']&&y==this['clientY'])){if(this['isOnScrollbar'](v,w))this['clientX']=x,this[fU(0x1b5)]=y,this['isDragging']=!0x0,this['ctx']['scrollerMove']=!0x0,this['isFocus']=!0x0,this['dragStart']=this['scroll'],u['preventDefault']();else{if(this['isOnTrack'](v,w)){let z=0x0;this['type']==='vertical'?z=(w-this['ctx']['header']['height']-this['barHeight']/0x2)/(this['visibleDistance']-this[fU(0x92)])*this[fU(0xd3)]:z=(v-this['barWidth']/0x2)/(this['visibleDistance']-this['barWidth'])*this[fU(0xd3)],this['scroll']=Math['max'](0x0,Math[fU(0x1fe)](z,this['distance']));}}}}['onMouseUp'](){const fV=bY;this['isDragging']=!0x1,this[fV(0x324)]=!0x1,this['clientX']=0x0,this[fV(0x1b5)]=0x0;}['onMouseMove'](u){const fW=bY,{offsetX:v,offsetY:w,clientX:x,clientY:y,buttons:z}=u;if(this['isOnScrollbar'](v,w)&&u['target']===this[fW(0x1fa)][fW(0xe1)]?this['isFocus']=!0x0:this['isFocus']=!0x1,z===0x0||x==this['clientX']&&y==this['clientY'])return;let B=0x0;if(this[fW(0x13e)]==='horizontal'?B=x-this[fW(0x133)]:B=y-this['clientY'],this[fW(0xa7)]&&B!==0x0){let C=0x0;this['type']==='vertical'?C=this['dragStart']+B/(this['visibleDistance']-this[fW(0x92)])*this['distance']:C=this['dragStart']+B/(this['visibleDistance']-this[fW(0x21f)])*this['distance'],this['scroll']=Math['max'](0x0,Math['min'](C,this['distance']));}}['isPointInElement'](u,v,w,x,y,z){return u>=w&&u<=w+y&&v>=x&&v<=x+z;}['hasScrollbar'](){const fX=bY;return this[fX(0x13e)]===fX(0x3f9)?this[fX(0x92)]>0x0:this['type']==='horizontal'?this['barWidth']>0x0:!0x1;}['isOnScrollbar'](s,u){return this['isPointInElement'](s,u,this['barX'],this['barY'],this['barWidth'],this['barHeight']);}['isOnTrack'](s,u){return this['isPointInElement'](s,u,this['trackX'],this['trackY'],this['trackWidth'],this['trackHeight']);}['updateScroll'](s){const fY=bY,u=s[fY(0x1ab)],v=s[fY(0x37d)];this[fY(0x13e)]==='vertical'&&s['shiftKey']===!0x1?(this[fY(0x2f9)]()&&!(this[fY(0x238)]===0x0&&v<0x0||this['scroll']===this['distance']&&v>0x0)&&s['preventDefault'](),this['scroll']=Math[fY(0x21e)](0x0,Math[fY(0x1fe)](this['scroll']+v,this['distance']))):this['type']==='horizontal'&&(s['shiftKey']?this['scroll']=Math['max'](0x0,Math['min'](this['scroll']+v,this['distance'])):this['scroll']=Math['max'](0x0,Math['min'](this[fY(0x238)]+u,this['distance'])));}['updatedSize'](){const fZ=bY,{body:u,header:v,stageHeight:w,stageWidth:x,config:{SCROLLER_TRACK_SIZE:z=0x0,SCROLLER_SIZE:B=0x0,BORDER:C}}=this['ctx'],F=x,G=w,H=v['height'],J=v['width'],K=u['height'],L=this['ctx'][fZ(0x1de)]['height'];if(this['type']===fZ(0x3f9)){this['visibleDistance']=G-z-H,this['distance']=K-this['visibleDistance']+L,this['trackX']=F-z,this['trackY']=0x0,this[fZ(0x147)]=[this['trackX'],H,this['trackX']+z,H],this['trackWidth']=z,this['trackHeight']=G,this['barX']=this['trackX']-0x1+(z-B)/0x2,this['barWidth']=B;const N=this['distance']?this['visibleDistance']/(K+L):0x0;let O=Math['floor'](N*this[fZ(0x391)]);O<0x1e?O=0x1e:O>this['visibleDistance']&&(O=0x0),this['barHeight']=O,this['barY']=H+this['scroll']/this['distance']*(this['visibleDistance']-this['barHeight']),this['scroll']=Math['max'](0x0,Math['min'](this['scroll'],this['distance']));}else{this[fZ(0x391)]=F-z,this['distance']=J-this['visibleDistance'],this[fZ(0x147)]=[F-z,G-z,F-z,G];const P=C?0x0:0.5;this['trackX']=0x0,this['trackY']=G-z+P,this['trackWidth']=F,this['trackHeight']=z;const R=this['distance']?this['visibleDistance']/J:0x0;let S=Math['floor'](R*this[fZ(0x391)]);this['barY']=this['trackY']-0x1+(z-B)/0x2,S<0x1e?S=0x1e:S>=this[fZ(0x391)]&&(S=0x0),this[fZ(0x21f)]=S,this[fZ(0x92)]=B,this['barX']=this['scroll']/this['distance']*(this['visibleDistance']-this['barWidth']),this['scroll']=Math['max'](0x0,Math['min'](this['scroll'],this[fZ(0xd3)]));}}['draw'](){const g0=bY,{config:{SCROLLER_FOCUS_COLOR:u,SCROLLER_COLOR:v,BORDER_COLOR:w,BORDER:x,SCROLLER_TRACK_COLOR:y}}=this['ctx'];this['updatedSize']();let z=w;x||(z='transparent'),this[g0(0x1fa)]['paint']['drawRect'](this['trackX'],this['trackY'],this['trackWidth'],this['trackHeight'],{'borderColor':z,'fillColor':y}),this['ctx']['paint'][g0(0x25f)](this['barX'],this[g0(0x3c6)],this['barWidth'],this['barHeight'],{'fillColor':this['isFocus']||this['isDragging']?u:v,'radius':0x4}),this['splitPoints']['length']>0x0&&this['ctx']['paint']['drawLine'](this['splitPoints'],{'borderColor':z,'borderWidth':0x1}),this['ctx']['scrollerFocus']=this[g0(0x324)];}}class pc{constructor(s){const g1=bY;m(this,g1(0x1fa)),m(this,'verticalScrollbar'),m(this,'horizontalScrollbar'),m(this,'mousedownHeader',!0x1),m(this,'adjustPositionX',''),m(this,'adjustPositionY',''),m(this,g1(0x1f6),0x0),m(this,g1(0x311),0x0),this['ctx']=s,this['verticalScrollbar']=new Fl(s,g1(0x3f9)),this['horizontalScrollbar']=new Fl(s,g1(0x349)),this[g1(0x1fa)]['on'](g1(0x3ca),u=>this['onWheel'](u)),this['ctx']['on']('mousedown',u=>this[g1(0x290)](u)),this[g1(0x1fa)]['on']('mousemove',u=>this['onMouseMove'](u)),this[g1(0x1fa)]['on'](g1(0x2cb),()=>this[g1(0x16e)]()),this['ctx']['on']('touchmove',u=>this['onTouchmove'](u)),this['ctx']['on']('touchstart',u=>{this['onTouchstart'](u);}),this[g1(0x1fa)]['on']('setScroll',(u,v)=>{const g2=g1;this[g2(0x203)](u,v);}),this['ctx']['on']('setScrollX',u=>{const g3=g1;this[g3(0x3b8)](u);}),this[g1(0x1fa)]['on']('setScrollY',u=>{const g4=g1;this[g4(0x9e)](u);}),this[g1(0x1fa)]['on']('scrollToIndex',(u,v)=>{const g5=g1;this[g5(0x3cd)](u,v);}),this['ctx']['on']('cellHeaderMousedown',()=>{this['mousedownHeader']=!0x0;}),this['ctx']['on']('startAdjustPosition',u=>{const g6=g1;this[g6(0x170)](u);}),this['ctx']['on']('stopAdjustPosition',()=>{this['stopAdjustPosition']();});}['onWheel'](s){const g7=bY;this['verticalScrollbar'][g7(0x11d)](s),this['horizontalScrollbar']['onWheel'](s),this['draw']();}['onTouchmove'](s){this['verticalScrollbar']['onTouchmove'](s),this['horizontalScrollbar']['onTouchmove'](s),this['draw']();}[bY(0x306)](s){this['verticalScrollbar']['onTouchstart'](s),this['horizontalScrollbar']['onTouchstart'](s),this['draw']();}['onMouseDown'](s){this['verticalScrollbar']['onMouseDown'](s),this['horizontalScrollbar']['onMouseDown'](s),this['draw']();}['onMouseMove'](s){const g8=bY;this['verticalScrollbar']['onMouseMove'](s),this[g8(0xb3)][g8(0x39e)](s),this[g8(0x1ac)]();}['onMouseUp'](){const g9=bY;this[g9(0x34b)]=!0x1,this['verticalScrollbar'][g9(0x16e)](),this['horizontalScrollbar']['onMouseUp'](),this['ctx']['scrollerMove']=!0x1;}['draw'](){const ga=bY;this['verticalScrollbar']['draw'](),this['horizontalScrollbar']['draw']();const s=Math['floor'](this['horizontalScrollbar']['scroll']),u=Math[ga(0x236)](this['verticalScrollbar']['scroll']);(s!==this['ctx']['scrollX']||u!==this['ctx']['scrollY'])&&(this['ctx']['emit']('onScroll',s,u),s!==this[ga(0x1fa)]['scrollX']&&this['ctx']['emit']('onScrollX',s),u!==this['ctx']['scrollY']&&this['ctx'][ga(0xc8)]('onScrollY',u),this['ctx'][ga(0x2cf)]=s,this['ctx']['scrollY']=u,this['ctx']['emit']('draw'));}[bY(0x203)](s,u){this['horizontalScrollbar']['scroll']=s,this['verticalScrollbar']['scroll']=u,this['ctx']['emit']('draw'),this['ctx']['emit']('onScroll',s,u);}['setScrollX'](s){const gb=bY;this[gb(0xb3)]['scroll']=s,this['ctx'][gb(0xc8)]('draw');}['setScrollY'](s){const gd=bY;this['verticalScrollbar']['scroll']=s,this['ctx']['emit'](gd(0x1ac));}['scrollToColkey'](s){const gf=bY,{header:u}=this['ctx'],v=u[gf(0x35d)]['find'](w=>w['key']===s);v&&this['setScrollX'](v['x']-u['visibleWidth']/0x2);}['scrollToColIndex'](s){const gg=bY,{header:u}=this[gg(0x1fa)],v=u[gg(0x35d)]['find'](w=>w[gg(0xa5)]===s);v&&this['setScrollX'](v['x']-u['visibleWidth']/0x2);}[bY(0x3e3)](u){const {body:v,database:w}=this['ctx'],{top:x}=w['getPositionForRowIndex'](u);this['setScrollY'](x-v['visibleHeight']/0x2);}['scrollToIndex'](s,u){this['scrollToRowIndex'](s),this['scrollToColIndex'](u);}['scrollToRowKey'](u){const {body:v,database:w}=this['ctx'],x=w['getRowIndexForRowKey'](u);if(x===void 0x0)return;const {top:y}=w['getPositionForRowIndex'](x);this['setScrollY'](y-v['visibleHeight']/0x2);}[bY(0x170)](u){const gh=bY;var v,w;const {offsetX:x,offsetY:y}=this['ctx']['getOffset'](u);let z='',B='';if(((v=this['ctx']['focusCell'])==null?void 0x0:v['fixed'])!=='left'&&x<this[gh(0x1fa)]['fixedLeftWidth']?z='left':((w=this['ctx']['focusCell'])==null?void 0x0:w[gh(0x32a)])!==gh(0x2b3)&&x>this['ctx']['body']['visibleWidth']-this['ctx']['fixedRightWidth']?z=gh(0x2b3):(z='',this['stopAdjustPosition'](!0x0,!0x1)),!this['mousedownHeader']&&y<this[gh(0x1fa)]['header'][gh(0x140)]?B='top':y>this['ctx']['header']['visibleHeight']+this['ctx'][gh(0x328)]['visibleHeight']?B=gh(0x287):(B='',this[gh(0x1a9)](!0x1,!0x0)),z&&this[gh(0x385)]!==z){this[gh(0x385)]=z;let C=0xa*(z==='left'?-0x1:0x1);this['timerX']&&(clearInterval(this['timerX']),this[gh(0x1f6)]=0x0),this[gh(0x1f6)]=setInterval(()=>{const gj=gh;C*=1.5;const {scrollX:F}=this['ctx'],G=F+C;(G<0x0||G>this['ctx']['body']['width'])&&(clearInterval(this['timerX']),this[gj(0x1f6)]=0x0),this['ctx']['setScrollX'](G);},0x64);}if(B&&this[gh(0x303)]!==B){this[gh(0x303)]=B;let F=0xa*(B==='top'?-0x1:0x1);this['timerY']&&(clearInterval(this['timerY']),this['timerY']=0x0),this[gh(0x311)]=setInterval(()=>{const gk=gh;F*=1.5;const {scrollY:G}=this['ctx'],H=G+F;(H<0x0||H>this[gk(0x1fa)][gk(0x328)]['height'])&&(clearInterval(this['timerY']),this[gk(0x311)]=0x0),this['ctx']['setScrollY'](H);},0x64);}}['stopAdjustPosition'](s=!0x0,u=!0x0){const gm=bY;s&&(this['adjustPositionX']='',this[gm(0x1f6)]&&(clearInterval(this['timerX']),this['timerX']=0x0)),u&&(this['adjustPositionY']='',this['timerY']&&(clearInterval(this['timerY']),this[gm(0x311)]=0x0));}}class uc{constructor(s,u){const gn=bY;m(this,'root'),m(this,gn(0x17f)),m(this,gn(0x156)),this['root']=s,this[gn(0x17f)]=u?.[gn(0x17f)]||'key',this['childrenKey']=u?.['childrenKey']||'children';}[bY(0x1dc)](){return this['root'];}['treeMove'](u,v,w){const go=bY,x=this['findNodeWithParent'](this[go(0x1f0)],u[this[go(0x17f)]]);if(!x)throw new Error('Source\x20node\x20not\x20found');const {parent:y,index:z,node:B}=x;if(y){const H=y[this['childrenKey']];H['splice'](z,0x1),H['length']===0x0&&delete y[this['childrenKey']];}else this['root']['splice'](z,0x1);const C=this['findNodeWithParent'](this['root'],v[this['key']]);if(!C)throw new Error('Target\x20node\x20not\x20found');const {parent:F,index:G}=C;w===go(0x99)?F?F[this['childrenKey']]['splice'](G,0x0,B):this[go(0x1f0)]['splice'](G,0x0,B):w==='after'&&(F?F[this['childrenKey']][go(0x162)](G+0x1,0x0,B):this['root']['splice'](G+0x1,0x0,B));}['findNodeWithParent'](u,v,w=null){const gp=bY;for(let x=0x0;x<u['length'];x++){const y=u[x];if(y[this[gp(0x17f)]]===v)return{'parent':w,'index':x,'node':y};if(y[this[gp(0x156)]]){const z=this['findNodeWithParent'](y[this['childrenKey']],v,y);if(z)return z;}}return null;}}class Gc{constructor(s){const gq=bY;m(this,'ctx'),m(this,'x',0x0),m(this,'y',0x0),m(this,gq(0x34d),0x0),m(this,'height',0x0),m(this,'resizeTarget',null),m(this,'dragTarget',null),m(this,'dragingCell'),m(this,'dragCellDiff',0x0),m(this,gq(0xb6),0x0),m(this,gq(0x1b7),!0x1),m(this,'clientX',0x0),m(this,'resizeDiff',0x0),m(this,'columnIndex',0x0),m(this,'isMouseDown',!0x1),m(this,gq(0x380)),m(this,'visibleColumns'),m(this,gq(0x22e),[]),m(this,'visibleHeight',0x0),m(this,'visibleWidth',0x0),m(this,'allCellHeaders',[]),m(this,'leafCellHeaders',[]),m(this,'renderLeafCellHeaders',[]),m(this,'fixedLeftCellHeaders',[]),m(this,'centerCellHeaders',[]),m(this,'fixedRightCellHeaders',[]),m(this,'renderCenterCellHeaders',[]),m(this,'renderFixedCellHeaders',[]),this['ctx']=s,this[gq(0x1fa)]['on']('resetHeader',$t(()=>{const gr=gq;this['init'](),this['ctx']['clearSelector'](),this['ctx']['emit'](gr(0x1ac));},0x64)),this['init'](),this['initResizeColumn'](),this['initDragColumn']();}[bY(0x275)](u=!0x1){const gu=bY,{config:{HEADER_HEIGHT:v,SCROLLER_TRACK_SIZE:w}}=this[gu(0x1fa)];if(!u){const H=this['ctx']['database'][gu(0x256)]();this[gu(0x380)]=H;}this['allCellHeaders']=[],this['leafCellHeaders']=[],this[gu(0x1d3)]=[],this['fixedRightCellHeaders']=[],this[gu(0x2d2)]=[],this['visibleColumns']=Zs(this['columns']);const x=lt(this['visibleColumns']),y=Ci(this['visibleColumns']);this['height']=v*x,this['visibleHeight']=this['height'],this['width']=y['reduce']((J,K)=>{const gv=gu,L=K[gv(0x34d)]||0x64,{maxWidth:N,minWidth:O}=K;return N&&L>N?J+N:O&&L<O?J+O:J+L;},0x0),this['columnIndex']=0x0,this['resizeNum']=0x0;const z=lc(st(this['visibleColumns'],x));this['render'](z,0x0),this['ctx']['database']['updateColIndexKeyMap'](this['leafCellHeaders']);const B=this['ctx']['containerElement']['getBoundingClientRect']();this['resizeNum']>0x0?this['ctx'][gu(0xbe)]=Math['floor'](B['width']):this['ctx']['stageWidth']=Math['min'](Math['floor'](this[gu(0x34d)]+w),Math['floor'](B['width'])),this['ctx']['stageElement']['style']['width']=this['ctx']['stageWidth']+'px',this['visibleWidth']=this['ctx'][gu(0xbe)]-w;const C=this['visibleWidth']-this['width'];if(this['resizeNum']&&C>0x0){const J=Math['floor'](C/this['resizeNum']*0x64)/0x64;this['resizeAllColumn'](J);}const F=this[gu(0x1d3)]['filter'](K=>!K[gu(0xfe)]);this[gu(0x1fa)]['fixedLeftWidth']=F[gu(0x1cb)]((K,L)=>K+L['width'],0x0);const G=this['fixedRightCellHeaders']['filter'](K=>!K[gu(0xfe)]);this['ctx']['fixedRightWidth']=G[gu(0x1cb)]((K,L)=>K+L['width'],w),this['ctx']['maxColIndex']=this[gu(0x35d)]['length']-0x1,this[gu(0x1fa)][gu(0x268)]['x']=this['x'],this[gu(0x1fa)]['header']['y']=this['y'],this['ctx']['header'][gu(0x34d)]=this['width'],this[gu(0x1fa)]['header']['height']=this[gu(0x8e)],this['ctx']['header']['allCellHeaders']=this['allCellHeaders'],this['ctx'][gu(0x268)]['visibleWidth']=this['visibleWidth'],this[gu(0x1fa)]['header']['visibleHeight']=this['visibleHeight'];}['initResizeColumn'](){this['ctx']['on']('mousedown',s=>{const gw=b;this['ctx']['config'][gw(0x2ae)]&&this['ctx']['isTarget'](s)&&(this['clientX']=s['clientX'],this['resizeTarget']?(this['isResizing']=!0x0,this['ctx'][gw(0xde)]=!0x0):this['isResizing']=!0x1,this['isMouseDown']=!0x0);}),this['ctx']['on']('mouseup',()=>{const gx=b;this['ctx']['config']['ENABLE_RESIZE_COLUMN']&&(this['isMouseDown']=!0x1,this[gx(0x3bc)]!==0x0&&this['resizeTarget']&&this[gx(0x3d5)](this[gx(0x249)],this['resizeDiff']),this[gx(0x249)]=null,this[gx(0x1b7)]=!0x1,this['isMouseDown']=!0x1,this['ctx']['columnResizing']=!0x1,this['clientX']=0x0,this['resizeDiff']=0x0);}),this['ctx']['on']('mousemove',u=>{const gy=b;if(!this['ctx']['config']['ENABLE_RESIZE_COLUMN']||this[gy(0x1fa)]['editing'])return;const {stageWidth:v,config:{RESIZE_COLUMN_MIN_WIDTH:w}}=this['ctx'];if(this['isResizing']&&this['resizeTarget']){const x=this['resizeTarget'][gy(0x34d)],y=this['resizeTarget']['minWidth'],z=this['resizeTarget']['maxWidth'];let B=u[gy(0x133)]-this['clientX'];B+x<w&&(B=-(x-w)),y&&B+x<y&&(B=-(x-y)),z&&B+x>z&&(B=z-x),this['resizeDiff']=B,this['ctx']['emit']('draw');}else{if(this['resizeTarget']=null,this['isMouseDown'])return;if(u['offsetX']<0x0||u['offsetX']>this['visibleWidth']){this[gy(0x1fa)]['stageElement']['style']['cursor']==='col-resize'&&(this['ctx'][gy(0x13c)]['style'][gy(0x2ca)]='default');return;}this['ctx']['stageElement']['style']['cursor']==='col-resize'&&(this['ctx']['stageElement']['style']['cursor']=gy(0x289));const C=[...this['renderFixedCellHeaders'],...this['renderCenterCellHeaders']];for(const F of C){const {offsetX:G,offsetY:H}=this['ctx']['getOffset'](u),J=G,K=H,L=F['getDrawX'](),N=F['getDrawY']();if(J>L+F['width']-0x5&&J<L+F['width']+0x4&&J<v-0x4&&K>N){const O=F['colIndex']+F['colspan']-0x1,P=this['leafCellHeaders']['find'](R=>R['colIndex']===O);if(!P||!P['fixed']&&this[gy(0x1fa)]['stageWidth']-this['ctx']['fixedRightWidth']<L+F['width'])return;this['ctx']['isTarget'](u)&&H<=this['height']&&(this['ctx']['stageElement']['style']['cursor']='col-resize',this['resizeTarget']=P);}}}});}['initDragColumn'](){const gB=bY;this['ctx']['on']('cellHeaderMousedown',s=>{const gz=b;this['ctx']['config']['ENABLE_DRAG_COLUMN']&&(s['column'][gz(0x206)]||(this['dragTarget']===s?(this['ctx']['dragHeaderIng']=!0x0,this[gz(0xda)]=this['ctx']['mouseX']-s['drawX'],this['ctx'][gz(0x13c)]['style']['cursor']='grabbing'):(this['dragTarget']=s,this['ctx']['dragHeaderIng']=!0x1)));}),this['ctx']['on']('cellMousedown',()=>{this['ctx']['config']['ENABLE_DRAG_COLUMN']&&(this['dragTarget']=null,this['ctx']['dragHeaderIng']=!0x1);}),this['ctx']['on']('mouseup',()=>{const gA=b;if(this[gA(0x1fa)]['config']['ENABLE_DRAG_COLUMN']){if(this['dragingCell']&&this['dragTarget']){const u=(F,G={})=>(F[gA(0x3e1)]((H,J)=>{H['children']&&u(H['children'],G),G[H['key']]=J;}),G),v=this['ctx']['database']['getColumns'](),w=st(v,lt(v)),x=new uc(w,{'key':gA(0x17f),'childrenKey':'children'}),y=this['dragTarget']['colIndex']>this['dragingCell']['colIndex']?'before':gA(0x28e);x['treeMove'](this['dragTarget'][gA(0x2ed)],this['dragingCell']['column'],y);const z=x['getTree'](),B=u(z);this['ctx']['database']['setCustomHeader']({'sortData':B}),this[gA(0x275)]();const C={'source':this['dragTarget'],'target':this[gA(0x3d1)],'columns':w};this['ctx'][gA(0xc8)]('columnDragChange',C);}this['ctx'][gA(0x131)]&&this['dragTarget']&&(this['ctx']['dragHeaderIng']=!0x1,this['dragTarget']=null,this['dragingCell']=void 0x0,this[gA(0xda)]=0x0,this[gA(0x1fa)]['clearSelector'](),this['ctx'][gA(0x207)]=void 0x0,this['ctx'][gA(0x13c)][gA(0x270)]['cursor']='default',this['ctx']['emit']('draw'));}}),this[gB(0x1fa)]['on']('mousemove',s=>{const gC=gB;this[gC(0x1fa)][gC(0x34f)]['ENABLE_DRAG_COLUMN']&&(!this['ctx']['dragHeaderIng']||!this['dragTarget']||(this['dragTarget'][gC(0x32a)]||this[gC(0x1fa)][gC(0x170)](s),this[gC(0x1fa)][gC(0xc8)]('draw')));}),this['ctx']['on']('cellHoverChange',s=>{const gD=gB;this[gD(0x1fa)]['config']['ENABLE_DRAG_COLUMN']&&(s['column']['dragDisabled']||(this['dragingCell']=this['getDragCellHeader'](s['colIndex'])));}),this[gB(0x1fa)]['on']('cellHeaderHoverChange',s=>{const gE=gB;this[gE(0x1fa)]['config']['ENABLE_DRAG_COLUMN']&&(s['column'][gE(0x206)]||(this['dragingCell']=this['getDragCellHeader'](s['colIndex'])));});}['getDragCellHeader'](u){const gF=bY;if(!this['dragTarget']||!this['ctx']['dragHeaderIng'])return;const {column:{parentKey:v},key:w,level:x,fixed:y}=this['dragTarget'],z=this['allCellHeaders']['find'](B=>B[gF(0x17f)]!==w&&B['fixed']===y&&B['column']['level']===x&&B['column'][gF(0x3be)]===v&&B['colIndex']<=u&&B['colIndex']+B['colspan']-0x1>=u);if(this['ctx']['dragHeaderIng']){const B=z?'grabbing':gF(0x20b);this['ctx']['stageElement']['style']['cursor']=B;}return z;}['resizeColumn'](u,v){const gI=bY,w=z=>{const gG=b;z[gG(0x3e1)](B=>{const gH=gG;if(B['children']&&B['children'][gH(0xfa)]>0x0&&w(B['children']),B['key']===u['key']){const C=B['width']||0x64;B['width']=C+v;}});};w(this['columns']);let x=0x0;if(this['width']<this['visibleWidth']){const z=this['visibleWidth']-this['width'];x=Math['floor'](z/this['resizeNum']*0x64)/0x64,this['resizeAllColumn'](x);}const y=u['width']+v+x;this['ctx']['emit'](gI(0x1a2),{'colIndex':u[gI(0xa5)],'key':u['key'],'oldWidth':u['width'],'width':y,'column':u['column'],'columns':this[gI(0x380)]}),this['ctx']['database']['setCustomHeaderResizableData'](u[gI(0x17f)],y),this['init'](!0x0),this[gI(0x1fa)][gI(0xc8)]('draw');}[bY(0x272)](u){const gJ=bY;if(u===0x0)return;const v=new Map();let w=!0x0;for(const y of this['allCellHeaders'])if(y['widthFillDisable'])v['set'](y[gJ(0x17f)],y['width']);else{const z=y['width']+u*y['colspan'];v['set'](y['key'],z),z<this['ctx']['config']['RESIZE_COLUMN_MIN_WIDTH']&&(w=!0x1);}if(!w)return;const x=B=>{B['forEach'](C=>{const gK=b;v['has'](C['key'])&&(C['width']=v[gK(0x27f)](C[gK(0x17f)])),C['children']&&C[gK(0xd0)]['length']>0x0&&x(C['children']);});};x(this['columns']),this['init'](!0x0),this['ctx']['emit']('draw');}['getCustomHeader'](){const gL=bY,s=this['ctx']['database']['getColumns'](),u=this['ctx']['database']['getCustomHeader'](),{sortData:v={}}=u;return Object[gL(0x3bf)](v)['length']===0x0?{'columns':s,'customHeader':u}:{'columns':st(s,lt(s)),'customHeader':u};}['render'](u,v){const gM=bY,w=u['length'];let x=v;const {HEADER_HEIGHT:y=0x0}=this['ctx']['config'];for(let z=0x0;z<w;z++){const B=u[z],C=y*(B['rowspan']||0x0),F=y*(B['level']||0x0);let {minWidth:G,maxWidth:H}=B,J=B['width']||0x64;G&&J<G&&(J=G),H&&J>H&&(J=H),B['children']&&(J=Ci(B['children'])['reduce']((L,N)=>L+(N?.['width']||0x64),0x0));const K=new kt(this['ctx'],this['columnIndex'],x,F,J,C,B);this[gM(0x1fa)]['database']['setHeader'](B['key'],K),this['allCellHeaders'][gM(0x1f5)](K),B['children']||(this['leafCellHeaders']['push'](K),K['column']['widthFillDisable']||this['resizeNum']++),B['fixed']===gM(0xca)?this['fixedLeftCellHeaders'][gM(0x1f5)](K):B['fixed']==='right'?this['fixedRightCellHeaders']['push'](K):this['centerCellHeaders']['push'](K),!B['children']&&this['columnIndex']++,B['children']&&this['render'](B[gM(0xd0)],x),x+=J;}}['drawTipLine'](){const gN=bY;if(this['isResizing']&&this['resizeTarget']){const {stageHeight:u,config:{RESIZE_COLUMN_LINE_COLOR:v,RESIZE_COLUMN_TEXT_COLOR:w,RESIZE_COLUMN_TEXT_BG_COLOR:x,ENABLE_RESIZE_COLUMN_TEXT:y}}=this['ctx'],z=this['resizeTarget']['getDrawX'](),B=this['resizeTarget'][gN(0x34d)],C=z+B+this['resizeDiff']-0.5,F=[C-0.5,0x0,C-0.5,u];if(this['ctx'][gN(0x240)]['drawLine'](F,{'borderColor':v}),y){const G=Math['floor'](B+this['resizeDiff'])+'px',H=0x2d,J=0x18;this[gN(0x1fa)]['paint'][gN(0x25f)](C+H/0x2,this['ctx'][gN(0x15c)]-J/0x2,H,J,{'fillColor':x,'borderWidth':0x0,'borderColor':'transparent'}),this['ctx']['paint']['drawText'](G,C+H/0x2,this['ctx']['mouseY']-J/0x2,H,J+0x2,{'padding':0x0,'color':w,'align':'center','verticalAlign':gN(0x1b9)});}}}[bY(0x211)](){const gO=bY;if(this[gO(0x2e0)]&&this['ctx']['dragHeaderIng']){const {DRAG_TIP_BG_COLOR:u,DRAG_TIP_LINE_COLOR:v}=this['ctx']['config'],w=this['dragTarget']['width'];if(this['ctx']['paint']['drawRect'](this['ctx'][gO(0x2d9)]-this['dragCellDiff'],this['visibleHeight'],w,this[gO(0x1fa)][gO(0x328)]['visibleHeight'],{'fillColor':u,'borderWidth':0x0,'borderColor':'transparent'}),this['dragingCell']){const {drawX:x,drawY:y,visibleWidth:z,colIndex:B}=this['dragingCell'];let C=x,F=y;B>this['dragTarget'][gO(0xa5)]&&(C=x+z),B===0x0&&(C=C+0x1),B===this[gO(0x1fa)]['maxColIndex']&&(C=C-0x1);const G=[C,F,C,this['ctx']['stageHeight']],H=[C-0x4,F,C+0x4,F,C,F+0x6,C-0x4,F];this['ctx']['paint']['drawLine'](H,{'borderColor':v,'borderWidth':1.2,'fillColor':v}),this['ctx']['paint']['drawLine'](G,{'borderColor':v,'borderWidth':1.2});}}}['drawFixedShadow'](){const gP=bY,{fixedLeftWidth:u,fixedRightWidth:v,scrollX:w,header:x,stageWidth:y,config:{HEADER_BG_COLOR:z,SCROLLER_TRACK_SIZE:B}}=this[gP(0x1fa)];if(w>0x0&&u!==0x0&&this[gP(0x1fa)]['paint']['drawShadow'](this['x'],this['y'],u,this[gP(0x8e)],{'fillColor':z,'side':'right','shadowWidth':0x4,'colorStart':'rgba(0,0,0,0.1)','colorEnd':'rgba(0,0,0,0)'}),w<Math['floor'](x['width']-y-0x1)&&v!==B){const C=x['width']-(this['x']+this['width'])+y-v;this[gP(0x1fa)]['paint']['drawShadow'](C,this['y'],v,this['height'],{'fillColor':z,'side':'left','shadowWidth':0x4,'colorStart':'rgba(0,0,0,0)','colorEnd':'rgba(0,0,0,0.1)'});}}['update'](){const gS=bY,u=[],v=[],w=[];if(this['centerCellHeaders']['length']){const x=this['centerCellHeaders'][this['centerCellHeaders']['length']-0x1];this['ctx']['lastCenterColIndex']=x['colIndex'];}this['centerCellHeaders']['forEach'](y=>{const gQ=b;y[gQ(0x3f6)]()&&y['isVerticalVisible']()&&(v['push'](y),y[gQ(0xfe)]||u[gQ(0x1f5)](y));}),this['fixedLeftCellHeaders']['forEach'](y=>{w['push'](y),y['hasChildren']||u['push'](y);}),this['fixedRightCellHeaders']['forEach'](y=>{const gR=b;w['push'](y),y[gR(0xfe)]||u['push'](y);}),this['renderCenterCellHeaders']=v,this['renderFixedCellHeaders']=w,this['renderLeafCellHeaders']=u['sort']((y,z)=>y['x']-z['x']),this[gS(0x22e)]=this['renderLeafCellHeaders']['map'](y=>y['column']),this['ctx']['header']['visibleLeafColumns']=this['visibleLeafColumns'],this[gS(0x1fa)]['header']['leafCellHeaders']=this['leafCellHeaders'],this['ctx']['header']['renderLeafCellHeaders']=this[gS(0x326)],this[gS(0x1fa)]['header'][gS(0x397)]=this['renderFixedCellHeaders']['concat'](this['renderCenterCellHeaders']);}['drawBottomLine'](){const gT=bY,{stageWidth:s,config:{BORDER_COLOR:u}}=this['ctx'],v=[0x0,this['height'],s,this['height']];this[gT(0x1fa)][gT(0x240)]['drawLine'](v,{'borderColor':u,'borderWidth':0x1});}['draw'](){const gU=bY;this['renderCenterCellHeaders']['forEach'](s=>{s['update'](),s['draw']();}),this['drawFixedShadow'](),this[gU(0x3ef)]['forEach'](s=>{s['update'](),s['draw']();}),this['drawBottomLine'](),this['drawTipLine'](),this['drawDragTip']();}}class as{constructor(u,v,w=0x0,x=0x0,y=0x0,z=0x0,B,C=bY(0x328)){const gV=bY;m(this,gV(0x1fa)),m(this,'x',0x0),m(this,'y',0x0),m(this,'width',0x0),m(this,'height'),m(this,'cells',[]),m(this,'fixedCells',[]),m(this,gV(0x31f),[]),m(this,gV(0x116),[]),m(this,gV(0x396),0x0),m(this,'rowKey',''),m(this,'rowType','body'),m(this,'data'),m(this,'calculatedHeight',-0x1),this['ctx']=u,this['x']=w,this['y']=x,this['width']=y,this['height']=z,this[gV(0x396)]=v,this['rowKey']=u['database']['getRowKeyForRowIndex'](v)||'',this[gV(0x36b)]=C,this['data']=B,this['update']();}['update'](){const gX=bY,{header:u}=this['ctx'],v=[],w=[],x=[],y=[];u['renderLeafCellHeaders']['forEach'](z=>{const gW=b,B=new il(this['ctx'],this['rowIndex'],z['colIndex'],z['x'],this['y'],z['width'],this['height'],z[gW(0x2ed)],this[gW(0x160)],this['rowType']);B['fixed']?w[gW(0x1f5)](B):x[gW(0x1f5)](B),v['push'](B),B['autoRowHeight']&&y['push'](B);}),this['cells']=v,this['calculatedHeightCells']=y,this['fixedCells']=w,this[gX(0x31f)]=x;}['updateCalculatedHeight'](){const gZ=bY,s=this['calculatedHeightCells']['map'](u=>{const gY=b,v=u['getAutoHeight'](),{key:w,height:x=-0x1}=this['ctx']['database']['getMaxRowHeightItem'](this['rowKey'])||{};return v>x?this['ctx']['database']['setMaxRowHeightItem'](this['rowKey'],u['key'],v):u[gY(0x17f)]===w&&v<x&&this['ctx']['database']['setMaxRowHeightItem'](this[gY(0xf7)],u['key'],v),v;});return this[gZ(0xef)]=s['length']?Math['max'](...s):-0x1,this['calculatedHeight'];}['drawCenter'](){this['noFixedCells']['forEach'](s=>{s['draw']();});}[bY(0x372)](){this['fixedCells']['forEach'](s=>{s['draw']();});}['drawContainer'](){this['noFixedCells']['forEach'](s=>{s['drawContainer']();});}['drawFixedContainer'](){const h0=bY;this['fixedCells'][h0(0x3e1)](s=>{s['drawContainer']();});}}class Lc{constructor(s){const h1=bY;m(this,'resizeTarget',null),m(this,'isMouseDown',!0x1),m(this,'resizeDiff',0x0),m(this,'clientY',0x0),m(this,'ctx'),m(this,'x',0x0),m(this,'y',0x0),m(this,h1(0x34d),0x0),m(this,'height',0x0),m(this,h1(0x7e),0x0),m(this,h1(0x2a0),0x0),m(this,'isResizing',!0x1),m(this,'renderRows',[]),m(this,'visibleRows',[]),m(this,h1(0x140),0x0),m(this,'visibleWidth',0x0),m(this,'containerRect'),m(this,'data',[]),this['ctx']=s,this['init'](),this['initResizeRow']();}['init'](){const h2=bY,{canvasElement:u,header:v,footer:x,database:z,config:{FOOTER_FIXED:B,SCROLLER_TRACK_SIZE:C=0x0,HEIGHT:H,EMPTY_BODY_HEIGHT:J=0x0,MAX_HEIGHT:N=0x0,ENABLE_OFFSET_HEIGHT:O=0x0,OFFSET_HEIGHT:P=0x0,FOOTER_POSITION:R}}=this['ctx'];if(!v['width'])return;this['x']=0x0,R==='top'&&B?this['y']=v['height']+x['height']:this['y']=v['height'];const {data:U,sumHeight:a0}=z['getData']();this[h2(0x8e)]=a0,this['data']=U,this['width']=v[h2(0x34d)],this['visibleWidth']=this['ctx']['stageWidth']-C;const a1=this[h2(0x1fa)]['footer']['height'];this['ctx']['isEmpty']=!this['data'][h2(0xfa)],!this['data']['length']&&!H?this[h2(0x8e)]=J:!this[h2(0x160)]['length']&&H&&(this[h2(0x8e)]=H-v['height']-a1-C);let a2=this[h2(0x8e)]+v['height']+C;a2+=a1;let a3=a2;const a4=window['innerHeight'],{top:a5}=this['containerRect']||this['ctx']['containerElement']['getBoundingClientRect']();if(a4>a5&&O&&!H){const af=a4-a5-P;af>v['height']+C?a3=af:a2>N&&(a3=N);}else this['data']['length']&&H?a3=H:this['data']['length']&&N&&a2>N&&(a3=N);a3>0x0&&(this['ctx']['stageHeight']=Math['floor'](a3),this['ctx']['stageElement']['style']['height']=this['ctx']['stageHeight']+'px');let a6=this['ctx'][h2(0x216)]-v['height']-C;B?this['visibleHeight']=a6-a1:this['visibleHeight']=a6,this['data']['length']||(this['height']=this['visibleHeight']),this['ctx']['body']['x']=this['x'],this['ctx']['body']['y']=this['y'],this['ctx']['body'][h2(0x34d)]=this['width'],this['ctx']['body'][h2(0x8e)]=this['height'],this['ctx'][h2(0x328)]['visibleWidth']=this['visibleWidth'],this['ctx']['body'][h2(0x140)]=this['visibleHeight'],this['ctx'][h2(0x328)]['data']=U;const a7=window['devicePixelRatio']||0x1,a8=this[h2(0x1fa)]['stageWidth']*a7,a9=this[h2(0x1fa)]['stageHeight']*a7;u['width']=Math['round'](a8),u[h2(0x8e)]=Math[h2(0x1ff)](a9);const aa=this['data']['length']?'not-empty':h2(0x2c7);this[h2(0x1fa)]['emit'](h2(0x299),{'isEmpty':aa,'type':aa,'headerHeight':v['height'],'bodyHeight':this[h2(0x8e)],'footerHeight':a1,'width':this[h2(0x34d)],'height':this['data']['length']?0x0:J+a1});const ab=Math['round'](u['width']/a7*0x2710)/0x2710,ad=Math['round'](u['height']/a7*0x2710)/0x2710;this['ctx']['canvasElement']['setAttribute']('style','height:'+ad+'px;width:'+ab+h2(0x19d)),this['ctx']['paint']['scale'](a7);}['initResizeRow'](){this['ctx']['on']('resize',()=>{const h3=b;this['ctx']['config']['ENABLE_RESIZE_ROW']&&(this[h3(0x2c1)]=this['ctx']['containerElement'][h3(0x2c3)]());}),this['ctx']['on']('resizeObserver',()=>{const h4=b;this['ctx']['config']['ENABLE_RESIZE_ROW']&&(this[h4(0x2c1)]=this[h4(0x1fa)]['containerElement'][h4(0x2c3)]());}),this['ctx']['on']('mouseup',()=>{const h5=b;this['ctx']['config']['ENABLE_RESIZE_ROW']&&(this['isMouseDown']=!0x1,this[h5(0x3bc)]!==0x0&&this['resizeTarget']&&this['resizeRow'](this['resizeTarget'],this['resizeDiff']),this['resizeTarget']=null,this['resizeDiff']=0x0,this['isResizing']=!0x1,setTimeout(()=>{const h6=h5;this['ctx'][h6(0x18e)]=!0x1;},0x0),this['clientY']=0x0);}),this['ctx']['on']('mousedown',s=>{const h7=b;this['ctx']['config']['ENABLE_RESIZE_ROW']&&this['ctx']['isTarget'](s)&&(this['clientY']=s['clientY'],this['resizeTarget']?(this['isResizing']=!0x0,this['ctx']['rowResizing']=!0x0):(this['isResizing']=!0x1,this['ctx']['rowResizing']=!0x1),this[h7(0x1d2)]=!0x0);}),this['ctx']['on']('mousemove',u=>{const h8=b;if(!this[h8(0x1fa)]['config']['ENABLE_RESIZE_ROW']||this['ctx']['editing'])return;const {offsetY:v,offsetX:w}=this[h8(0x1fa)]['getOffset'](u),x=v,y=w,z=u['clientY'],{stageHeight:B,scrollY:C,config:{RESIZE_ROW_MIN_HEIGHT:F=0x0}}=this['ctx'];if(this['isResizing']&&this['resizeTarget']){const G=this[h8(0x249)]['height'];let H=z-this['clientY'];const {calculatedHeight:J}=this['resizeTarget'],K=J===-0x1?F:J;H+G<K&&(H=-(G-K)),this[h8(0x3bc)]=H,this['ctx']['emit']('draw');}else{if(this['resizeTarget']=null,this['isMouseDown'])return;if(y<0x0||y>this['ctx']['body'][h8(0x250)]||x<0x0||x>this['ctx']['header']['visibleHeight']+this['ctx'][h8(0x328)]['visibleHeight']){this['ctx']['stageElement']['style']['cursor']===h8(0x2c2)&&(this[h8(0x1fa)]['stageElement']['style']['cursor']='default');return;}if(this['ctx']['stageElement']['style']['cursor']===h8(0x1a7))return;this['ctx']['stageElement']['style'][h8(0x2ca)]==='row-resize'&&(this[h8(0x1fa)]['stageElement']['style']['cursor']='default');for(let L=0x0;L<this['renderRows']['length'];L++){const N=this[h8(0x288)][L];if(x>N['y']-C+N['height']-1.5&&x<N['y']-C+N['height']+1.5&&x<B-0x4)for(let O=0x0;O<N['cells']['length'];O++){const P=N['cells'][O];y>P['drawX']+0xa&&y<P['drawX']+P['width']-0xa&&P['rowspan']===0x1&&(this[h8(0x1fa)]['stageElement']['style'][h8(0x2ca)]='row-resize',this['resizeTarget']=N);}}}});}[bY(0xff)](u,v){const h9=bY,{rowIndex:w,height:x,rowKey:y,data:z}=u;this['ctx']['database'][h9(0x142)](w,x+v),this['init'](),this['ctx']['emit']('draw'),this['ctx']['emit']('resizeRowChange',{'rowIndex':w,'oldHeight':x,'height':x+v,'rowKey':y,'row':z,'data':this['data']});}['drawTipLine'](){const ha=bY;if(this['isResizing']&&this['resizeTarget']){const {stageWidth:u,scrollY:v,config:{RESIZE_ROW_LINE_COLOR:w}}=this['ctx'],x=this[ha(0x249)]['y']-v,y=this['resizeTarget']['height'],z=x+y+this['resizeDiff']-0.5,B=[0x0,z-0.5,u,z-0.5];this['ctx']['paint']['drawLine'](B,{'borderColor':w,'borderWidth':0x1});}}['drawFixedShadow'](){const hb=bY,{fixedLeftWidth:u,fixedRightWidth:v,scrollX:w,header:x,stageWidth:y,config:{HEADER_BG_COLOR:z,SCROLLER_TRACK_SIZE:B}}=this['ctx'];if(w>0x0&&u!==0x0&&!this['ctx']['isEmpty']&&this['ctx']['paint']['drawShadow'](this['x'],this['y'],u,this['height'],{'fillColor':z,'side':'right','shadowWidth':0x4,'colorStart':'rgba(0,0,0,0.1)','colorEnd':'rgba(0,0,0,0)'}),w<Math['floor'](x['width']-y-0x1)&&v!==B&&!this['ctx']['isEmpty']){const C=x[hb(0x34d)]-(this['x']+this[hb(0x34d)])+y-v;this['ctx']['paint']['drawShadow'](C,this['y'],v,this[hb(0x8e)],{'fillColor':z,'side':'left','shadowWidth':0x4,'colorStart':'rgba(0,0,0,0)','colorEnd':'rgba(0,0,0,0.1)'});}}[bY(0x158)](u,v){let w=0x0,x=u['length']-0x1,y=-0x1;for(;w<=x;){let z=Math['floor']((w+x)/0x2),B=u[z]['bottom'];if(B===v)return z;B<v?w=z+0x1:(y=z,x=z-0x1);}return y;}['update'](){const hd=bY;this['init']();const {header:u,database:v,scrollY:w,config:{CELL_HEIGHT:x}}=this[hd(0x1fa)],z=w,{data:B,positions:C}=v['getData']();this['ctx']['maxRowIndex']=B[hd(0xfa)]-0x1;let F=this[hd(0x158)](C,z),G=this['binarySearch'](C,z+this['visibleHeight']);if(G===-0x1&&(G=this['ctx']['maxRowIndex']),F===-0x1&&G===this['ctx']['maxRowIndex']){const J=Math[hd(0x236)](this['visibleHeight']/x);F=this['ctx'][hd(0x149)]-J;}this['headIndex']=Math[hd(0x21e)](0x0,F),this['tailIndex']=Math['min'](this[hd(0x1fa)]['maxRowIndex'],G+0x1),this[hd(0x245)]=B['slice'](this['headIndex'],this['tailIndex']+0x1),this['ctx']['body']['headIndex']=this['headIndex'],this['ctx']['body']['tailIndex']=this[hd(0x2a0)],this['ctx']['body']['visibleRows']=this['visibleRows'];const H=[];for(let K=0x0;K<this['visibleRows']['length'];K++){const L=this[hd(0x7e)]+K,N=this['visibleRows'][K],{height:O,top:P}=this['ctx']['database']['getPositionForRowIndex'](L),R=new as(this['ctx'],L,0x0,P+this['y'],u['width'],O,N);H['push'](R);}this['renderRows']=H,this['ctx']['body']['renderRows']=H;}['updateAutoHeight'](){const hf=bY,s=this['ctx']['body']['renderRows'];if(!s['some'](v=>v[hf(0x116)]['length']>0x0))return!0x1;s['forEach'](v=>{v['updateCalculatedHeight']();});const u=s['map'](v=>({'height':v['calculatedHeight'],'rowIndex':v['rowIndex']}));return this['ctx']['database']['setBatchCalculatedRowHeight'](u);}[bY(0x1ac)](){const hj=bY;this['renderRows']['forEach'](s=>{const hg=b;s[hg(0x316)]();}),this['renderRows']['forEach'](s=>{s['drawCenter']();}),this[hj(0x224)](),this['renderRows']['forEach'](s=>{s['drawFixedContainer']();}),this['renderRows']['forEach'](s=>{s['drawFixed']();}),this['drawTipLine']();}}class xc{constructor(s){const hk=bY;m(this,'ctx'),m(this,'renderRows',[]),m(this,'data',[]),m(this,'x',0x0),m(this,'y',0x0),m(this,'width',0x0),m(this,hk(0x8e),0x0),m(this,'visibleWidth',0x0),m(this,'visibleHeight',0x0),this['ctx']=s,this['init']();}['init'](){const hm=bY;this['data']=this['ctx']['database']['getFooterData']();const {header:u,body:v,config:{CELL_FOOTER_HEIGHT:w,FOOTER_FIXED:x,SCROLLER_TRACK_SIZE:y,FOOTER_POSITION:z}}=this['ctx'];this[hm(0x34d)]=u['width'],this['visibleWidth']=u['visibleWidth'],this['height']=this['data']['reduce'](B=>B+w,0x0),this[hm(0x140)]=this['height'],x?z==='top'?this['y']=this[hm(0x1fa)]['header']['height']:this['y']=this['ctx']['stageHeight']-this['height']-y:this['y']=v['y']+v['height'],this['ctx'][hm(0x1de)]['x']=this['x'],this['ctx'][hm(0x1de)]['y']=this['y'],this['ctx']['footer']['height']=this['height'],this[hm(0x1fa)][hm(0x1de)]['width']=this['width'],this[hm(0x1fa)][hm(0x1de)]['visibleWidth']=this['visibleWidth'],this[hm(0x1fa)]['footer']['visibleHeight']=this['visibleHeight'];}[bY(0x224)](){const hn=bY,{fixedLeftWidth:u,fixedRightWidth:v,scrollX:w,header:x,stageWidth:y,config:{HEADER_BG_COLOR:z,SCROLLER_TRACK_SIZE:B}}=this[hn(0x1fa)];let C=this['y'];if(this['ctx']['config']['FOOTER_FIXED']||(C=this['y']-this['ctx'][hn(0x39f)]),w>0x0&&u!==0x0&&this[hn(0x1fa)]['paint'][hn(0x16b)](this['x'],C,u,this['height'],{'fillColor':z,'side':hn(0x2b3),'shadowWidth':0x4,'colorStart':'rgba(0,0,0,0.1)','colorEnd':hn(0x38a)}),w<Math['floor'](x[hn(0x34d)]-y-0x1)&&v!==B){const F=x['width']-(this['x']+this['width'])+y-v;this['ctx']['paint']['drawShadow'](F,C,v,this['height'],{'fillColor':z,'side':'left','shadowWidth':0x4,'colorStart':'rgba(0,0,0,0)','colorEnd':'rgba(0,0,0,0.1)'});}}['update'](){const ho=bY;this['init']();const {CELL_FOOTER_HEIGHT:s}=this[ho(0x1fa)]['config'];let u=this['y'];const v=[];this['data']['forEach']((w,x)=>{const hp=ho,y=new as(this['ctx'],x,0x0,u,this['width'],s,w,'footer');u+=s,v[hp(0x1f5)](y);}),this[ho(0x288)]=v,this[ho(0x1fa)]['footer']['renderRows']=this['renderRows'];}['drawTopLine'](){const hq=bY,{stageWidth:s,config:{BORDER_COLOR:u}}=this['ctx'],v=[0x0,this['y'],s,this['y']];this['ctx']['paint'][hq(0x1ee)](v,{'borderColor':u,'borderWidth':0x1});}['draw'](){const hr=bY;this[hr(0x288)]['forEach'](s=>{s['drawContainer']();}),this['renderRows']['forEach'](s=>{const hu=hr;s[hu(0x362)]();}),this['drawFixedShadow'](),this['renderRows']['forEach'](s=>{s['drawFixedContainer']();}),this['renderRows']['forEach'](s=>{s['drawFixed']();}),this[hr(0x2e3)]();}}class Vc{constructor(s){m(this,'isCut',!0x1),m(this,'isMultipleRow',!0x1),m(this,'ctx'),this['ctx']=s,this['init']();}[bY(0x275)](){const hv=bY;this['ctx']['on'](hv(0x3b4),s=>{this['moveFocus'](s);}),this['ctx']['on'](hv(0x96),$t(s=>{var u;(u=this['ctx']['focusCellHeader'])!=null&&u['fixed']||!this['ctx']['dragHeaderIng']&&this['ctx']['selectorMove']&&this['ctx']['startAdjustPosition'](s);},0x64)),this['ctx']['on']('cellHoverChange',s=>{const hw=hv;if(!this[hw(0x1fa)]['autofillMove']){if(s['operation']){this['selectRows'](s,!0x1);return;}this['isMultipleRow']||this[hw(0x215)]();}}),this['ctx']['on']('cellClick',()=>{this['adjustBoundaryPosition']();}),this['ctx']['on'](hv(0x150),(s,u)=>{const hx=hv;if(!(!this[hx(0x1fa)]['isTarget'](u)||this['ctx'][hx(0x13c)]['style']['cursor']==='pointer'||this['ctx']['isPointer']||this['ctx']['stageElement']['style']['cursor']==='crosshair')){if(s['operation']){this['isMultipleRow']=!0x0,this['selectRows'](s);return;}window['getComputedStyle'](u['target'])['userSelect']!=='text'&&u[hx(0x28b)](),this['isMultipleRow']=!0x1,this[hx(0x3dc)](u[hx(0x251)]),this[hx(0x1fa)]['emit']('selectorClick',s);}}),this['ctx']['on']('mouseup',()=>{const hy=hv;this['ctx']['selectorMove']=!0x1,this[hy(0x1fa)][hy(0x1a9)](),setTimeout(()=>{const hz=hy;this[hz(0x1fa)]['disableHoverIconClick']=!0x1;},0x0);}),this['ctx']['on']('cellHeaderHoverChange',s=>{const hA=hv;this[hA(0x1fa)]['mousedown']&&this['selectCols'](s);}),this[hv(0x1fa)]['on']('cellHoverChange',s=>{this['ctx']['mousedown']&&this['selectCols'](s);}),this['ctx']['on'](hv(0x3b5),(s,u)=>{const hB=hv;this['ctx']['stageElement']['style']['cursor']==='pointer'||this['ctx']['isPointer']||(window['getComputedStyle'](u[hB(0x86)])['userSelect']!=='text'&&u['preventDefault'](),this['ctx']['clearSelector'](),s['operation']?this['selectAll']():this['selectCols'](s));}),this['ctx']['on']('keydown',s=>{const hC=hv;if(!this['ctx']['editing']&&!this[hC(0x1fa)][hC(0x14a)]){if(s['ctrlKey']&&s['code']===hC(0x227)||s['metaKey']&&s['code']==='KeyV'){this['paste']();return;}if(s['ctrlKey']&&s['code']==='KeyC'||s[hC(0x1e5)]&&s['code']==='KeyC'){this['copy'](),this['isCut']=!0x1;return;}if(s['ctrlKey']&&s['code']===hC(0x243)||s['metaKey']&&s['code']==='KeyX'){this['isCut']=!0x0,this['copy']();return;}if((s['ctrlKey']&&s['code']===hC(0x239)||s['metaKey']&&s[hC(0x95)]==='KeyA')&&(s['preventDefault'](),this['selectAll']()),s['code']==='ArrowLeft'||s['shiftKey']&&s['code']===hC(0x370)){s['preventDefault'](),this['moveFocus']('LEFT');return;}if(s['code']===hC(0x2f7)){s['preventDefault'](),this['moveFocus']('TOP');return;}if(s['code']==='ArrowRight'||s[hC(0x95)]==='Tab'){s['preventDefault'](),this['moveFocus']('RIGHT');return;}if(s[hC(0x95)]==='ArrowDown'){s['preventDefault'](),this['moveFocus'](hC(0x355));return;}if(s['code']==='Delete'||s['code']==='Backspace'){s['preventDefault']();const {xArr:u,yArr:v}=this['ctx']['selector'];this[hC(0xe7)](u,v);return;}}}),this['ctx']['on']('contextMenuClearSelected',()=>{const {xArr:s,yArr:u}=this['ctx']['selector'];this['clearSelectedData'](s,u);}),this[hv(0x1fa)]['on']('contextMenuCopy',()=>{this['copy']();}),this['ctx']['on']('contextMenuPaste',()=>{this['paste']();}),this['ctx']['on']('contextMenuCut',()=>{this['isCut']=!0x0,this['copy']();}),this['ctx']['on']('setSelectorCell',s=>{this['ctx']['setFocusCell'](s),this['click'](),this['adjustBoundaryPosition']();}),this['ctx']['on']('selectCols',s=>{this['selectCols'](s);});}['setSelector'](u,v){const hD=bY;if(this['ctx']['dragHeaderIng'])return;const {ENABLE_SELECTOR_SPAN_COL:w,ENABLE_SELECTOR_SPAN_ROW:x}=this['ctx']['config'];let z=u,B=v;if(!x){const [C]=B;B=[C,C];}if(!w){const [F]=z;z=[F,F];}if(JSON['stringify'](this['ctx'][hD(0x35a)]['xArr'])!==JSON['stringify'](z)||JSON['stringify'](this[hD(0x1fa)]['selector']['yArr'])!==JSON['stringify'](B)){this[hD(0x1fa)]['mousedown']&&(this['ctx']['selectorMove']=!0x0,this['ctx']['disableHoverIconClick']=!0x0),this['ctx']['selector']['enable']=!0x0;const {SELECTOR_AREA_MIN_X:H,SELECTOR_AREA_MAX_X:J,SELECTOR_AREA_MIN_Y:N,SELECTOR_AREA_MAX_Y:O,SELECTOR_AREA_MAX_X_OFFSET:P,SELECTOR_AREA_MAX_Y_OFFSET:R}=this[hD(0x1fa)]['config'],T=H,U=J||this['ctx']['maxColIndex']-P,V=N,a0=O||this[hD(0x1fa)]['maxRowIndex']-R;let [a1,a2]=z,[a3,a4]=B;if(a1<T||a2>U||a3<V||a4>a0)return;if(this[hD(0x1fa)]['config']['ENABLE_MERGE_CELL_LINK']){const a6=this[hD(0x3e8)](z,B);a3=a6['yArr'][0x0],a4=a6['yArr'][0x1],a1=a6['xArr'][0x0],a2=a6['xArr'][0x1],this['ctx']['onlyMergeCell']=a6['onlyMergeCell'];}a1===a2&&a3===a4?this['ctx']['selectOnlyOne']=!0x0:this['ctx']['selectOnlyOne']=!0x1,z=[Math['max'](T,a1),Math['min'](U,a2)],B=[Math['max'](V,a3),Math['min'](a0,a4)];const {BEFORE_SET_SELECTOR_METHOD:a5}=this['ctx']['config'];if(typeof a5=='function'){const a7=a5({'focusCell':this['ctx']['focusCell'],'xArr':z,'yArr':B});if(!a7)return;z=a7['xArr'],B=a7['yArr'];}this['ctx']['selector']['xArr']=z,this['ctx'][hD(0x35a)]['yArr']=B,a4===this['ctx']['maxRowIndex']&&a3===0x0?this['ctx']['selectColsIng']=!0x0:this['ctx']['selectColsIng']=!0x1,a2===this['ctx']['maxColIndex']&&a1===0x0?this['ctx'][hD(0xc0)]=!0x0:this['ctx']['selectRowsIng']=!0x1,this['ctx']['emit']('setSelector',this['ctx']['selector']),this['ctx'][hD(0xc8)]('drawView');}}['adjustMergeCells'](u,v){const hE=bY;var w;const [x,z]=v,[B,C]=u;if(z===this['ctx']['maxRowIndex']&&x===0x0||C===this[hE(0x1fa)]['maxColIndex']&&B===0x0)return{'xArr':u,'yArr':v,'onlyMergeCell':!0x1};let F=[],G=[];for(let O=0x0;O<=v[0x1]-v[0x0];O++)for(let P=0x0;P<=u[0x1]-u[0x0];P++){const R=O+v[0x0],T=P+u[0x0],U=this['ctx']['database']['getVirtualBodyCell'](R,T);U&&((R===x||R===z)&&F['push'](U),(T===B||T===C)&&G[hE(0x1f5)](U));}const H=F['reduce']((V,a0)=>{const hF=hE,{yArr:a1}=a0['getSpanInfo'](),[a2,a3]=a1;return V[hF(0x3ad)]=Math['min'](V[hF(0x3ad)],a2),V['maxY']=Math['max'](V[hF(0x2fc)],a3),V;},{'minY':x,'maxY':z}),J=G['reduce']((V,a0)=>{const hG=hE,{xArr:a1}=a0['getSpanInfo'](),[a2,a3]=a1;return V[hG(0x342)]=Math['min'](V['minX'],a2),V['maxX']=Math[hG(0x21e)](V['maxX'],a3),V;},{'minX':B,'maxX':C}),K=[J[hE(0x342)],J['maxX']],L=[H['minY'],H['maxY']];let N=!0x1;if(J['minX']!==J['maxX']||H[hE(0x3ad)]!==H[hE(0x2fc)]){const V=JSON['stringify'](K)+JSON['stringify'](L),a0=(w=this['ctx']['focusCell'])==null?void 0x0:w['getSpanInfo']();N=(a0&&JSON[hE(0x16f)](a0['xArr'])+JSON['stringify'](a0['yArr']))===V;}return{'xArr':K,'yArr':L,'onlyMergeCell':N};}['selectCols'](u){const hH=bY;if(this['ctx']['config']['ENABLE_SELECTOR_SINGLE']||!this['ctx']['config']['ENABLE_SELECTOR_ALL_ROWS']||this['ctx']['autofillMove']||this['ctx']['columnResizing']||this['ctx']['editing'])return;const {SELECTOR_AREA_MIN_Y:v,SELECTOR_AREA_MAX_Y:w,SELECTOR_AREA_MAX_Y_OFFSET:x}=this['ctx']['config'],y=v,z=w||this['ctx'][hH(0x149)]-x;if(this['ctx']['focusCellHeader']){const {colIndex:B}=this['ctx']['focusCellHeader'];if(this[hH(0x1fa)]['clearSelector'](),this[hH(0x1fa)]['mousedown']&&u['colIndex']>=B){const C=[B,u['colIndex']+u['colspan']-0x1],F=[y,z];this[hH(0x2ab)](C,F);}else{const G=[u['colIndex'],B+u['colspan']-0x1],H=[y,z];this['setSelector'](G,H);}}}['selectAll'](){const hI=bY;if(this[hI(0x1fa)]['autofillMove']||this['ctx']['editing'])return;const {ENABLE_SELECTOR_ALL_ROWS:u,ENABLE_SELECTOR_ALL_COLS:v}=this[hI(0x1fa)]['config'];if(u&&v){const {SELECTOR_AREA_MIN_X:w,SELECTOR_AREA_MAX_X:x,SELECTOR_AREA_MIN_Y:z,SELECTOR_AREA_MAX_Y:B,SELECTOR_AREA_MAX_X_OFFSET:C,SELECTOR_AREA_MAX_Y_OFFSET:F}=this['ctx']['config'],G=w,H=x||this['ctx']['maxColIndex']-C,J=z,K=B||this['ctx']['maxRowIndex']-F,L=[G,H],N=[J,K];this[hI(0x2ab)](L,N);}}['selectRows'](u,v=!0x0){const hJ=bY;if(this[hJ(0x1fa)]['config']['ENABLE_SELECTOR_SINGLE']||!this['ctx'][hJ(0x34f)]['ENABLE_SELECTOR_ALL_COLS']||this['ctx'][hJ(0x359)]||this['ctx']['editing'])return;const {SELECTOR_AREA_MIN_X:w,SELECTOR_AREA_MAX_X:x,SELECTOR_AREA_MAX_X_OFFSET:y}=this['ctx']['config'],z=x||this['ctx']['maxColIndex']-y,B=w;if(v){this['ctx']['setFocusCell'](u);const C=[B,z],F=[u[hJ(0x396)],u['rowIndex']];this['setSelector'](C,F);}if(this['ctx'][hJ(0x101)]&&this['ctx']['mousedown']){const {rowIndex:G}=this['ctx']['focusCell'];if(u['rowIndex']>=G){const H=[B,z],J=[G,u[hJ(0x396)]];this['setSelector'](H,J);}else{const K=[B,z],L=[u['rowIndex'],G];this['setSelector'](K,L);}}}[bY(0x215)](){const hK=bY;if(this['ctx']['config']['ENABLE_SELECTOR_SINGLE']||this['ctx']['editing'])return;const {mousedown:u,focusCell:v,hoverCell:w}=this['ctx'];if(u&&v&&w){const {rowIndex:x,colIndex:y}=v,z=Math['min'](w['colIndex'],y),B=Math[hK(0x21e)](w['colIndex'],y),C=Math[hK(0x1fe)](w[hK(0x396)],x),F=Math['max'](w['rowIndex'],x),G=[z,B],H=[C,F];this['setSelector'](G,H);}}['click'](u=!0x1){const hL=bY,{focusCell:v,clickCell:w}=this['ctx'];if(v&&this['isInSettingRange'](v['rowIndex'],v['colIndex'])){if(this['ctx'][hL(0x35a)]['enable']=!0x0,w&&u){if(this['ctx']['config']['ENABLE_SELECTOR_SINGLE'])return;const {colIndex:x,rowIndex:y}=w,{colIndex:z,rowIndex:B}=v,C=Math['min'](z,x),F=Math['max'](z,x),G=Math['min'](B,y),H=Math[hL(0x21e)](B,y),J=[C,F],K=[G,H];this['setSelector'](J,K);}else{this['ctx']['emit'](hL(0x185),v);const L=[v['colIndex'],v['colIndex']],N=[v['rowIndex'],v['rowIndex']];this['setSelector'](L,N);}}}['clearCopyLine'](){this['ctx']['selector']['xArrCopy']=[-0x1,-0x1],this['ctx']['selector']['yArrCopy']=[-0x1,-0x1];}[bY(0x2ad)](s,u){const hM=bY,v=this['ctx']['body']['renderRows'][hM(0x2fb)](w=>w['rowIndex']===s);return v?.['cells']['find'](w=>w['colIndex']===u);}['copy'](){const hN=bY;if(!this['ctx']['config']['ENABLE_COPY']||this['ctx']['domSelectionStr'])return;let {value:u,xArr:v,yArr:w}=this[hN(0x1fa)]['getSelectedData']();if(this['ctx']['config']['ENABLE_MERGE_CELL_LINK']&&this[hN(0x1fa)]['database']['hasMergeCell'](v,w)){if(this['ctx'][hN(0x188)]&&this['ctx']['focusCell']){const z=this['ctx']['focusCell'];u=[[z[hN(0xa2)]()]],v=[z[hN(0xa5)],z[hN(0xa5)]],w=[z[hN(0x396)],z['rowIndex']];}else{const B={'code':'ERR_MERGED_CELLS_COPY','message':hN(0x32e)};this['ctx']['hasEvent']('error')?this['ctx'][hN(0xc8)]('error',B):alert(B['message']);return;}}const {BEFORE_COPY_METHOD:x}=this[hN(0x1fa)][hN(0x34f)];if(typeof x=='function'){const C=x({'focusCell':this['ctx'][hN(0x101)],'data':u,'xArr':v,'yArr':w});if(!C)return;u=C[hN(0x160)];}const y=ec(u);navigator['clipboard']?navigator['clipboard']['writeText'](y)['then'](()=>{const hO=hN;this['ctx'][hO(0x35a)]['xArrCopy']=this['ctx']['selector']['xArr'][hO(0x30b)](),this['ctx']['selector']['yArrCopy']=this['ctx'][hO(0x35a)]['yArr']['slice'](),this['ctx']['emit']('copyChange',{'xArr':this['ctx']['selector']['xArrCopy'],'yArr':this[hO(0x1fa)]['selector']['yArrCopy'],'data':u}),this['ctx']['emit']('draw');})['catch'](F=>console['error']('Copy\x20Failure:',F)):console['error'](hN(0x19c));}[bY(0xe7)](u,v,w=!0x1,x=null){const hP=bY;let z=[];const B=new Set();for(let F=0x0;F<=v[0x1]-v[0x0];F++)for(let G=0x0;G<=u[0x1]-u[0x0];G++){const H=F+v[0x0],J=G+u[0x0],K=this[hP(0x1fa)]['database']['getItemValueForRowIndexAndColIndex'](H,J);if(K){const {rowKey:L,key:N}=K;this['ctx'][hP(0x247)]['getReadonly'](L,N)||(B[hP(0x1a6)](L),z[hP(0x1f5)]({'rowKey':L,'key':N,'value':x,'row':{}}));}}if(!z['length'])return[];if(w)return z;this[hP(0x1fa)]['database']['batchSetItemValue'](z,!0x0);let C=[];return B['forEach'](O=>{const hQ=hP;C['push'](this['ctx'][hQ(0x247)]['getRowDataItemForRowKey'](O));}),this['ctx']['emit']('clearSelectedDataChange',z,C),z;}[bY(0x3b9)](){const hR=bY;if(!navigator['clipboard']){console[hR(0xa1)]('current\x20browser\x20does\x20not\x20support\x20the\x20Clipboard\x20API');return;}const {ENABLE_PASTER:u}=this['ctx']['config'];if(this['ctx']['selector'][hR(0x1ef)]&&u){const v=this['ctx']['selector']['yArr'][0x0],w=this['ctx']['selector']['xArr'][0x0],x=new Set();navigator['clipboard']['readText']()['then'](async z=>{const hS=hR;let B=cc(z);const C=[w,w+B[0x0]['length']-0x1],H=[v,v+B['length']-0x1],[J,N]=H,[O,P]=C,R=N-this['ctx']['maxRowIndex'],U=P-this['ctx']['maxColIndex'];(R>0x0||U>0x0)&&this['ctx'][hS(0xc8)](hS(0x395),{'maxY':N,'maxX':P,'minY':J,'minX':O,'overflowRowCount':R,'overflowColCount':U,'textArr':B});const a0=B[hS(0xfa)]===0x1&&B[0x0]['length']===0x1;if(this[hS(0x1fa)]['config']['ENABLE_MERGE_CELL_LINK']&&this['ctx']['database']['hasMergeCell'](C,H)&&!a0){const a4={'code':'ERR_MERGED_CELLS_PASTE','message':'Merged\x20cells\x20cannot\x20span\x20paste\x20data'};this['ctx']['hasEvent']('error')?this['ctx'][hS(0xc8)]('error',a4):alert(a4['message']);return;}let a1=[];for(let a5=0x0;a5<=B[hS(0xfa)]-0x1;a5++){const a6=B[a5]['length'];for(let a7=0x0;a7<=a6-0x1;a7++){const a8=a5+v,a9=a7+w,aa=B[a5][a7],ab=this['ctx']['database']['getItemValueForRowIndexAndColIndex'](a8,a9);if(ab){const {rowKey:ad,key:af}=ab;this['ctx']['database']['getReadonly'](ad,af)||(x['add'](ad),a1['push']({'rowKey':ad,'key':af,'value':aa,'row':{}}));}}}if(this['isCut']){const ag=this[hS(0xe7)](this['ctx']['selector']['xArrCopy'],this[hS(0x1fa)]['selector']['yArrCopy'],!0x0),ai=a1['map'](aj=>aj[hS(0xf7)]+'-'+aj[hS(0x17f)]);ag['forEach'](aj=>{const hT=hS;ai['includes'](aj['rowKey']+'-'+aj[hT(0x17f)])||a1[hT(0x348)](aj);}),this['isCut']=!0x1;}if(!a1['length'])return;const {BEFORE_PASTE_DATA_METHOD:a2}=this['ctx']['config'];if(typeof a2=='function'){const aj=a2,ak=a1['map'](al=>({'rowKey':al['rowKey'],'key':al['key'],'value':al['value'],'oldValue':this['ctx']['database']['getItemValue'](al['rowKey'],al['key']),'row':this['ctx']['database'][hS(0x210)](al['rowKey'])}));if(a1=await aj(ak,C,H,B),a1&&!a1['length'])return;}this['clearCopyLine'](),this[hS(0x1fa)][hS(0x2ef)](a1,!0x0);let a3=[];x['forEach'](al=>{a3['push'](this['ctx']['database']['getRowDataItemForRowKey'](al));}),this[hS(0x1fa)]['emit']('pasteChange',a1,a3),this[hS(0x1fa)]['emit']('draw');})[hR(0x1bf)](y=>{console['error']('Failed\x20to\x20get\x20the\x20clipboard\x20content:',y);});}}['moveFocus'](u){const hU=bY;if(this['ctx']['editing'])return;const {focusCell:v}=this['ctx'];if(!v)return;let {colIndex:w=0x0,rowIndex:x=0x0}=v;const y=0x0,z=0x0,B=this['ctx']['maxColIndex'],C=this['ctx']['maxRowIndex'];switch(u){case'LEFT':w>y&&w--;break;case'TOP':x>z&&x--;break;case'RIGHT':w<B&&w++;break;case'BOTTOM':x<C&&x++;break;}const F=[w,w],G=[x,x],H=this['getCell'](x,w);H&&(H[hU(0xad)]||this['isInSettingRange'](H['rowIndex'],H['colIndex'])&&(this['ctx']['setFocusCell'](H),this['setSelector'](F,G),this['adjustBoundaryPosition'](),this['ctx']['emit']('moveFocus',H),this[hU(0x1fa)]['emit']('draw')));}['isInSettingRange'](u,v){const {SELECTOR_AREA_MIN_X:w,SELECTOR_AREA_MAX_X:x,SELECTOR_AREA_MIN_Y:y,SELECTOR_AREA_MAX_Y:z,SELECTOR_AREA_MAX_X_OFFSET:B,SELECTOR_AREA_MAX_Y_OFFSET:C}=this['ctx']['config'],F=w,G=x||this['ctx']['maxColIndex']-B,H=y,J=z||this['ctx']['maxRowIndex']-C;return!(v<F||v>G||u<H||u>J);}['adjustBoundaryPosition'](){const hV=bY,{stageHeight:u,stageWidth:v,focusCell:x,fixedRightWidth:z,fixedLeftWidth:B,header:C,footer:H,body:J,scrollX:N,scrollY:O,config:{SCROLLER_TRACK_SIZE:P,FOOTER_FIXED:R,FOOTER_POSITION:U,ENABLE_MERGE_CELL_LINK:a0}}=this[hV(0x1fa)];if(!x)return;a0&&this['ctx']['onlyMergeCell']&&x[hV(0xcc)]();const {drawX:a1,drawY:a2,width:a3,height:a4,fixed:a5}=x,a6=B-a1+0x1,a7=x['drawX']+a3-(v-z)+0x1;let a8=C[hV(0x8e)]-a2,a9=a4;a9>J['visibleHeight']&&(a9=J['visibleHeight']);let aa=0x0;R&&(U==='top'?a8=C['height']+H['height']-a2:aa=H[hV(0x140)]);const ab=a2+a9-(u-aa-P);let ad=N,af=O;a7>0x0&&!a5?ad=Math['floor'](N+a7):a6>0x0&&!a5&&(ad=Math['floor'](N-a6)),a8>0x0?af=Math[hV(0x236)](O-a8):ab>0x0&&(af=Math['floor'](O+ab)),(Math[hV(0x343)](N-ad)>2.5||Math['abs'](O-af)>2.5)&&this['ctx']['setScroll'](ad,af);}['destroy'](){}}class rc{constructor(s){const hW=bY;m(this,'ctx'),m(this,hW(0x204)),this['ctx']=s,this['init']();}['init'](){const hZ=bY;this['ctx']['on']('mousemove',u=>{const hX=b;if(this['ctx'][hX(0x13c)][hX(0x270)]['cursor']==='crosshair'&&(this[hX(0x1fa)]['stageElement']['style']['cursor']='default'),this['ctx']['editing']||!this['ctx']['focusCell']||!this['maxColRowCell'])return;const {offsetX:v,offsetY:w}=this[hX(0x1fa)]['getOffset'](u),{colIndex:x,rowIndex:y,drawX:z,drawY:B,width:C,height:F}=this['maxColRowCell'],G=0x6,H=x===this['ctx'][hX(0x363)]||y===this['ctx']['maxRowIndex']?0x0:0x2,J=z+C-G+H,K=B+F-G+H;v>J&&w>K&&v<J+G&&w<K+G&&(this['ctx']['stageElement'][hX(0x270)]['cursor']='crosshair'),this[hX(0x1fa)][hX(0x359)]&&this['ctx']['startAdjustPosition'](u);}),this['ctx']['on']('cellMouseenter',u=>{const hY=b,{xArr:v,yArr:w}=this[hY(0x1fa)]['selector'],x=v[0x1],y=w[0x1],{colIndex:z,rowIndex:B}=u;this['ctx']['config'][hY(0x264)]&&z===x&&B===y&&(this['maxColRowCell']=u),this['mouseenter'](u);}),this[hZ(0x1fa)]['on']('mousedown',()=>{const i0=hZ;this['ctx']['stageElement'][i0(0x270)]['cursor']==='crosshair'&&this['setMousedown']();}),this[hZ(0x1fa)]['on']('mouseup',()=>{this['setMouseUp'](),this['ctx']['stopAdjustPosition']();});}['isAutofillIng'](){const {xArr:s,yArr:u}=this['ctx']['selector'];return!(JSON['stringify'](this['ctx']['autofill']['xArr'])===JSON['stringify'](s)&&JSON['stringify'](this['ctx']['autofill']['yArr'])===JSON['stringify'](u));}['setMousedown'](){this['ctx']['autofill']['enable']=!0x0,this['ctx']['autofillMove']=!0x0,this['ctx']['disableHoverIconClick']=!0x0;}[bY(0x30a)](){const i1=bY;this['ctx']['autofill']['enable']&&(this['isAutofillIng']()&&this[i1(0x265)](),this['ctx']['autofill'][i1(0x1ef)]=!0x1,this['ctx']['autofillMove']=!0x1,this['ctx']['autofill']['xArr']=[-0x1,-0x1],this['ctx']['autofill']['yArr']=[-0x1,-0x1],setTimeout(()=>{this['ctx']['disableHoverIconClick']=!0x1;},0x0));}['setAutofill'](u,v){const i2=bY,{ENABLE_AUTOFILL:x,ENABLE_AUTOFILL_SPAN_COL:z,ENABLE_AUTOFILL_SPAN_ROW:B}=this['ctx']['config'];if(!x)return;let C=u,H=v;const J=this['ctx']['selector']['xArr'],N=this[i2(0x1fa)]['selector']['yArr'];if(!(!B&&JSON['stringify'](N)!==JSON['stringify'](H))&&!(!z&&JSON[i2(0x16f)](J)!==JSON['stringify'](C))&&(JSON['stringify'](this['ctx']['autofill']['xArr'])!==JSON['stringify'](C)||JSON[i2(0x16f)](this['ctx']['autofill']['yArr'])!==JSON['stringify'](H))){const {SELECTOR_AREA_MIN_X:O,SELECTOR_AREA_MAX_X:P,SELECTOR_AREA_MIN_Y:R,SELECTOR_AREA_MAX_Y:T,SELECTOR_AREA_MAX_X_OFFSET:U,SELECTOR_AREA_MAX_Y_OFFSET:a0}=this['ctx']['config'],a1=O,a2=P||this['ctx']['maxColIndex']-U,a3=R,a4=T||this['ctx']['maxRowIndex']-a0;let [a5,a6]=C,[a7,a8]=H;if(a5<a1||a7<a3)return;C=[Math['max'](a1,a5),Math['min'](a2,a6)],H=[Math['max'](a3,a7),Math[i2(0x1fe)](a4,a8)];const {BEFORE_SET_AUTOFILL_METHOD:a9}=this['ctx']['config'];if(typeof a9=='function'){const aa=a9({'focusCell':this['ctx'][i2(0x101)],'xArr':C,'yArr':H});if(!aa)return;C=aa['xArr'],H=aa['yArr'];}this['ctx']['autofill']['xArr']=C,this['ctx']['autofill']['yArr']=H,this[i2(0x1fa)]['emit']('setAutofill',this['ctx']['autofill']),this['ctx']['emit']('draw');}}async['autofillData'](){const i3=bY,u=new Set(),v=this[i3(0x1fa)]['getSelectedData'](),w=new Map();for(let O=0x0;O<=v['yArr'][0x1]-v['yArr'][0x0];O++)for(let P=0x0;P<=v['xArr'][0x1]-v['xArr'][0x0];P++){const R=O+v['yArr'][0x0],T=P+v['xArr'][0x0];w[i3(0x26b)](R+'-'+T,!0x0);}const {value:x}=v,z=x[0x0]['length'],B=x['length'],C=this['ctx']['autofill']['xArr'],F=this['ctx'][i3(0x16a)]['yArr'],H=z===0x1&&B===0x1;if(this[i3(0x1fa)]['config'][i3(0x129)]&&this['ctx']['database']['hasMergeCell'](C,F)&&!H){const U={'code':'ERR_MERGED_CELLS_AUTOFILL','message':'Merged\x20cells\x20cannot\x20span\x20autofill\x20data'};this[i3(0x1fa)]['hasEvent']('error')?this['ctx'][i3(0xc8)]('error',U):alert(U['message']);return;}let J=[];for(let V=0x0;V<=F[0x1]-F[0x0];V++)for(let a0=0x0;a0<=C[0x1]-C[0x0];a0++){const a1=a0+C[0x0],a2=V+F[0x0],a3=x[V%B][a0%z],a4=this[i3(0x1fa)][i3(0x247)][i3(0x336)](a2,a1),a5=a2+'-'+a1;if(a4&&!w['has'](a5)){const {rowKey:a6,key:a7}=a4;this['ctx']['database']['getReadonly'](a6,a7)||(u['add'](a6),J[i3(0x1f5)]({'rowKey':a6,'key':a7,'value':a3,'row':{}}));}}if(!J['length'])return;this['ctx'][i3(0x35a)]['xArr']=this['ctx']['autofill']['xArr'],this[i3(0x1fa)]['selector']['yArr']=this['ctx']['autofill']['yArr'];const {BEFORE_AUTOFILL_DATA_METHOD:K}=this[i3(0x1fa)]['config'];if(typeof K==i3(0x35c)){const a8=K,a9=J['map'](aa=>({'rowKey':aa[i3(0xf7)],'key':aa['key'],'value':aa['value'],'oldValue':this[i3(0x1fa)][i3(0x247)]['getItemValue'](aa['rowKey'],aa['key']),'row':this['ctx']['database']['getRowDataItemForRowKey'](aa['rowKey'])}));if(J=await a8(a9,C,F),J&&!J['length'])return;}this['ctx']['batchSetItemValueByEditor'](J,!0x0);let N=[];u['forEach'](aa=>{const i4=i3;N['push'](this[i4(0x1fa)]['database']['getRowDataItemForRowKey'](aa));}),this['ctx']['emit']('autofillChange',J,N),this[i3(0x1fa)]['emit']('draw');}['mouseenter'](u){if(['index','selection','index-selection']['includes'](u['type']))return;const {selector:v,autofill:w}=this['ctx'];if(this['ctx']['mousedown']&&v['enable']&&w['enable']){const {rowIndex:x,colIndex:y}=u,z=v['xArr']['slice'](),B=v['yArr']['slice']();x>=v['yArr'][0x0]&&x<=v['yArr'][0x1]?y>v['xArr'][0x1]?z['splice'](0x1,0x1,y):y<v['xArr'][0x0]&&z['splice'](0x0,0x1,y):x>v['yArr'][0x1]?B['splice'](0x1,0x1,x):x<v['yArr'][0x0]&&B['splice'](0x0,0x1,x),this['setAutofill'](z,B);}}['destroy'](){}}const ri=Math['min'],ui=Math[bY(0x21e)],et=Math['round'],_i=Math['floor'],ti=s=>({'x':s,'y':s}),Kc={'left':bY(0x2b3),'right':'left','bottom':bY(0x1b1),'top':'bottom'};function Ot(s,u,v){return ui(s,ri(u,v));}function Ui(s,t){return typeof s=='function'?s(t):s;}function Gi(s){return s['split']('-')[0x0];}function ji(s){return s['split']('-')[0x1];}function Ys(s){return s==='x'?'y':'x';}function ll(s){return s==='y'?'height':'width';}function Ii(s){const t=s[0x0];return t==='t'||t==='b'?'y':'x';}function sl(s){return Ys(Ii(s));}function Tc(u,v,w){const i5=bY;w===void 0x0&&(w=!0x1);const x=ji(u),y=sl(u),z=ll(y);let B=y==='x'?x===(w?'end':'start')?'right':'left':x===i5(0x155)?i5(0x287):'top';return v['reference'][z]>v[i5(0xc4)][z]&&(B=ht(B)),[B,ht(B)];}function Jc(s){const t=ht(s);return[Dt(s),t,Dt(t)];}function Dt(s){const i6=bY;return s['includes']('start')?s['replace']('start',i6(0x11c)):s['replace']('end','start');}const wl=['left','right'],Rl=['right',bY(0xca)],Mc=['top','bottom'],Nc=['bottom','top'];function Fc(s,u,v){switch(s){case'top':case'bottom':return v?u?Rl:wl:u?wl:Rl;case'left':case'right':return u?Mc:Nc;default:return[];}}function wc(u,v,w,x){const y=ji(u);let z=Fc(Gi(u),w==='start',x);return y&&(z=z['map'](B=>B+'-'+y),v&&(z=z['concat'](z['map'](Dt)))),z;}function ht(s){const t=Gi(s);return Kc[t]+s['slice'](t['length']);}function Rc(s){return{'top':0x0,'right':0x0,'bottom':0x0,'left':0x0,...s};}function Ws(s){return typeof s!='number'?Rc(s):{'top':s,'right':s,'bottom':s,'left':s};}function dt(u){const {x:v,y:w,width:x,height:y}=u;return{'width':x,'height':y,'top':w,'left':v,'right':v+x,'bottom':w+y,'x':v,'y':w};}function zl(u,v,w){const i7=bY;let {reference:x,floating:y}=u;const z=Ii(v),B=sl(v),C=ll(B),F=Gi(v),G=z==='y',H=x['x']+x[i7(0x34d)]/0x2-y['width']/0x2,J=x['y']+x['height']/0x2-y['height']/0x2,K=x[C]/0x2-y[C]/0x2;let L;switch(F){case'top':L={'x':H,'y':x['y']-y['height']};break;case i7(0x287):L={'x':H,'y':x['y']+x['height']};break;case'right':L={'x':x['x']+x['width'],'y':J};break;case'left':L={'x':x['x']-y['width'],'y':J};break;default:L={'x':x['x'],'y':x['y']};}switch(ji(v)){case i7(0x155):L[B]-=K*(w&&G?-0x1:0x1);break;case i7(0x11c):L[B]+=K*(w&&G?-0x1:0x1);break;}return L;}async function zc(u,v){const i8=bY;var w;v===void 0x0&&(v={});const {x:x,y:z,platform:B,rects:C,elements:F,strategy:H}=u,{boundary:J=i8(0x17a),rootBoundary:K='viewport',elementContext:L='floating',altBoundary:N=!0x1,padding:O=0x0}=Ui(v,u),P=Ws(O),R=F[N?L==='floating'?'reference':'floating':L],T=dt(await B['getClippingRect']({'element':(w=await(B['isElement']==null?void 0x0:B[i8(0x258)](R)))==null||w?R:R['contextElement']||await(B['getDocumentElement']==null?void 0x0:B['getDocumentElement'](F['floating'])),'boundary':J,'rootBoundary':K,'strategy':H})),U=L===i8(0xc4)?{'x':x,'y':z,'width':C['floating']['width'],'height':C[i8(0xc4)]['height']}:C['reference'],V=await(B['getOffsetParent']==null?void 0x0:B['getOffsetParent'](F['floating'])),a0=await(B['isElement']==null?void 0x0:B[i8(0x258)](V))?await(B['getScale']==null?void 0x0:B['getScale'](V))||{'x':0x1,'y':0x1}:{'x':0x1,'y':0x1},a1=dt(B['convertOffsetParentRelativeRectToViewportRelativeRect']?await B['convertOffsetParentRelativeRectToViewportRelativeRect']({'elements':F,'rect':U,'offsetParent':V,'strategy':H}):U);return{'top':(T['top']-a1['top']+P['top'])/a0['y'],'bottom':(a1['bottom']-T[i8(0x287)]+P['bottom'])/a0['y'],'left':(T['left']-a1[i8(0xca)]+P[i8(0xca)])/a0['x'],'right':(a1['right']-T['right']+P[i8(0x2b3)])/a0['x']};}const Cc=0x32,gc=async(u,v,w)=>{const i9=bY,{placement:x='bottom',strategy:z='absolute',middleware:B=[],platform:C}=w,F=C['detectOverflow']?C:{...C,'detectOverflow':zc},H=await(C['isRTL']==null?void 0x0:C[i9(0x1f7)](v));let J=await C['getElementRects']({'reference':u,'floating':v,'strategy':z}),{x:N,y:O}=zl(J,x,H),P=x,R=0x0;const T={};for(let U=0x0;U<B['length'];U++){const V=B[U];if(!V)continue;const {name:a0,fn:a1}=V,{x:a2,y:a3,data:a4,reset:a5}=await a1({'x':N,'y':O,'initialPlacement':x,'placement':P,'strategy':z,'middlewareData':T,'rects':J,'platform':F,'elements':{'reference':u,'floating':v}});N=a2??N,O=a3??O,T[a0]={...T[a0],...a4},a5&&R<Cc&&(R++,typeof a5=='object'&&(a5[i9(0xb7)]&&(P=a5['placement']),a5['rects']&&(J=a5['rects']===!0x0?await C['getElementRects']({'reference':u,'floating':v,'strategy':z}):a5['rects']),{x:N,y:O}=zl(J,P,H)),U=-0x1);}return{'x':N,'y':O,'placement':P,'strategy':z,'middlewareData':T};},Uc=s=>({'name':'arrow','options':s,async 'fn'(u){const ia=bY,{x:v,y:x,placement:z,rects:B,platform:C,elements:H,middlewareData:J}=u,{element:N,padding:a0=0x0}=Ui(s,u)||{};if(N==null)return{};const a1=Ws(a0),a2={'x':v,'y':x},a3=sl(z),a4=ll(a3),a5=await C['getDimensions'](N),a6=a3==='y',a7=a6?ia(0x1b1):'left',a8=a6?'bottom':'right',a9=a6?'clientHeight':'clientWidth',aa=B['reference'][a4]+B['reference'][a3]-a2[a3]-B['floating'][a4],ab=a2[a3]-B['reference'][a3],ad=await(C['getOffsetParent']==null?void 0x0:C['getOffsetParent'](N));let af=ad?ad[a9]:0x0;(!af||!await(C['isElement']==null?void 0x0:C['isElement'](ad)))&&(af=H['floating'][a9]||B['floating'][a4]);const ag=aa/0x2-ab/0x2,ai=af/0x2-a5[a4]/0x2-0x1,aj=ri(a1[a7],ai),ak=ri(a1[a8],ai),al=aj,am=af-a5[a4]-ak,an=af/0x2-a5[a4]/0x2+ag,ao=Ot(al,an,am),ap=!J['arrow']&&ji(z)!=null&&an!==ao&&B['reference'][a4]/0x2-(an<al?aj:ak)-a5[a4]/0x2<0x0,aq=ap?an<al?an-al:an-am:0x0;return{[a3]:a2[a3]+aq,'data':{[a3]:ao,'centerOffset':an-ao-aq,...ap&&{'alignmentOffset':aq}},'reset':ap};}}),jc=function(s){const ib=bY;return s===void 0x0&&(s={}),{'name':ib(0x12b),'options':s,async 'fn'(u){const id=ib;var v,x;const {placement:z,middlewareData:B,rects:C,initialPlacement:H,platform:J,elements:N}=u,{mainAxis:a0=!0x0,crossAxis:a1=!0x0,fallbackPlacements:a2,fallbackStrategy:a3='bestFit',fallbackAxisSideDirection:a4='none',flipAlignment:a5=!0x0,...a6}=Ui(s,u);if((v=B['arrow'])!=null&&v['alignmentOffset'])return{};const a7=Gi(z),a8=Ii(H),a9=Gi(H)===H,aa=await(J['isRTL']==null?void 0x0:J['isRTL'](N['floating'])),ab=a2||(a9||!a5?[ht(H)]:Jc(H)),ad=a4!=='none';!a2&&ad&&ab['push'](...wc(H,a5,a4,aa));const af=[H,...ab],ag=await J['detectOverflow'](u,a6),ai=[];let aj=((x=B[id(0x12b)])==null?void 0x0:x['overflows'])||[];if(a0&&ai['push'](ag[a7]),a1){const an=Tc(z,C,aa);ai['push'](ag[an[0x0]],ag[an[0x1]]);}if(aj=[...aj,{'placement':z,'overflows':ai}],!ai[id(0x1e1)](ao=>ao<=0x0)){var ak,al;const ao=(((ak=B['flip'])==null?void 0x0:ak[id(0xf3)])||0x0)+0x1,ap=af[ao];if(ap&&(!(a1===id(0x166)&&a8!==Ii(ap))||aj['every'](ar=>Ii(ar['placement'])===a8?ar['overflows'][0x0]>0x0:!0x0)))return{'data':{'index':ao,'overflows':aj},'reset':{'placement':ap}};let aq=(al=aj[id(0x36a)](ar=>ar['overflows'][0x0]<=0x0)[id(0x9b)]((ar,au)=>ar[id(0x223)][0x1]-au[id(0x223)][0x1])[0x0])==null?void 0x0:al[id(0xb7)];if(!aq)switch(a3){case'bestFit':{var am;const ar=(am=aj['filter'](au=>{if(ad){const av=Ii(au['placement']);return av===a8||av==='y';}return!0x0;})['map'](au=>[au[id(0xb7)],au['overflows']['filter'](av=>av>0x0)['reduce']((av,aw)=>av+aw,0x0)])['sort']((au,av)=>au[0x1]-av[0x1])[0x0])==null?void 0x0:am[0x0];ar&&(aq=ar);break;}case'initialPlacement':aq=H;break;}if(z!==aq)return{'reset':{'placement':aq}};}return{};}};},Ec=new Set(['left','top']);async function kc(u,v){const ig=bY,{placement:w,platform:x,elements:z}=u,B=await(x['isRTL']==null?void 0x0:x['isRTL'](z['floating'])),C=Gi(w),F=ji(w),G=Ii(w)==='y',H=Ec['has'](C)?-0x1:0x1,J=B&&G?-0x1:0x1,K=Ui(v,u);let {mainAxis:L,crossAxis:N,alignmentAxis:O}=typeof K==ig(0x186)?{'mainAxis':K,'crossAxis':0x0,'alignmentAxis':null}:{'mainAxis':K['mainAxis']||0x0,'crossAxis':K['crossAxis']||0x0,'alignmentAxis':K['alignmentAxis']};return F&&typeof O=='number'&&(N=F===ig(0x11c)?O*-0x1:O),G?{'x':N*J,'y':L*H}:{'x':L*H,'y':N*J};}const Oc=function(s){return s===void 0x0&&(s=0x0),{'name':'offset','options':s,async 'fn'(u){var v,w;const {x:x,y:y,placement:z,middlewareData:B}=u,C=await kc(u,s);return z===((v=B['offset'])==null?void 0x0:v['placement'])&&(w=B['arrow'])!=null&&w['alignmentOffset']?{}:{'x':x+C['x'],'y':y+C['y'],'data':{...C,'placement':z}};}};},Dc=function(s){const ij=bY;return s===void 0x0&&(s={}),{'name':ij(0x124),'options':s,async 'fn'(u){const ik=ij,{x:v,y:w,placement:x,platform:z}=u,{mainAxis:B=!0x0,crossAxis:C=!0x1,limiter:F={'fn':T=>{let {x:U,y:V}=T;return{'x':U,'y':V};}},...H}=Ui(s,u),J={'x':v,'y':w},K=await z['detectOverflow'](u,H),L=Ii(Gi(x)),N=Ys(L);let O=J[N],P=J[L];if(B){const T=N==='y'?'top':ik(0xca),U=N==='y'?'bottom':'right',V=O+K[T],a0=O-K[U];O=Ot(V,O,a0);}if(C){const a1=L==='y'?ik(0x1b1):'left',a2=L==='y'?'bottom':ik(0x2b3),a3=P+K[a1],a4=P-K[a2];P=Ot(a3,P,a4);}const R=F['fn']({...u,[N]:O,[L]:P});return{...R,'data':{'x':R['x']-v,'y':R['y']-w,'enabled':{[N]:B,[L]:C}}};}};};function at(){return typeof window<'u';}function Ti(s){return ys(s)?(s['nodeName']||'')['toLowerCase']():'#document';}function Q(s){var t;return(s==null||(t=s['ownerDocument'])==null?void 0x0:t['defaultView'])||window;}function b(c,d){c=c-0x7c;const e=a();let f=e[c];return f;}function si(s){const im=bY;var t;return(t=(ys(s)?s[im(0x36d)]:s['document'])||window[im(0x1d7)])==null?void 0x0:t['documentElement'];}function ys(s){return at()?s instanceof Node||s instanceof Q(s)['Node']:!0x1;}function q(s){return at()?s instanceof Element||s instanceof Q(s)['Element']:!0x1;}function di(s){return at()?s instanceof HTMLElement||s instanceof Q(s)['HTMLElement']:!0x1;}function Cl(s){return!at()||typeof ShadowRoot>'u'?!0x1:s instanceof ShadowRoot||s instanceof Q(s)['ShadowRoot'];}function Ei(u){const {overflow:v,overflowX:w,overflowY:x,display:y}=$(u);return/auto|scroll|overlay|hidden|clip/['test'](v+x+w)&&y!=='inline'&&y!=='contents';}function Pc(s){return/^(table|td|th)$/['test'](Ti(s));}function Yt(s){try{if(s['matches'](':popover-open'))return!0x0;}catch{}try{return s['matches'](':modal');}catch{return!0x1;}}const Hc=/transform|translate|scale|rotate|perspective|filter/,fc=/paint|layout|strict|content/,Xi=s=>!!s&&s!==bY(0x25d);let Rt;function cl(s){const io=bY,t=q(s)?$(s):s;return Xi(t['transform'])||Xi(t[io(0x106)])||Xi(t['scale'])||Xi(t['rotate'])||Xi(t['perspective'])||!el()&&(Xi(t['backdropFilter'])||Xi(t['filter']))||Hc['test'](t['willChange']||'')||fc['test'](t[io(0x381)]||'');}function Qc(s){let t=ni(s);for(;di(t)&&!Ki(t);){if(cl(t))return t;if(Yt(t))return null;t=ni(t);}return null;}function el(){const ip=bY;return Rt==null&&(Rt=typeof CSS<'u'&&CSS['supports']&&CSS['supports']('-webkit-backdrop-filter',ip(0x25d))),Rt;}function Ki(s){return/^(html|body|#document)$/['test'](Ti(s));}function $(s){const iq=bY;return Q(s)[iq(0x2dc)](s);}function Wt(s){const ir=bY;return q(s)?{'scrollLeft':s[ir(0x18b)],'scrollTop':s['scrollTop']}:{'scrollLeft':s['scrollX'],'scrollTop':s['scrollY']};}function ni(s){const iu=bY;if(Ti(s)===iu(0x278))return s;const t=s['assignedSlot']||s['parentNode']||Cl(s)&&s['host']||si(s);return Cl(t)?t['host']:t;}function Ss(s){const t=ni(s);return Ki(t)?s['ownerDocument']?s['ownerDocument']['body']:s['body']:di(t)&&Ei(t)?t:Ss(t);}function gi(u,v,w){const iv=bY;var x;v===void 0x0&&(v=[]),w===void 0x0&&(w=!0x0);const y=Ss(u),z=y===((x=u['ownerDocument'])==null?void 0x0:x['body']),B=Q(y);if(z){const C=Pt(B);return v['concat'](B,B['visualViewport']||[],Ei(y)?y:[],C&&w?gi(C):[]);}else return v[iv(0x2ba)](y,gi(y,[],w));}function Pt(s){const iw=bY;return s[iw(0x13f)]&&Object['getPrototypeOf'](s[iw(0x13f)])?s['frameElement']:null;}function Xs(u){const ix=bY,v=$(u);let w=parseFloat(v[ix(0x34d)])||0x0,x=parseFloat(v[ix(0x8e)])||0x0;const y=di(u),z=y?u['offsetWidth']:w,B=y?u[ix(0x386)]:x,C=et(w)!==z||et(x)!==B;return C&&(w=z,x=B),{'width':w,'height':x,'$':C};}function hl(s){return q(s)?s:s['contextElement'];}function Vi(u){const iy=bY,v=hl(u);if(!di(v))return ti(0x1);const w=v['getBoundingClientRect'](),{width:x,height:y,$:z}=Xs(v);let B=(z?et(w[iy(0x34d)]):w['width'])/x,C=(z?et(w['height']):w['height'])/y;return(!B||!Number['isFinite'](B))&&(B=0x1),(!C||!Number[iy(0x100)](C))&&(C=0x1),{'x':B,'y':C};}const vc=ti(0x0);function ps(s){const iz=bY,t=Q(s);return!el()||!t['visualViewport']?vc:{'x':t['visualViewport']['offsetLeft'],'y':t['visualViewport'][iz(0x30d)]};}function Bc(s,u,v){return u===void 0x0&&(u=!0x1),!v||u&&v!==Q(s)?!0x1:u;}function Li(u,v,w,x){const iA=bY;v===void 0x0&&(v=!0x1),w===void 0x0&&(w=!0x1);const z=u[iA(0x2c3)](),B=hl(u);let C=ti(0x1);v&&(x?q(x)&&(C=Vi(x)):C=Vi(u));const F=Bc(B,w,x)?ps(B):ti(0x0);let H=(z['left']+F['x'])/C['x'],J=(z['top']+F['y'])/C['y'],K=z['width']/C['x'],L=z['height']/C['y'];if(B){const N=Q(B),O=x&&q(x)?Q(x):x;let P=N,R=Pt(P);for(;R&&x&&O!==P;){const T=Vi(R),U=R['getBoundingClientRect'](),V=$(R),a0=U[iA(0xca)]+(R['clientLeft']+parseFloat(V['paddingLeft']))*T['x'],a1=U['top']+(R[iA(0x280)]+parseFloat(V['paddingTop']))*T['y'];H*=T['x'],J*=T['y'],K*=T['x'],L*=T['y'],H+=a0,J+=a1,P=Q(R),R=Pt(P);}}return dt({'width':K,'height':L,'x':H,'y':J});}function yt(s,u){const iB=bY,v=Wt(s)['scrollLeft'];return u?u[iB(0xca)]+v:Li(si(s))[iB(0xca)]+v;}function us(u,v){const iC=bY,w=u['getBoundingClientRect'](),x=w[iC(0xca)]+v[iC(0x18b)]-yt(u,w),y=w['top']+v['scrollTop'];return{'x':x,'y':y};}function Ac(u){let {elements:v,rect:w,offsetParent:x,strategy:y}=u;const z=y==='fixed',B=si(x),C=v?Yt(v['floating']):!0x1;if(x===B||C&&z)return w;let F={'scrollLeft':0x0,'scrollTop':0x0},G=ti(0x1);const H=ti(0x0),J=di(x);if((J||!J&&!z)&&((Ti(x)!=='body'||Ei(B))&&(F=Wt(x)),J)){const L=Li(x);G=Vi(x),H['x']=L['x']+x['clientLeft'],H['y']=L['y']+x['clientTop'];}const K=B&&!J&&!z?us(B,F):ti(0x0);return{'width':w['width']*G['x'],'height':w['height']*G['y'],'x':w['x']*G['x']-F['scrollLeft']*G['x']+H['x']+K['x'],'y':w['y']*G['y']-F['scrollTop']*G['y']+H['y']+K['y']};}function _c(s){const iD=bY;return Array[iD(0x163)](s['getClientRects']());}function qc(u){const iE=bY,v=si(u),w=Wt(u),x=u[iE(0x36d)][iE(0x328)],y=ui(v['scrollWidth'],v['clientWidth'],x[iE(0x8d)],x[iE(0x1b6)]),z=ui(v['scrollHeight'],v['clientHeight'],x['scrollHeight'],x['clientHeight']);let B=-w['scrollLeft']+yt(u);const C=-w['scrollTop'];return $(x)['direction']==='rtl'&&(B+=ui(v['clientWidth'],x['clientWidth'])-y),{'width':y,'height':z,'x':B,'y':C};}const gl=0x19;function $c(u,v){const iF=bY,w=Q(u),x=si(u),z=w['visualViewport'];let B=x['clientWidth'],C=x[iF(0xdc)],F=0x0,G=0x0;if(z){B=z['width'],C=z[iF(0x8e)];const J=el();(!J||J&&v==='fixed')&&(F=z['offsetLeft'],G=z['offsetTop']);}const H=yt(x);if(H<=0x0){const K=x['ownerDocument'],L=K['body'],N=getComputedStyle(L),O=K[iF(0x257)]==='CSS1Compat'&&parseFloat(N['marginLeft'])+parseFloat(N['marginRight'])||0x0,P=Math['abs'](x['clientWidth']-L[iF(0x1b6)]-O);P<=gl&&(B-=P);}else H<=gl&&(B+=H);return{'width':B,'height':C,'x':F,'y':G};}function ie(u,v){const iG=bY,w=Li(u,!0x0,v==='fixed'),x=w[iG(0x1b1)]+u['clientTop'],y=w['left']+u[iG(0xab)],z=di(u)?Vi(u):ti(0x1),B=u['clientWidth']*z['x'],C=u['clientHeight']*z['y'],F=y*z['x'],G=x*z['y'];return{'width':B,'height':C,'x':F,'y':G};}function Ul(u,v,w){const iH=bY;let x;if(v===iH(0x2e1))x=$c(u,w);else{if(v==='document')x=qc(si(u));else{if(q(v))x=ie(v,w);else{const y=ps(u);x={'x':v['x']-y['x'],'y':v['y']-y['y'],'width':v['width'],'height':v['height']};}}}return dt(x);}function Gs(s,u){const v=ni(s);return v===u||!q(v)||Ki(v)?!0x1:$(v)['position']==='fixed'||Gs(v,u);}function te(u,v){const iI=bY,w=v['get'](u);if(w)return w;let x=gi(u,[],!0x1)['filter'](C=>q(C)&&Ti(C)!=='body'),y=null;const z=$(u)['position']==='fixed';let B=z?ni(u):u;for(;q(B)&&!Ki(B);){const C=$(B),F=cl(B);!F&&C[iI(0x2d3)]===iI(0x32a)&&(y=null),(z?!F&&!y:!F&&C['position']==='static'&&y&&(y['position']==='absolute'||y[iI(0x2d3)]==='fixed')||Ei(B)&&!F&&Gs(u,B))?x=x['filter'](G=>G!==B):y=C,B=ni(B);}return v[iI(0x26b)](u,x),x;}function le(u){const iJ=bY;let {element:v,boundary:w,rootBoundary:x,strategy:y}=u;const z=[...w==='clippingAncestors'?Yt(v)?[]:te(v,this['_c']):[][iJ(0x2ba)](w),x],B=Ul(v,z[0x0],y);let C=B['top'],F=B['right'],G=B[iJ(0x287)],H=B[iJ(0xca)];for(let J=0x1;J<z['length'];J++){const K=Ul(v,z[J],y);C=ui(K['top'],C),F=ri(K['right'],F),G=ri(K['bottom'],G),H=ui(K['left'],H);}return{'width':F-H,'height':G-C,'x':H,'y':C};}function se(s){const {width:u,height:v}=Xs(s);return{'width':u,'height':v};}function ce(u,v,w){const iK=bY,x=di(v),y=si(v),z=w===iK(0x32a),B=Li(u,!0x0,z,v);let C={'scrollLeft':0x0,'scrollTop':0x0};const F=ti(0x0);function G(){F['x']=yt(y);}if(x||!x&&!z){if((Ti(v)!==iK(0x328)||Ei(y))&&(C=Wt(v)),x){const L=Li(v,!0x0,z,v);F['x']=L['x']+v['clientLeft'],F['y']=L['y']+v['clientTop'];}else y&&G();}z&&!x&&y&&G();const H=y&&!x&&!z?us(y,C):ti(0x0),J=B['left']+C['scrollLeft']-F['x']-H['x'],K=B['top']+C['scrollTop']-F['y']-H['y'];return{'x':J,'y':K,'width':B[iK(0x34d)],'height':B['height']};}function zt(s){return $(s)['position']==='static';}function jl(s,u){const iL=bY;if(!di(s)||$(s)['position']==='fixed')return null;if(u)return u(s);let v=s[iL(0x3de)];return si(s)===v&&(v=v['ownerDocument']['body']),v;}function Ls(u,v){const w=Q(u);if(Yt(u))return w;if(!di(u)){let y=ni(u);for(;y&&!Ki(y);){if(q(y)&&!zt(y))return y;y=ni(y);}return w;}let x=jl(u,v);for(;x&&Pc(x)&&zt(x);)x=jl(x,v);return x&&Ki(x)&&zt(x)&&!cl(x)?w:x||Qc(u)||w;}const ee=async function(s){const iM=bY,u=this['getOffsetParent']||Ls,v=this[iM(0x39a)],w=await v(s['floating']);return{'reference':ce(s['reference'],await u(s[iM(0xc4)]),s[iM(0x173)]),'floating':{'x':0x0,'y':0x0,'width':w[iM(0x34d)],'height':w['height']}};};function he(s){return $(s)['direction']==='rtl';}const de={'convertOffsetParentRelativeRectToViewportRelativeRect':Ac,'getDocumentElement':si,'getClippingRect':le,'getOffsetParent':Ls,'getElementRects':ee,'getClientRects':_c,'getDimensions':se,'getScale':Vi,'isElement':q,'isRTL':he};function xs(s,t){return s['x']===t['x']&&s['y']===t['y']&&s['width']===t['width']&&s['height']===t['height'];}function me(u,v){let w=null,x;const y=si(u);function z(){var C;clearTimeout(x),(C=w)==null||C['disconnect'](),w=null;}function B(C,F){const iN=b;C===void 0x0&&(C=!0x1),F===void 0x0&&(F=0x1),z();const H=u['getBoundingClientRect'](),{left:J,top:K,width:L,height:N}=H;if(C||v(),!L||!N)return;const O=_i(K),P=_i(y['clientWidth']-(J+L)),R=_i(y['clientHeight']-(K+N)),T=_i(J),U={'rootMargin':-O+iN(0x331)+-P+'px\x20'+-R+'px\x20'+-T+'px','threshold':ui(0x0,ri(0x1,F))||0x1};let V=!0x0;function a0(a1){const iO=iN,a2=a1[0x0]['intersectionRatio'];if(a2!==F){if(!V)return B();a2?B(!0x1,a2):x=setTimeout(()=>{B(!0x1,1e-7);},0x3e8);}a2===0x1&&!xs(H,u[iO(0x2c3)]())&&B(),V=!0x1;}try{w=new IntersectionObserver(a0,{...U,'root':y['ownerDocument']});}catch{w=new IntersectionObserver(a0,U);}w['observe'](u);}return B(!0x0),z;}function Ht(u,v,w,x){const iP=bY;x===void 0x0&&(x={});const {ancestorScroll:z=!0x0,ancestorResize:B=!0x0,elementResize:C=typeof ResizeObserver=='function',layoutShift:F=typeof IntersectionObserver=='function',animationFrame:G=!0x1}=x,H=hl(u),J=z||B?[...H?gi(H):[],...v?gi(v):[]]:[];J[iP(0x3e1)](T=>{z&&T['addEventListener']('scroll',w,{'passive':!0x0}),B&&T['addEventListener']('resize',w);});const K=H&&F?me(H,w):null;let L=-0x1,N=null;C&&(N=new ResizeObserver(T=>{const iQ=iP;let [U]=T;U&&U['target']===H&&N&&v&&(N[iQ(0x33b)](v),cancelAnimationFrame(L),L=requestAnimationFrame(()=>{var V;(V=N)==null||V['observe'](v);})),w();}),H&&!G&&N['observe'](H),v&&N['observe'](v));let O,P=G?Li(u):null;G&&R();function R(){const T=Li(u);P&&!xs(P,T)&&w(),P=T,O=requestAnimationFrame(R);}return w(),()=>{const iR=iP;var T;J['forEach'](U=>{z&&U['removeEventListener']('scroll',w),B&&U['removeEventListener']('resize',w);}),K?.(),(T=N)==null||T[iR(0x2fd)](),N=null,G&&cancelAnimationFrame(O);};}const mt=Oc,Zt=Dc,dl=jc,Ze=Uc,It=(u,v,w)=>{const iS=bY,x=new Map(),y={'platform':de,...w},z={...y[iS(0x143)],'_c':x};return gc(u,v,{...y,'platform':z});};let Ie=class{constructor(u){const iT=bY;m(this,'ctx'),m(this,'enable',!0x1),m(this,'contentEl'),m(this,'floatingEl'),m(this,'arrowEl'),this[iT(0x1fa)]=u;const {TOOLTIP_BG_COLOR:v,TOOLTIP_TEXT_COLOR:w,TOOLTIP_ZINDEX:x,TOOLTIP_CUSTOM_STYLE:y,CSS_PREFIX:z}=this['ctx']['config'];this['contentEl']=document['createElement']('div'),this[iT(0x1cd)]=document['createElement']('div'),this[iT(0xdf)]=document['createElement']('div'),this[iT(0xdf)]['className']=z+'-tooltip',this['contentEl']['className']=z+iT(0xac),this['arrowEl']['className']=z+'-tooltip-arrow';const B={'display':'none','position':'absolute','background':v,'color':w,'boxSizing':'border-box','zIndex':x,'padding':'8px','borderRadius':iT(0x235),'fontSize':iT(0x28d),...y},C={'position':'absolute','width':'10px','height':'10px','background':B['background'],'backgroundColor':B['backgroundColor'],'transform':'rotate(45deg)','zIndex':B[iT(0x9f)]};Object[iT(0x1ed)](this[iT(0x1cd)][iT(0x270)],C),Object['assign'](this['floatingEl'][iT(0x270)],B),this['floatingEl']['appendChild'](this['contentEl']),this['floatingEl']['appendChild'](this[iT(0x1cd)]),this[iT(0x1fa)]['containerElement'][iT(0x2bb)](this['floatingEl']),this[iT(0x275)]();}['init'](){const iU=bY;this['floatingEl']['addEventListener'](iU(0xb0),()=>{this['hide']();}),this['ctx']['on']('mouseout',s=>{const iV=iU;this[iV(0xdf)]['contains'](s['relatedTarget'])||this[iV(0x3c2)]();}),this['ctx']['on']('onScroll',()=>{this['hide']();}),this[iU(0x1fa)]['on'](iU(0x219),()=>{this['hide']();}),this['ctx']['on']('visibleCellHoverChange',(s,t)=>{const iW=iU;this['floatingEl'][iW(0x1f8)](t['target'])||(s['ellipsis']||s['message'])&&this[iW(0x181)](s);}),this[iU(0x1fa)]['on']('visibleCellMouseleave',(s,t)=>{const iX=iU;this['floatingEl'][iX(0x1f8)](t[iX(0x86)])||this['hide']();}),this['ctx']['on']('cellHeaderMouseleave',(s,t)=>{const iY=iU;this['floatingEl'][iY(0x1f8)](t['target'])||this['hide']();}),this['ctx']['on']('cellHeaderHoverChange',(s,t)=>{this['floatingEl']['contains'](t['target'])||s['ellipsis']&&this['show'](s);}),this['ctx']['on']('cellFooterMouseleave',(s,t)=>{this['floatingEl']['contains'](t['target'])||this['hide']();}),this['ctx']['on']('cellFooterHoverChange',(s,t)=>{const iZ=iU;this['floatingEl']['contains'](t['target'])||s[iZ(0xbf)]&&this['show'](s);}),this['ctx']['on']('cellShowTooltip',(s,t)=>{this['show'](s,t);}),this['ctx']['on']('cellHideTooltip',()=>{const j0=iU;this[j0(0x3c2)]();});}['show'](u,v){const j1=bY;if(this['ctx']['contextMenuIng']||!u['overflowTooltipShow']||this['ctx']['mousedown'])return;this[j1(0xdf)]['style'][j1(0x2a7)]='block';let w=u['getText']();u[j1(0x83)]&&(w=u['message']),v&&(w=v);const x=this['ctx']['containerElement']['getBoundingClientRect']();if(!x)return;this['enable']=!0x0,this['contentEl']['style']['maxWidth']=(u['overflowTooltipMaxWidth']||0x1f4)+'px',this['contentEl'][j1(0x270)][j1(0x1ea)]='100px',this['contentEl']['style']['width']=j1(0x13d),this['contentEl'][j1(0x270)]['display']='inline-block',this['contentEl']['style']['wordBreak']=j1(0x232),this['contentEl']['style']['lineHeight']='1.5',this['contentEl']['innerText']=w;const y=u['drawX']+x['x'],z=u[j1(0x2bd)]+x['y'];It({'getBoundingClientRect'(){const j2=j1;return{'width':u['visibleWidth'],'height':u['visibleHeight'],'x':y,'y':z,'left':y,'right':y+u['visibleWidth'],'top':z,'bottom':z+u[j2(0x140)]};}},this['floatingEl'],{'placement':u['overflowTooltipPlacement'],'middleware':[Zt(),dl(),mt(0x6),Ze({'element':this['arrowEl']})]})['then'](B=>{const j3=j1,{x:C,y:F,placement:G,middlewareData:H}=B;if(Object['assign'](this['floatingEl']['style'],{'top':F+'px','left':C+'px'}),H['arrow']){const J=H['arrow'];['left','left-start','left-end']['includes'](G)?Object['assign'](this[j3(0x1cd)]['style'],{'top':J['y']+'px','bottom':'','left':'','right':j3(0x85)}):['right',j3(0x269),j3(0x16d)]['includes'](G)?Object['assign'](this['arrowEl']['style'],{'top':J['y']+'px','bottom':'','left':j3(0x85),'right':''}):['bottom','bottom-start','bottom-end']['includes'](G)?Object['assign'](this['arrowEl']['style'],{'top':'-5px','bottom':'','left':J['x']+'px','right':''}):['top',j3(0x2b2),j3(0x1a8)]['includes'](G)&&Object['assign'](this['arrowEl']['style'],{'top':'','bottom':'-5px','left':J['x']+'px','right':''});}});}['hide'](){const j4=bY;this['enable']&&(this['enable']=!0x1,this['floatingEl']['style']['display']=j4(0x25d));}[bY(0x110)](){this['contentEl']['remove'](),this['arrowEl']['remove'](),this['floatingEl']['remove']();}};class oe{constructor(s){const j5=bY;m(this,'editorEl'),m(this,'inputEl'),m(this,'enable',!0x1),m(this,'cellTarget',null),m(this,'selectorArrStr',''),m(this,j5(0x1fa)),m(this,'drawY',0x0),m(this,'drawX',0x0),m(this,j5(0xed),!0x1),this['ctx']=s,this['initTextEditor'](),this['init']();}['init'](){const j6=bY;this['ctx']['on'](j6(0x23c),()=>{const j7=j6;this[j7(0x3f3)]&&this['cellTarget']['editorType']==='text'&&this['clearEditor']();}),this['ctx']['on']('moveFocus',s=>{const j8=j6;this[j8(0x3f3)]=s,this['resetEditorStyle']();const {xArr:u,yArr:v}=this['ctx']['selector'];this['selectorArrStr']=JSON['stringify'](u)+JSON[j8(0x16f)](v),this['focusInput']();}),this['ctx']['on'](j6(0x12a),()=>{const j9=j6;this['enable']&&this[j9(0x3e4)]();}),this[j6(0x1fa)]['on']('hoverIconClick',s=>{this['editCell'](s['rowIndex'],s['colIndex']);}),this[j6(0x1fa)]['on']('keydown',u=>{const ja=j6;if(!this['ctx']['isTarget'](u)||!this[ja(0x1fa)]['focusCell']||this['ctx']['finding'])return;const {focusCell:v}=this['ctx'];if(u[ja(0x95)]==='Escape'&&this['ctx']['editing']){this['cancel']=!0x0;const {focusCell:C}=this[ja(0x1fa)];C&&(this['ctx']['emit'](ja(0x111),C),this['cellTarget']=C),this['doneEdit']();return;}if((u['altKey']||u['metaKey'])&&u['key']==='Enter'&&this['ctx']['editing']&&this['inputEl']){u['preventDefault']();const F=this[ja(0xc9)]['selectionStart'],G=this['inputEl']['value']['substring'](0x0,F),H=this['inputEl'][ja(0x121)]['substring'](F);this[ja(0xc9)][ja(0x121)]=G+'\x0a'+H,this['inputEl']['selectionStart']=this[ja(0xc9)][ja(0x3f4)]=F+0x1,this['autoSize']();return;}if(u['code']==='Tab'&&this['ctx']['editing']){if(u['preventDefault'](),this['doneEdit'](),u['shiftKey']){this['ctx']['emit']('setMoveFocus','LEFT');return;}this['ctx']['emit']('setMoveFocus','RIGHT');return;}if(u['key']===ja(0x2d4)&&this['ctx'][ja(0x1a4)]){if(u['preventDefault'](),this['doneEdit'](),u[ja(0x251)]){this['ctx']['emit'](ja(0x3b4),'TOP');return;}this['ctx']['emit'](ja(0x3b4),'BOTTOM');return;}if(u['key']==='Enter'&&!this['ctx']['editing']){u[ja(0x28b)](),this['startEdit']();return;}const w=u['key'],x=u['ctrlKey'],y=u['altKey'],z=u['shiftKey'],B=u['metaKey'];if(!(x||y||z||B||['Enter','CapsLock','Escape','Tab','Backspace','Delete','ArrowUp','ArrowDown',ja(0x2ac),ja(0x12d),'Home','End','PageUp','PageDown',ja(0x157),'F1','F2','F3','F4','F5','F6','F7','F8','F9','F10',ja(0x27d),ja(0x3e0)][ja(0x8c)](w))){if(document['activeElement']!==this['inputEl']&&v['editorType']==='text'){u['preventDefault']();return;}this['startEdit'](!0x0);}}),this['ctx']['on']('cellClick',u=>{const jb=j6;if(this['ctx']['isPointer']||!this['isInSelectorRange'](u['rowIndex'],u['colIndex']))return;const {xArr:v,yArr:w}=this['ctx']['selector'],x=JSON[jb(0x16f)](v)+JSON['stringify'](w);if(this['focusInput'](),this['selectorArrStr']===x&&this[jb(0x3f3)]){if(this['ctx'][jb(0x34f)]['ENABLE_MERGE_CELL_LINK']&&this[jb(0x1fa)]['onlyMergeCell']){this['startEdit']();return;}if(this['ctx']['selectOnlyOne']&&u['rowKey']===this['cellTarget']['rowKey']&&u['key']===this['cellTarget']['key']){this['startEdit']();return;}}if(this['selectorArrStr']=x,this['doneEdit'](),this['cellTarget']=u,this[jb(0x297)](),this['ctx']['config']['ENABLE_EDIT_SINGLE_CLICK']){if(this[jb(0x1fa)]['config'][jb(0x129)]&&this['ctx'][jb(0x188)]){this[jb(0x219)]();return;}this['ctx']['selectOnlyOne']&&this[jb(0x219)]();}});}['isInSelectorRange'](u,v){const jd=bY,{xArr:w,yArr:x}=this[jd(0x1fa)]['selector'],[y,z]=w,[B,C]=x;return!(v<y||v>z||u<B||u>C);}['initTextEditor'](){const jf=bY;this['inputEl']=document['createElement']('textarea'),this[jf(0xc9)]['id']='e-virt-table-editor-textarea',this['inputEl']['setAttribute']('rows','1'),this['inputEl']['setAttribute']('tabindex','-1'),this['inputEl']['addEventListener'](jf(0x1c8),this[jf(0x27a)]['bind'](this)),this['editorEl']=this['ctx']['editorElement'],this['inputEl']['className']='e-virt-table-editor-textarea',this['editorEl']['appendChild'](this[jf(0xc9)]),this['ctx']['containerElement']['appendChild'](this['editorEl']);}['autoSize'](){const jg=bY;if(!this['ctx']['editing'])return;const u=this['inputEl'][jg(0x121)];this['cellTarget']&&this['cellTarget']['type']==='number'&&u!==''&&(this['ctx']['emit']('cellHideTooltip'),/^-?\d+(\.\d+)?$/['test'](u)||this['ctx']['emit']('cellShowTooltip',this['cellTarget'],this['ctx']['config']['NUMBER_ERROR_TIP'])),this['inputEl']['style'][jg(0x8e)]='auto';let v=this['inputEl']['scrollHeight'],w=this[jg(0x1fa)][jg(0x328)]['visibleHeight'];v>w&&(v=w);const {stageHeight:x,footer:y,header:z,config:{SCROLLER_TRACK_SIZE:B}}=this['ctx'],C=x-y['height']-B;this[jg(0x2aa)][jg(0x270)]['bottom']='auto',this['drawY']<z['height']&&(this['editorEl']['style']['top']=z['height']-0x1+'px'),this[jg(0x2bd)]+v>C&&(this['editorEl']['style']['left']=this['drawX']-0x1+'px',this['editorEl']['style']['top']='auto',this['editorEl']['style']['bottom']=x-C+'px'),this['inputEl'][jg(0x270)]['height']=v+'px';}['startEditByInput'](u,v=!0x1){const jh=bY,w=v?null:u['getValue'](),{editorType:x}=u;if(x===jh(0x25d))return;u['update'](),this['ctx']['config']['ENABLE_MERGE_CELL_LINK']&&u[jh(0xcc)]();let {height:y,width:z,drawY:B,drawX:C}=u;this['drawX']=C,this[jh(0x2bd)]=B;const {config:{CELL_PADDING:F},header:G}=this['ctx'];let H=this['ctx']['body']['visibleHeight'];y>H&&(y=H),this['editorEl']['style']['zIndex']='100',this['editorEl']['style']['left']=this[jh(0x2f2)]-0x1+'px',this['editorEl'][jh(0x270)]['top']=this['drawY']+'px',this['editorEl']['style'][jh(0x287)]='auto',this['editorEl']['style']['maxWidth']='none',this['editorEl']['style']['maxHeight']=H+'px',['text']['includes'](x)?(this['inputEl']['style']['opacity']='1',this[jh(0xc9)][jh(0x270)]['position']='relative',this['inputEl']['style']['minWidth']=z-0x1+'px',this['inputEl']['style']['minHeight']=y-0x1+'px',this['inputEl']['style']['maxHeight']=H+'px',this[jh(0xc9)][jh(0x270)][jh(0x34d)]=z+'px',this[jh(0xc9)][jh(0x270)]['height']='auto',this['inputEl']['style']['padding']=F+'px',this['inputEl']['value']='',w!==null&&(this['inputEl']['value']=w),(this[jh(0xc9)][jh(0x1a5)]>y||this['drawY']<G['height'])&&this['autoSize']()):(this['inputEl']['style']['opacity']='0',this['inputEl']['style']['width']=jh(0x341),this[jh(0xc9)]['style']['height']='1px',this['inputEl']['style'][jh(0x2d3)]=jh(0x393),this[jh(0xc9)]['style']['left']='0px',this['inputEl']['style']['top']='0px');}[bY(0x3f7)](){const jj=bY;if(this['cellTarget']&&this[jj(0x3f3)]['editorType']==='text'){const {rowKey:u,key:v}=this[jj(0x3f3)],w=this['cellTarget']['getValue'](),x=this['inputEl']['value'];x!==w&&!(x===''&&w===null)&&!this[jj(0xed)]&&this['ctx']['setItemValueByEditor'](u,v,x,!0x0);}}[bY(0xe5)](){const jk=bY;document['activeElement']!==this['inputEl']&&this[jk(0xc9)]['focus']({'preventScroll':!0x0});}['startEdit'](s=!0x1){const jm=bY;this['cancel']=!0x1;const {ENABLE_EDIT_CLICK_SELECTOR:u}=this['ctx']['config'];if(!u)return;const v=this['ctx']['focusCell'];v&&(v[jm(0x11a)]()&&v['isHorizontalVisible']()||this['ctx']['emit']('scrollToIndex',v['rowIndex'],v['colIndex']),this['editCell'](v[jm(0x396)],v['colIndex'],s));}[bY(0x1c0)](u,v,w=!0x1){const jn=bY,x=this[jn(0x1fa)]['body']['renderRows']['find'](G=>G['rowIndex']===u);if(!x)return;const y=x['cells']['find'](G=>G[jn(0xa5)]===v);if(!y||!(y[jn(0x11a)]()&&y['isHorizontalVisible']()))return;this[jn(0x1fa)]['emit'](jn(0x111),y);const z=this['ctx']['focusCell'];if(!z||[jn(0xf3),jn(0x1c2),'selection'][jn(0x8c)](z['type'])||this['enable'])return;const {rowKey:B,key:C}=z,F=this[jn(0x1fa)]['database']['getReadonly'](B,C);z&&!F&&(this[jn(0x1ef)]=!0x0,this['ctx']['editing']=!0x0,this['cellTarget']=z,this['startEditByInput'](this['cellTarget'],w),this['ctx']['emit']('startEdit',this['cellTarget']),this['ctx'][jn(0xc8)]('draw'));}['doneEdit'](){const jo=bY;this['enable']&&(this['doneEditByInput'](),this['ctx']['emit']('cellHideTooltip'),this['ctx']['emit']('doneEdit',this['cellTarget']),this['enable']=!0x1,this[jo(0x1fa)]['editing']=!0x1,this['resetEditorStyle'](),setTimeout(()=>{this['focusInput']();},0x0),this['ctx']['emit']('draw'));}['resetEditorStyle'](){const jp=bY,s=this['cellTarget'];s&&(this['editorEl']['style']['left']=s['drawX']+'px',this['editorEl']['style'][jp(0x1b1)]=s['drawY']+'px',this['editorEl']['style']['maxWidth']='1px',this['editorEl']['style']['maxHeight']=jp(0x341),this['editorEl'][jp(0x270)]['zIndex']='-1');}['clearEditor'](){const jq=bY;this['doneEdit'](),this['cellTarget']=null,this[jq(0x3a1)]='',this['ctx']['clearSelector'](),this['ctx']['focusCell']=void 0x0,this['inputEl']['blur'](),this['ctx']['emit']('draw');}['destroy'](){const jr=bY;var s;(s=this['editorEl'])==null||s[jr(0x9c)]();}}let ne=class{constructor(s){const ju=bY;m(this,'ctx'),m(this,ju(0x2ec)),this['ctx']=s;const {EMPTY_TEXT:u,EMPTY_CUSTOM_STYLE:v}=this['ctx']['config'];this['ctx']['emptyElement']?this['emptyEl']=this['ctx']['emptyElement']:(this['emptyEl']=document['createElement'](ju(0x138)),this['emptyEl']['innerText']=u),this['emptyEl'][ju(0x7c)]='e-virt-table-empty',this[ju(0x2ec)]['style']['display']='none',this['ctx']['containerElement']['appendChild'](this[ju(0x2ec)]),this['ctx']['on']('emptyChange',({type:w,headerHeight:x,bodyHeight:y,footerHeight:z})=>{const B=x+(y+z)/0x2,C={'display':w==='empty'?'block':'none','top':B+'px',...v};Object['assign'](this['emptyEl']['style'],C);});}['destroy'](){this['emptyEl']['remove']();}};class be{constructor(s){const jv=bY;m(this,'ctx'),m(this,'observer'),this['ctx']=s,this[jv(0x275)]();}['arerMapsEqual'](u,v){const jw=bY;if(u['size']!==v['size'])return!0x1;for(let [w,x]of u)if(!v['has'](w)||v[jw(0x27f)](w)!==x)return!0x1;return!0x0;}['init'](){const jz=bY;this['observer']=new MutationObserver($t(()=>{const jy=b,s=this['ctx']['overlayerElement']['querySelectorAll']('[data-auto-height=\x22true\x22]'),u=new Map();s['forEach'](w=>{const jx=b,x=Number(w[jx(0x1c9)](jx(0xe3))),y=Number(w['getAttribute']('data-col-index'));if(isNaN(x)||isNaN(y))return;const z=w['getBoundingClientRect'](),B=x+'_'+y;u['set'](B,Math[jx(0x1ff)](z['height']));});const v=this['ctx'][jy(0x247)]['getOverlayerAutoHeightMap']();if(!this['arerMapsEqual'](v,u)){if(this['ctx']['database']['setOverlayerAutoHeightMap'](u),v['size']===0x0&&u['size']===0x0)return;this['ctx']['emit'](jy(0x1ac));}},16.67)),this[jz(0x145)]['observe'](this['ctx']['overlayerElement'],{'childList':!0x0,'subtree':!0x0,'attributes':!0x0,'characterData':!0x0}),this['ctx']['overlayerElement']['getAttribute']('data-overlayer')==='default'&&this['ctx']['on']('overlayerChange',s=>{const jA=jz,u=this['ctx']['overlayerElement'];u['replaceChildren'](),Object['assign'](u['style'],s['style']),s[jA(0x1bb)]['forEach'](v=>{const jB=jA,w=document[jB(0x177)]('div');w['className']=v['class'],Object['assign'](w[jB(0x270)],v['style']),v['views']['forEach'](x=>{const jC=jB,y=document[jC(0x177)](jC(0x138));Object['assign'](y['style'],x['style']),x['cells'][jC(0x3e1)](z=>{const B=document['createElement']('div');Object['assign'](B['style'],z['style']),Object['keys'](z['domDataset'])['forEach'](C=>{B['setAttribute'](C,z['domDataset'][C]);}),typeof z['render']=='function'&&z['render'](B,z),y['appendChild'](B);}),w['appendChild'](y);}),u[jB(0x2bb)](w);});});}['draw'](){const s=this['getContainer']();this['ctx']['emit']('overlayerChange',s);}['destroy'](){const jD=bY;this['observer']&&this['observer']['disconnect'](),this['ctx'][jD(0xc8)]('overlayerChange',{'style':{},'views':[]});}['getContainer'](){const jE=bY,u=this['getHeader'](),v=this['getBody'](),w=this['getFooter']();let x=[];const {FOOTER_FIXED:y,FOOTER_POSITION:z}=this['ctx'][jE(0x34f)];return y?z===jE(0x1b1)?x=[u,w,v]:x=[u,v,w]:x=[u,v],{'views':x};}['getHeader'](){const jF=bY,{fixedLeftWidth:u,fixedRightWidth:v,config:{SCROLLER_TRACK_SIZE:w,CSS_PREFIX:x}}=this[jF(0x1fa)],{visibleWidth:z,visibleHeight:B,renderCellHeaders:C}=this['ctx']['header'];let F=[],G=[],H=[];C['forEach'](O=>{O['render']&&(O['fixed']==='left'?G['push'](O):O['fixed']==='right'?H['push'](O):F['push'](O));});const J=v-w,K={'key':'left','style':{'position':'absolute','top':'0px','left':jF(0x3f8),'overflow':'hidden','width':u+'px','height':B+'px'},'cells':G},L={'key':jF(0x346),'style':{'position':jF(0x393),'top':'0px','left':u+'px','overflow':'hidden','width':z-u-J+0x1+'px','height':B+'px'},'cells':F},N={'key':'right','style':{'position':'absolute','top':'0px','right':'0px','overflow':'hidden','width':J+0x1+'px','height':B+'px'},'cells':H};return{'type':'header','class':x+'-overlayer-header','style':{'position':'relative','overflow':'hidden','width':z+'px','height':B+'px'},'views':[K,L,N]};}[bY(0x266)](){const jG=bY,u=[],v=[],w=[];let x=this['ctx'][jG(0x328)][jG(0x288)];this['ctx']['config']['FOOTER_FIXED']||(x=x['concat'](this[jG(0x1fa)]['footer'][jG(0x288)])),x['forEach'](O=>{const jH=jG;O[jH(0x2a3)]['forEach'](P=>{const jI=jH;P['cellType']==='footer'&&(P[jI(0x1e2)]=P['renderFooter']),P['render']&&(P['fixed']==='left'?v['push'](P):P['fixed']==='right'?w['push'](P):u['push'](P));});});const {fixedLeftWidth:z,fixedRightWidth:B,config:{SCROLLER_TRACK_SIZE:C,CSS_PREFIX:F}}=this['ctx'],{visibleWidth:G,visibleHeight:H}=this['ctx']['body'],J=B-C,K={'key':'left','style':{'position':'absolute','top':0.5+'px','left':0.5+'px','overflow':jG(0x26f),'width':z+'px','height':H+'px'},'cells':v},L={'key':jG(0x346),'style':{'position':'absolute','top':0.5+'px','left':z-0.5+'px','overflow':'hidden','width':G-z-J+'px','height':H+'px'},'cells':u},N={'key':jG(0x2b3),'style':{'position':jG(0x393),'top':'0px','right':'0px','overflow':'hidden','width':J+'px','height':H+'px'},'cells':w};return{'type':'body','class':F+jG(0x388),'style':{'position':'relative','overflow':'hidden','width':G+'px','height':H+'px'},'views':[K,L,N]};}['getFooter'](){const jJ=bY,u=[],v=[],w=[];this['ctx'][jJ(0x1de)][jJ(0x288)]['forEach'](L=>{const jK=jJ;L['cells'][jK(0x3e1)](N=>{const jL=jK;N[jL(0x22b)]==='footer'&&N['renderFooter']&&(N['render']=N['renderFooter'],N['fixed']==='left'?v['push'](N):N['fixed']==='right'?w[jL(0x1f5)](N):u[jL(0x1f5)](N));});});const {fixedLeftWidth:x,fixedRightWidth:y,config:{SCROLLER_TRACK_SIZE:z,CSS_PREFIX:B}}=this['ctx'],{visibleWidth:C,visibleHeight:F}=this['ctx']['footer'],G=y-z,H={'key':jJ(0xca),'style':{'position':'absolute','top':0.5+'px','left':0.5+'px','overflow':'hidden','width':x+'px','height':F+'px'},'cells':v},J={'key':'center','style':{'position':'absolute','top':0.5+'px','left':x-0.5+'px','overflow':'hidden','width':C-x-G+'px','height':F+'px'},'cells':u},K={'key':'right','style':{'position':'absolute','top':0.5+'px','right':0.5+'px','overflow':'hidden','width':G+'px','height':F+'px'},'cells':w};return{'type':'footer','class':B+'-overlayer-footer','style':{'position':'relative','overflow':'hidden','width':C+'px','height':F+'px'},'views':[H,J,K]};}}class El{constructor(s,u=[],v={}){const jM=bY;m(this,'container'),m(this,jM(0x277)),m(this,'onClick'),m(this,'activeSubmenus',new Set()),m(this,'boundMouseEnterHandler'),m(this,'boundMouseLeaveHandler'),m(this,'boundClickHandler'),this['container']=s,this[jM(0x277)]=u,this['onClick']=v['onClick'],this['boundMouseEnterHandler']=w=>this['handleMouseEvent'](w,'enter'),this['boundMouseLeaveHandler']=w=>this['handleMouseEvent'](w,jM(0x3ec)),this['boundClickHandler']=w=>this['handleClick'](w),this['createMenu'](),this['bindEvents']();}['createMenu'](){const jN=bY;this['container']['className']='e-virt-table-main-menu',this['container'][jN(0x270)]['display']=jN(0x23f);const s=document['createDocumentFragment']();this['menuData'][jN(0x3e1)](u=>{s['appendChild'](this['createMenuItem'](u));}),this['container']['appendChild'](s);}[bY(0xb5)](u,v=!0x1){const jO=bY;var w;const x=this[jO(0x177)]('div',v?'e-virt-table-submenu-item':jO(0x2e5));x['setAttribute'](v?jO(0x317):'data-menu',u['value']),u['disabled']&&x['classList']['add']('disabled');const y=this['createElement']('div','e-virt-table-menu-item-content');if(u['icon']){const B=this['createElement']('span','e-virt-table-menu-item-icon');B[jO(0x102)]=u['icon'],y['appendChild'](B);}else y['classList'][jO(0x1a6)](jO(0x29a));const z=this['createElement']('span',jO(0xa4));if(z['textContent']=u['label'],y['appendChild'](z),x['appendChild'](y),(w=u['children'])!=null&&w['length']){const C=this['createElement']('span','e-virt-table-menu-arrow');C['innerHTML']=ct,x['appendChild'](C);const F=this['createSubmenu'](u['children']);x['_submenu']=F,this['container'][jO(0x2bb)](F);}return x;}['createSubmenu'](s){const jP=bY,u=this['createElement']('div',jP(0x2b5));return s['forEach'](v=>{u['appendChild'](this['createMenuItem'](v,!0x0));}),u;}['createElement'](s,u=''){const v=document['createElement'](s);return u&&(v['className']=u),v;}[bY(0x337)](){const jQ=bY;this['container']['addEventListener']('mouseenter',this['boundMouseEnterHandler'],!0x0),this['container'][jQ(0x19f)]('mouseleave',this['boundMouseLeaveHandler'],!0x0),this['container']['addEventListener']('click',this['boundClickHandler']);}['handleMouseEvent'](s,u){const jR=bY;s['stopPropagation']();const v=s[jR(0x86)]['closest'](jR(0x292));v&&(this['container']['contains'](v)||v['classList']['contains']('e-virt-table-submenu-item'))&&(u==='enter'?this['handleHover'](v):this['handleLeave'](v));}[bY(0x21d)](s){const jS=bY;s['classList'][jS(0x1f8)]('e-virt-table-menu-item')&&(this['container']['querySelectorAll']('.e-virt-table-menu-item')['forEach'](v=>v[jS(0x37c)]['remove']('active')),s['classList']['contains']('disabled')||s['classList']['add']('active'));const u=s[jS(0x229)]||s[jS(0x1fb)]('.e-virt-table-submenu');u&&(this['hideSiblingSubmenus'](s),this['showSubmenu'](s,u));}[bY(0x3e5)](s){const u=s['_submenu']||s['querySelector']('.e-virt-table-submenu');setTimeout(()=>{const jT=b,v=u;v&&!v['matches'](':hover')&&!s['matches'](jT(0x3a8))&&(this['hideSubmenu'](v),s[jT(0x37c)]['contains']('e-virt-table-menu-item')&&s['classList']['remove']('active'));},0x96);}['hideSiblingSubmenus'](s){const jU=bY;let u;if(s[jU(0x37c)][jU(0x1f8)](jU(0x2e5)))u=this[jU(0x1f4)]['querySelectorAll'](jU(0x14c));else{const v=s[jU(0x9d)]('.e-virt-table-submenu');if(v)u=v['querySelectorAll']('.e-virt-table-submenu-item');else return;}u[jU(0x3e1)](w=>{w!==s&&w['_submenu']&&this['hideSubmenu'](w['_submenu']);});}async['showSubmenu'](s,u){const jV=bY;if(this['activeSubmenus']['has'](u))return;this['activeSubmenus']['add'](u),u['classList']['add'](jV(0x181));const v=Ht(s,u,async()=>{const jW=jV,w=this['container']['getBoundingClientRect'](),x=window['innerWidth'],y=u[jW(0x8f)]||0xc8,z=x-w['right'],B=w['left'],C=z>=y||z>=B?'right-start':'left-start',{x:F,y:G}=await It(s,u,{'placement':C,'middleware':[mt(0x8),Zt({'padding':0x8})]});Object['assign'](u['style'],{'left':F+'px','top':G+'px'});});u['_cleanup']=v;}[bY(0x1d9)](s){const jX=bY;if(!this['activeSubmenus'][jX(0x1bc)](s))return;this['activeSubmenus']['delete'](s),s[jX(0x37c)]['remove']('show'),this['hideAllChildSubmenus'](s);const u=s;u['_cleanup']&&(u['_cleanup'](),delete u['_cleanup']);}['hideAllChildSubmenus'](s){const jY=bY;s[jY(0x1b2)]('.e-virt-table-submenu-item')['forEach'](u=>{const jZ=jY;if(u['_submenu']){const v=u['_submenu'];if(this[jZ(0x201)]['has'](v)){this['activeSubmenus'][jZ(0x1df)](v),v['classList']['remove']('show');const w=v;w[jZ(0x3a4)]&&(w['_cleanup'](),delete w['_cleanup']),this[jZ(0x32b)](v);}}});}['handleClick'](u){const k0=bY;u['stopPropagation']();const v=u['target']['closest'](k0(0x292));if(!v||v[k0(0x37c)][k0(0x1f8)]('disabled'))return;if(v['classList'][k0(0x1f8)](k0(0x2e5))){const y=v[k0(0x229)]||v[k0(0x1fb)](k0(0x281));if(y){this[k0(0x14d)](v,y);return;}}const w=v['getAttribute'](k0(0x39c))||v?.['getAttribute']('data-submenu'),x=this[k0(0x3dd)](w||'');x&&this['onClick']&&this['onClick'](x,w||'');}['findMenuItem'](u,v=this['menuData']){const k1=bY;for(const w of v){if(w[k1(0x121)]===u)return w;if(w['children']){const x=this['findMenuItem'](u,w['children']);if(x)return x;}}return null;}['positionMenu'](s){const u={'getBoundingClientRect':()=>({'width':0x0,'height':0x0,'top':s['clientY'],'left':s['clientX'],'right':s['clientX'],'bottom':s['clientY'],'x':s['clientX'],'y':s['clientY']}),'contextElement':document['body']};Ht(u,this['container'],()=>{It(u,this['container'],{'placement':'right-start','middleware':[mt(),Zt(),dl()]})['then'](({x:v,y:w})=>{const k2=b;this[k2(0x1f4)]&&Object['assign'](this['container']['style'],{'left':v+'px','top':w+'px'});});});}['destroy'](){const k3=bY;this['container']['removeEventListener']('mouseenter',this['boundMouseEnterHandler'],!0x0),this['container'][k3(0x321)]('mouseleave',this['boundMouseLeaveHandler'],!0x0),this['container']['removeEventListener']('click',this['boundClickHandler']),this[k3(0x360)](this['container']),this['container']['style']['display']='none',this[k3(0x1f4)]['replaceChildren']();}['removeMenuItem'](s){const k4=bY,u=this['container']['querySelector'](k4(0x366)+s+'\x22]');if(!u)return!0x1;const v=u['querySelector'](k4(0x281));return v&&this['cleanupSubmenuRecursively'](v),u['remove'](),!0x0;}['removeSubMenuItem'](u){const k5=bY,v=this['container']['querySelector']('[data-submenu=\x22'+u+'\x22]');if(!v)return!0x1;const w=v['closest']('.e-virt-table-submenu'),x=v['_submenu'];if(x&&this['cleanupSubmenuRecursively'](x),v[k5(0x9c)](),w&&w['querySelectorAll']('.e-virt-table-submenu-item')['length']===0x0){const y=this['container']['querySelector']('[data-menu]');if(y&&y['_submenu']===w)this['removeMenuItem'](y[k5(0x1c9)](k5(0x39c))||'');else{const z=this['container']['querySelectorAll']('[data-menu],\x20[data-submenu]');for(const B of z)if(B['_submenu']===w){const C=B['getAttribute']('data-menu')||B[k5(0x1c9)]('data-submenu');C&&(B['hasAttribute']('data-menu')?this['removeMenuItem'](C):this[k5(0x29d)](C));break;}}}return!0x0;}['cleanupAllSubmenus'](s){s['querySelectorAll']('.e-virt-table-menu-item')['forEach'](u=>{const k6=b;u['_submenu']&&(this[k6(0x29f)](u['_submenu']),u['_submenu']=void 0x0);});}[bY(0x29f)](s){const k7=bY,u=s;u['_cleanup']&&(u['_cleanup'](),delete u['_cleanup']),s['querySelectorAll'](k7(0x22d))['forEach'](v=>{const k8=k7;v[k8(0x229)]&&this['cleanupSubmenuRecursively'](v['_submenu']);}),s[k7(0x9c)]();}}class ae{constructor(s){const k9=bY;m(this,'ctx'),m(this,k9(0x3ed)),m(this,'currentDOMTreeMenu'),m(this,'isCustom',!0x1),this['ctx']=s,this['ctx'][k9(0x296)]?(this['contextMenuEl']=this['ctx']['contextMenuElement'],this['contextMenuEl']['className']=k9(0x315),this['isCustom']=!0x0):(this['contextMenuEl']=document[k9(0x177)]('div'),this[k9(0x379)]=!0x1),this['ctx']['containerElement']['appendChild'](this['contextMenuEl']),this['init']();}['init'](){const ka=bY;this[ka(0x1fa)]['on']('outsideMousedown',()=>{const kb=ka;this[kb(0x3c2)]();}),this['ctx']['on']('cellContextMenuClick',async(u,v)=>{const kd=ka;if(this['isCustom']){this['contextMenuEl'][kd(0x270)]['display']='block',this['positionMenu'](v);return;}const {ENABLE_CONTEXT_MENU:w,CUSTOM_BODY_CONTEXT_MENU:x,CONTEXT_MENU:z,BEFORE_BODY_CONTEXT_MENU_METHOD:B}=this[kd(0x1fa)]['config'];let C=[...z,...x];if(B&&(C=await B({'list':C,'cell':u,'hide':this['hide']['bind'](this)})),!w||C['length']===0x0)return;v['preventDefault']();const {xArr:F,yArr:G}=this['ctx']['selector'],[H,J]=F,[K,L]=G,{rowIndex:N,colIndex:O}=u;N>=K&&N<=L&&O>=H&&O<=J||this['ctx'][kd(0xc8)]('setSelectorCell',u,v),this['currentDOMTreeMenu']&&this['currentDOMTreeMenu']['destroy'](),this['ctx']['contextMenuIng']=!0x0,this['currentDOMTreeMenu']=new El(this[kd(0x3ed)],C,{'onClick':(P,R)=>{const kf=kd;R==='copy'?(this['ctx']['emit']('contextMenuCopy'),this['hide']()):R==='paste'?(this['ctx'][kf(0xc8)](kf(0x1d4)),this['hide']()):R==='cut'?(this['ctx']['emit']('contextMenuCut'),this['hide']()):R==='clearSelected'?(this['ctx']['emit'](kf(0xbc)),this['hide']()):P['event']&&P[kf(0x2de)](v,{'hide':this['hide'][kf(0xd9)](this),'cell':u});}}),this['currentDOMTreeMenu'][kd(0x28c)](v);}),this['ctx']['on']('cellHeaderContextMenuClick',async(u,v)=>{const kg=ka;if(this[kg(0x379)]){this['contextMenuEl']['style']['display']='block',this['positionMenu'](v);return;}const {SELECTOR_AREA_MIN_X:w,SELECTOR_AREA_MAX_X:x,SELECTOR_AREA_MAX_X_OFFSET:z,BEFORE_HEADER_CONTEXT_MENU_METHOD:B}=this['ctx']['config'],C=w,F=x||this['ctx']['maxColIndex']-z;if(u['colIndex']<C||u[kg(0xa5)]>F)return;const {HEADER_CONTEXT_MENU:G,CUSTOM_HEADER_CONTEXT_MENU:H,ENABLE_HEADER_CONTEXT_MENU:J}=this['ctx']['config'];let K=[...G,...H];if(B&&(K=await B({'list':K,'cell':u,'hide':this['hide']['bind'](this)})),!J||K['length']===0x0)return;v['preventDefault']();const {xArr:L}=this['ctx']['selector'],[N,O]=L,{colIndex:P}=u;P>=N&&P<=O||(this['ctx']['focusCellHeader']=u,this['ctx']['emit']('selectCols',u)),this['currentDOMTreeMenu']&&this['currentDOMTreeMenu'][kg(0x110)]();const R=this['ctx'][kg(0x247)]['getColumns'](),T=K[kg(0x387)](U=>U['value']==='visible'?{...U,'children':this[kg(0x361)](R)}:U);this['ctx']['contextMenuIng']=!0x0,this['currentDOMTreeMenu']=new El(this['contextMenuEl'],T,{'onClick':(U,a0)=>{const kh=kg,{xArr:a1}=this['ctx']['selector'],[a2,a3]=a1;if(a0==='fixedLeft'||a0==='fixedRight'||a0===kh(0x1fc)){const a4=this['ctx']['header'][kh(0x202)][kh(0x36a)](a5=>a5[kh(0xa5)]>=a2&&a5[kh(0xa5)]<=a3)['filter'](a5=>a5[kh(0x190)]===0x0)['filter'](a5=>!a5['column']['fixedDisabled'])[kh(0x387)](a5=>a5['key']);this['ctx']['database']['setCustomHeaderFixedData'](a4,a0==='fixedLeft'?'left':a0==='fixedRight'?'right':''),this['hide']();}else{if(a0==='hide'){const a5=this['ctx']['header']['leafCellHeaders']['filter'](a6=>a6['colIndex']>=a2&&a6['colIndex']<=a3)['filter'](a6=>!a6['children']['length'])[kh(0x36a)](a6=>!a6['column']['hideDisabled'])['map'](a6=>a6[kh(0x17f)]);a5[kh(0xfa)]>0x0&&this['ctx']['database']['setCustomHeaderHideData'](a5,!0x0),this['hide']();}else{if(a0!=='visible'){if(a0['startsWith'](kh(0x2d5))){if(!U['key'])return;if(U[kh(0xd0)]){const a7=this[kh(0x350)](U['children']);this['ctx']['database'][kh(0x222)](a7,!0x1);}else this[kh(0x1fa)]['database']['setCustomHeaderHideData']([U['key']],!0x1);this['currentDOMTreeMenu']&&this['currentDOMTreeMenu']['removeSubMenuItem'](a0);const a6=this['ctx']['database']['getColumns']();Ci(a6)['filter'](a8=>a8['hide'])['length']===0x0&&this['hide']();}else a0==='resetHeader'?(this['ctx']['database']['resetCustomHeader'](),this[kh(0x3c2)]()):U['event']&&U['event'](v,{'hide':this['hide']['bind'](this),'cell':u});}}}}}),this['positionMenu'](v);}),this['ctx']['on']('click',()=>{this['hide']();}),this[ka(0x1fa)]['on']('onScroll',this['hide']['bind'](this)),this['ctx']['on']('resize',this[ka(0x3c2)]['bind'](this));}['positionMenu'](s){const u={'getBoundingClientRect':()=>({'width':0x0,'height':0x0,'top':s['clientY'],'left':s['clientX'],'right':s['clientX'],'bottom':s['clientY'],'x':s['clientX'],'y':s['clientY']}),'contextElement':document['body']};Ht(u,this['contextMenuEl'],()=>{It(u,this['contextMenuEl'],{'placement':'right-start','middleware':[mt(),Zt(),dl()]})['then'](({x:v,y:w})=>{const kj=b;this[kj(0x3ed)]&&Object['assign'](this[kj(0x3ed)]['style'],{'left':v+'px','top':w+'px'});});});}['filterColumns'](u){const kk=bY,v=[];for(const w of u)if(w['children']&&w['children']['length']>0x0){const x=this[kk(0x361)](w[kk(0xd0)]);x[kk(0xfa)]>0x0&&v['push']({'label':w[kk(0x274)],'key':w['key'],'value':kk(0x2d5)+w[kk(0x17f)],'children':x});}else w[kk(0x3c2)]&&v['push']({'label':w['title'],'value':'visible_'+w[kk(0x17f)],'key':w['key']});return v;}['getLeafKeys'](s){const km=bY;return s['reduce']((u,v)=>(!v[km(0xd0)]||v['children']['length']===0x0?u['push'](String(v[km(0x17f)])):u['push'](...this['getLeafKeys'](v['children'])),u),[]);}['hide'](){const kn=bY;this['currentDOMTreeMenu']&&(this[kn(0x340)]['destroy'](),this[kn(0x340)]=void 0x0),this['contextMenuEl']['style']['display']='none',this['ctx'][kn(0x1e7)]=!0x1;}['destroy'](){var s;this['hide'](),(s=this['contextMenuEl'])==null||s['remove']();}}class Ye{constructor(u){const ko=bY;if(m(this,'ctx'),m(this,'loadingEl'),this['ctx']=u,this['ctx']['loadingElement'])this['loadingEl']=this['ctx']['loadingElement'];else{this['loadingEl']=document['createElement']('div');const v=document[ko(0x177)](ko(0x138));v[ko(0x7c)]='e-virt-table-loading-spinner';const w=this['ctx']['icons']['getSvg']('loading');if(w){const y=new DOMParser()['parseFromString'](w['svg'],ko(0x37b))['documentElement'];v['appendChild'](y);}const x=document['createElement']('p');x['className']='e-virt-table-loading-text',x[ko(0x3bd)]=this[ko(0x1fa)]['config']['LOADING_TEXT'],v['appendChild'](x),this['loadingEl'][ko(0x2bb)](v);}this[ko(0x1d0)]['className']='e-virt-table-loading',this['loadingEl'][ko(0x270)]['display']='none',this['ctx']['containerElement'][ko(0x2bb)](this['loadingEl']);}[bY(0x181)](){const kp=bY;this[kp(0x1d0)][kp(0x270)]['display']=kp(0x330);}['hide'](){this['loadingEl']['style']['display']='none';}[bY(0x110)](){const kq=bY;this[kq(0x1d0)]['remove']();}}class We{constructor(s){const kr=bY;m(this,'ctx'),m(this,'container'),m(this,kr(0x1c8)),m(this,'prevBtn'),m(this,'nextBtn'),m(this,'closeBtn'),m(this,'countEl'),m(this,'loadingEl'),m(this,'isVisible',!0x1),m(this,'searchResults',[]),m(this,'currentIndex',-0x1),m(this,'searchData',[]),m(this,'isComposing',!0x1),this['ctx']=s,this['container']=this['createContainer'](),this['ctx']['containerElement']['appendChild'](this['container']),this['bindEvents'](),this[kr(0x1fa)]['on'](kr(0x383),u=>{const ks=kr;if(this['ctx'][ks(0x34f)]['ENABLE_FINDER']&&!this[ks(0x1fa)]['editing']){if((u[ks(0x29c)]||u['metaKey'])&&u['code']==='KeyF'){u[ks(0x28b)](),this['show']();return;}if(this['ctx']['finding']){if(u['code']==='Escape'){u[ks(0x28b)](),this['hide']();return;}if(u['code']==='ArrowUp'||u[ks(0x251)]&&u['key']==='Enter'){u['preventDefault'](),this[ks(0x323)]();return;}if(u['code']==='ArrowDown'||u['key']==='Enter'){u['preventDefault'](),this['navigateNext']();return;}}}}),this['ctx']['on']('setSelector',()=>{this['hide']();}),this['ctx']['on']('outsideMousedown',()=>{const ku=kr;this[ku(0x3c2)]();});}async['initSearchData'](){this['showLoading'](),this['searchData']=[],setTimeout(()=>{const kv=b,{allCellHeaders:u}=this['ctx']['header'];for(let x=0x0;x<u['length'];x++){const y=u[x];y&&[kv(0x11e),'number']['includes'](typeof y['text'])&&this['searchData'][kv(0x1f5)]({'rowIndex':0x0,'colIndex':y[kv(0xa5)],'text':''+y['text'],'type':'header','colKey':y['key']});}const {maxColIndex:v,maxRowIndex:w}=this['ctx'];for(let z=0x0;z<=w;z++)for(let B=0x0;B<=v;B++){const C=this[kv(0x1fa)]['database'][kv(0x2f8)](z,B,!0x1),F=C?.['getText']();['string',kv(0x186)]['includes'](typeof F)&&this['searchData']['push']({'rowIndex':z,'colIndex':B,'text':''+F,'type':'body'});}this['hideLoading']();},0x0);}[bY(0x18a)](){const kw=bY,u=document['createElement']('div');u['className']='e-virt-table-finder-bar';const v=document['createElement']('div');v[kw(0x7c)]='e-virt-table-finder-bar-input-wrapper',this['input']=document[kw(0x177)]('input'),this['input']['type']='text',this[kw(0x1c8)]['className']='e-virt-table-finder-bar-input',this['input']['placeholder']='',v[kw(0x2bb)](this[kw(0x1c8)]),this['loadingEl']=document[kw(0x177)]('div'),this['loadingEl']['className']='e-virt-table-finder-bar-loading';const w=bs;this['loadingEl']['innerHTML']=w,v['appendChild'](this['loadingEl']),this['countEl']=document['createElement']('span'),this['countEl']['className']='e-virt-table-finder-bar-count';const x=document[kw(0x177)]('div');return x['className']='e-virt-table-finder-bar-nav',this['prevBtn']=document['createElement']('button'),this[kw(0x2fa)]['className']='e-virt-table-finder-bar-nav-btn\x20prev-btn',this['prevBtn']['innerHTML']=ct,this['nextBtn']=document['createElement']('button'),this['nextBtn']['className']='e-virt-table-finder-bar-nav-btn\x20next-btn',this['nextBtn'][kw(0x102)]=ct,x[kw(0x2bb)](this['prevBtn']),x['appendChild'](this['nextBtn']),this['closeBtn']=document['createElement']('button'),this['closeBtn']['className']='e-virt-table-finder-bar-nav-btn\x20close-btn',this['closeBtn']['innerHTML']='×',u['appendChild'](v),u['appendChild'](this['countEl']),u['appendChild'](x),u['appendChild'](this['closeBtn']),u;}['bindEvents'](){const kx=bY;this[kx(0x1c8)]['addEventListener'](kx(0x1c8),()=>{const ky=kx;this['isComposing']||this[ky(0x11f)]();}),this['input']['addEventListener']('compositionstart',()=>{this['isComposing']=!0x0;}),this['input']['addEventListener']('compositionend',()=>{this['isComposing']=!0x1,this['performSearch']();}),this['prevBtn']['addEventListener']('click',()=>{this['navigatePrevious']();}),this['nextBtn']['addEventListener'](kx(0x3dc),()=>{this['navigateNext']();}),this['closeBtn'][kx(0x19f)]('click',()=>{const kz=kx;this[kz(0x3c2)]();});}['performSearch'](){const kA=bY,s=this['input']['value']['trim']();if(this['searchResults']=[],this['currentIndex']=-0x1,!s){this['cearFinderBar'](),this['updateCount']();return;}this[kA(0x392)](),setTimeout(()=>{const kB=kA;this['searchResults']=this['searchData']['filter'](u=>u['text']['toLowerCase']()['includes'](s['toLowerCase']())),this[kB(0x21a)]['length']>0x0?(this['currentIndex']=0x0,this['scrollToCurrentResult']()):this['cearFinderBar'](),this['updateCount'](),this['hideLoading']();},0x0);}['scrollToCurrentResult'](){const kC=bY;if(this['currentIndex']<0x0||this['currentIndex']>=this['searchResults']['length'])return;const s=this['searchResults'][this['currentIndex']];this['ctx'][kC(0x175)]=s;const {rowIndex:u,colIndex:v}=s;this['ctx']['emit'](kC(0x3cd),u,v);}['navigateNext'](){const kD=bY;this['searchResults']['length']!==0x0&&(this['currentIndex']=(this['currentIndex']+0x1)%this[kD(0x21a)]['length'],this['scrollToCurrentResult'](),this['updateCount']());}['navigatePrevious'](){const kE=bY;this[kE(0x21a)]['length']!==0x0&&(this['currentIndex']=this['currentIndex']<=0x0?this['searchResults']['length']-0x1:this['currentIndex']-0x1,this['scrollToCurrentResult'](),this['updateCount']());}['updateCount'](){const kF=bY;if(this[kF(0x21a)]['length']===0x0)this['input']['value']['trim']()?(this['countEl'][kF(0x36e)]='0/0',this['countEl']['classList']['add']('no-results')):(this['countEl']['textContent']='',this['countEl'][kF(0x37c)]['remove']('no-results'));else{const s=this['currentIndex']+0x1,u=this['searchResults']['length'];this['countEl']['textContent']=s+'/'+u,this[kF(0x1b0)]['classList']['remove']('no-results');}}[bY(0x181)](){const kG=bY;this['isVisible']||(this['isVisible']=!0x0,this['ctx']['finding']=!0x0,this[kG(0x1f4)]['classList'][kG(0x1a6)]('show'),this['input']['focus'](),this['initSearchData']());}['showLoading'](){const kH=bY;var s;this['loadingEl']['classList']['add'](kH(0x181)),(s=this['loadingEl'][kH(0x112)])==null||s['classList'][kH(0x1a6)]('loading'),this['input']['readOnly']=!0x0;}['hideLoading'](){const kI=bY;var s;this['loadingEl'][kI(0x37c)][kI(0x9c)]('show'),(s=this['loadingEl'][kI(0x112)])==null||s['classList']['remove']('loading'),this['input'][kI(0x246)]=!0x1;}['cearFinderBar'](){this['ctx']['finderBar']={'rowIndex':-0x1,'colIndex':-0x1,'text':'','type':'header'},this['ctx']['emit']('draw');}['hide'](){const kJ=bY;this['isVisible']&&(this['isVisible']=!0x1,this['container'][kJ(0x37c)]['remove']('show'),this['ctx']['finding']=!0x1,this[kJ(0x1c8)][kJ(0x121)]='',this['searchResults']=[],this[kJ(0x3cf)]=[],this[kJ(0x237)]=-0x1,this['hideLoading'](),this['ctx']['finderBar']={'rowIndex':-0x1,'colIndex':-0x1,'text':'','type':'header'},this['updateCount'](),this['ctx']['emit']('draw'));}[bY(0x110)](){this['hide'](),this['container']['remove']();}}class ye{constructor(u,v){const kK=bY;m(this,kK(0x2db)),m(this,'scroller'),m(this,'header'),m(this,'body'),m(this,kK(0x1de)),m(this,'selector'),m(this,'autofill'),m(this,'tooltip'),m(this,'editor'),m(this,'empty'),m(this,'overlayer'),m(this,'contextMenu'),m(this,'loading'),m(this,'finderBar'),m(this,'animationFrameId'),m(this,kK(0x1fa)),this['options']=v;const {overlayerElement:w,editorElement:x,emptyElement:y,contextMenuElement:z}=this[kK(0x2db)],B=this['createContainer'](u,w,x,y,z);this['ctx']=new Xc(B,this['options']),this['header']=new Gc(this[kK(0x1fa)]),this['footer']=new xc(this[kK(0x1fa)]),this[kK(0x328)]=new Lc(this[kK(0x1fa)]),this['scroller']=new pc(this['ctx']),this['selector']=new Vc(this['ctx']),this['autofill']=new rc(this['ctx']),this['tooltip']=new Ie(this['ctx']),this['empty']=new ne(this[kK(0x1fa)]),this['editor']=new oe(this['ctx']),this['overlayer']=new be(this[kK(0x1fa)]),this['contextMenu']=new ae(this['ctx']),this['loading']=new Ye(this['ctx']),this[kK(0x175)]=new We(this[kK(0x1fa)]),this['ctx']['on']('draw',()=>{this['draw']();}),this['ctx']['on'](kK(0x30c),()=>{this['draw'](!0x0);}),this['draw']();}['createContainer'](u,v,w,x,y){const kL=bY;u['className']='e-virt-table-container';const z=document['createElement']('div'),B=document['createElement']('canvas'),C=v||document['createElement']('div');z['className']='e-virt-table-stage',u['tabIndex']=0x0,B['className']='e-virt-table-canvas',C[kL(0x7c)]=kL(0x19e),C['setAttribute']('data-overlayer',v?'custom':'default');const F=w||document['createElement']('div');F['className']='e-virt-table-editor';const G=x,H=y;return z['appendChild'](B),z[kL(0x2bb)](C),u['appendChild'](z),{'containerElement':u,'stageElement':z,'canvasElement':B,'overlayerElement':C,'editorElement':F,'emptyElement':G,'contextMenuElement':H};}['doDraw'](s=!0x1){const kM=bY;this['header']['update'](),this['footer']['update'](),this['body']['update'](),this['ctx'][kM(0x240)]['clear'](),this[kM(0x328)]['draw'](),this['footer']['draw'](),this['header']['draw'](),this['scroller']['draw'](),s||this['overlayer']['draw']();}['draw'](s=!0x1){this['animationFrameId']&&cancelAnimationFrame(this['animationFrameId']),this['animationFrameId']=requestAnimationFrame(()=>{const kN=b;this['doDraw'](s),this['body'][kN(0x384)]()&&this['doDraw'](s);});}['loadConfig'](s){const kO=bY;this[kO(0x1fa)]['config']['init'](s),this['ctx']['database']['init'](!0x1),this['header'][kO(0x275)](),this[kO(0x1fa)][kO(0xc8)]('draw');}['loadColumns'](s){const kP=bY;this['editor']['doneEdit'](),this['ctx']['database']['setColumns'](s),this[kP(0x268)]['init'](),this['ctx']['emit']('draw');}['loadData'](s){this['editor']['doneEdit'](),this['ctx']['database']['setData'](s),this['header']['init'](),this['tooltip']['hide'](),this['ctx']['emit']('draw');}['loadFooterData'](s){const kQ=bY;this[kQ(0x1fa)][kQ(0x247)]['setFooterData'](s),this['ctx']['emit']('draw');}[bY(0x3ab)](s,u=!0x0){const kR=bY;this[kR(0x1fa)]['database']['setCustomHeader'](s,u),this[kR(0x268)]['init'](),this['ctx']['emit']('draw');}['getCustomHeader'](){const kS=bY;return this['header'][kS(0x28f)]();}[bY(0x2a6)](s,u=!0x0){const kT=bY;this['ctx']['database'][kT(0x222)](s,!u),this[kT(0x268)]['init'](),this['ctx']['emit'](kT(0x1ac));}[bY(0x37f)](s,u){const kU=bY;this['ctx']['database'][kU(0x2f4)](s,u),this['header']['init'](),this['ctx']['emit']('draw');}['setLoading'](s){const kV=bY;this['ctx']['loading']=s,s?this[kV(0x23b)][kV(0x181)]():this[kV(0x23b)]['hide']();}['on'](s,u){this['ctx']['on'](s,u);}['emit'](s,...u){this['ctx']['emit'](s,...u);}[bY(0x1db)](s,u){const kW=bY;this['ctx'][kW(0x1db)](s,u);}['filterMethod'](s){const kX=bY;this['ctx']['database']['setFilterMethod'](s),this[kX(0x1fa)]['database']['init'](!0x1),this['header']['init'](),this[kX(0x1fa)]['emit']('draw');}['editCell'](s,u){const kY=bY;this['editor'][kY(0x1c0)](s,u);}['setItemValue'](u,v,w,x=!0x0,y=!0x0,z=!0x1){this['ctx']['database']['setItemValue'](u,v,w,x,y,z);}['batchSetItemValue'](s,u=!0x0){this['ctx']['database']['batchSetItemValue'](s,u);}[bY(0x2f6)](u,v,w,x=!0x0,y=!0x0){this['ctx']['setItemValueByEditor'](u,v,w,x,y),this['editor']['doneEdit']();}['clearEditableData'](s=null){const kZ=bY,u=[0x0,this['ctx']['maxColIndex']],v=[0x0,this[kZ(0x1fa)][kZ(0x149)]];return this['selector']['clearSelectedData'](u,v,!0x1,s);}[bY(0x24d)](){this['editor']['clearEditor']();}['doLayout'](){this['ctx']['emit']('draw');}['getChangedData'](){const l0=bY;return this['ctx'][l0(0x247)]['getChangedData']();}[bY(0x3d7)](){return this['ctx']['database']['getChangedRows']();}[bY(0x301)](s){const l1=bY;this['ctx'][l1(0x378)]=this['ctx']['database']['getVirtualBodyCell'](s,0x0),this['ctx']['emit'](l1(0x1ac));}['setCurrentRow'](s){const l2=bY,u=this['ctx']['database']['getColumnByColIndex'](0x0);u&&(this['ctx']['currentCell']=this['ctx']['database']['getVirtualBodyCellByKey'](s,u['key']),this[l2(0x1fa)]['emit']('draw'));}[bY(0x98)](){const l3=bY,s=this[l3(0x1fa)]['currentCell'];return s?{'row':s['row'],'rowIndex':s[l3(0x396)],'rowKey':s['rowKey']}:void 0x0;}['clearValidate'](){const l4=bY;this[l4(0x1fa)]['database'][l4(0x22c)](),this['ctx']['emit']('draw');}[bY(0xf4)](s,u=!0x0){return new Promise(async(v,w)=>{const l5=b;let x=[];for(let y=0x0;y<s['length'];y++){const {rowKey:z,key:B}=s[y],C=await this['ctx']['database'][l5(0x2be)](z,B);Array['isArray'](C)&&C['length']&&x[l5(0x1f5)](C);}if(x[l5(0xfa)]){if(w(x),u){const [F]=x;if(Array['isArray'](F)&&F['length']){const [G]=F,{rowKey:H,key:J}=G;this['scrollToRowkey'](H),this[l5(0x25a)](J);}}this['ctx']['emit']('draw');}else v([]),this['ctx']['emit']('draw');});}async[bY(0x153)](s=!0x0){return new Promise(async(u,v)=>{const l6=b;try{const w=await this['getValidations']();u(w);}catch(x){if(s&&Array['isArray'](x)&&x['length']){const [y]=x;if(Array['isArray'](y)&&y['length']){const [z]=y,{rowKey:B,key:C}=z,F=this['ctx'][l6(0x247)]['getRowForRowKey'](B);if(F){const {parentRowKeys:G=[]}=F;G&&G['length']&&this['setExpandRowKeys'](G,!0x0);}this['scrollToRowkey'](B),this[l6(0x25a)](C);}}v(x);}});}['setValidations'](u){const l7=bY;if(u['forEach'](v=>{const {rowIndex:w,key:x,message:y,rowKey:z}=v;if(w!==void 0x0&&z===void 0x0){const B=this['ctx']['database']['getRowKeyForRowIndex'](w);this['ctx']['database']['setValidationErrorByRowKey'](B,x,y);}z&&this['ctx']['database']['setValidationErrorByRowKey'](z,x,y);}),u&&Array[l7(0x1b4)](u)&&u[l7(0xfa)]){const [v]=u;if(v&&v['rowKey'])this['scrollToRowkey'](v['rowKey']),this['scrollToColkey'](v['key']);else{if(v&&v[l7(0x396)]!==void 0x0&&v['rowIndex']>=0x0&&v['key']){const {rowIndex:w,key:x}=v;this[l7(0x3e3)](w),this['scrollToColkey'](x);}}}}['getValidations'](){const l8=bY;return this['ctx'][l8(0x34f)][l8(0x25b)]?new Promise(s=>{s([]);}):new Promise(async(u,v)=>{const l9=l8,w=this[l9(0x1fa)][l9(0x247)]['getAllRowsData'](),x=this['ctx']['header']['leafCellHeaders'];let y=[];for(let z=0x0;z<w['length'];z++)for(let B=0x0;B<x[l9(0xfa)];B++){const C=this['ctx'][l9(0x247)]['getRowKeyByItem'](w[z]),F=x[B]['key'],G=await this['ctx']['database'][l9(0x2be)](C,F);Array['isArray'](G)&&G['length']&&y[l9(0x1f5)](G);}y['length']?(v(y),this['ctx'][l9(0xc8)]('draw')):(u([]),this['ctx']['emit']('draw'));});}[bY(0xe4)](){return this['ctx']['database']['hasValidationError']();}['scrollTo'](s,u){const la=bY;this['scroller'][la(0x203)](s,u);}['scrollXTo'](s){this['scroller']['setScrollX'](s);}[bY(0x25a)](s){const lb=bY;this[lb(0x10d)]['scrollToColkey'](s);}['scrollToRowkey'](s){const ld=bY;this[ld(0x10d)]['scrollToRowKey'](s);}['scrollToColIndex'](s){this['scroller']['scrollToColIndex'](s);}['scrollToRowIndex'](s){this['scroller']['scrollToRowIndex'](s);}[bY(0x308)](s){this['scroller']['setScrollY'](s);}['setExpandRowKeys'](s,u=!0x0){this['ctx']['database']['setExpandRowKeys'](s,u);}['getExpandRowKeys'](){return this['ctx']['database']['getExpandRowKeys']();}['clearSelection'](){const lf=bY;this['ctx']['database']['clearSelection'](),this['ctx']['emit'](lf(0x1ac));}['toggleRowSelection'](s){const lg=bY,u=this['ctx']['database']['getRowKeyByItem'](s);this[lg(0x1fa)]['database'][lg(0x309)](u),this['ctx']['emit']('draw');}['setSelectionByRows'](s,u=!0x0){const lk=bY;s['forEach'](v=>{const lj=b,w=this[lj(0x1fa)]['database']['getRowKeyByItem'](v);this['ctx']['database']['setRowSelection'](w,u,!0x1);}),this[lk(0x1fa)]['emit'](lk(0x347),this['getSelectionRows']()),this[lk(0x1fa)]['emit']('draw');}[bY(0x261)](s,u=!0x0){const lm=bY;s['forEach'](v=>{this['ctx']['database']['setRowSelection'](v,u,!0x1);}),this[lm(0x1fa)]['emit']('selectionChange',this[lm(0xb8)]()),this['ctx'][lm(0xc8)]('draw');}['toggleAllSelection'](){this['ctx']['database']['toggleAllSelection'](),this['ctx']['emit']('draw');}['toggleRowExpand'](s,u){const ln=bY;this['ctx'][ln(0x247)]['expandItem'](s,u),this[ln(0x1fa)][ln(0xc8)](ln(0x1ac));}['toggleExpandAll'](s){const lo=bY;this['ctx']['database']['expandAll'](s),this['ctx'][lo(0xc8)]('draw');}['getSelectionRows'](){const lp=bY;return this['ctx']['database'][lp(0xb8)]();}['getPositionForRowIndex'](s){const lq=bY;return this['ctx'][lq(0x247)]['getPositionForRowIndex'](s);}['getCellValue'](s,u){return this['ctx']['database']['getItemValue'](s,u);}[bY(0x189)](s,u){const lr=bY;return this['ctx'][lr(0x247)]['getItemValueForRowIndexAndColIndex'](s,u);}['clearSort'](){const lu=bY;this['ctx']['database'][lu(0x2e2)]();}['contextMenuHide'](){this['contextMenu']['hide']();}['getUtils'](){return{'mergeColCell':dc,'mergeRowCell':hc,'getSpanArrByRow':Is,'getSpanObjByColumn':os};}['getColumnByKey'](s){var u;return(u=this['ctx']['database']['getColumnByKey'](s))==null?void 0x0:u['column'];}['clearChangeData'](){this['ctx']['database']['clearChangeData'](),this['ctx']['emit']('draw');}[bY(0x1ca)](s,u){const lv=bY;return this['ctx'][lv(0x247)][lv(0x1ca)](s,u);}['destroy'](){const lw=bY;this['overlayer']['destroy'](),this['empty']['destroy'](),this['editor'][lw(0x110)](),this['tooltip']['destroy'](),this[lw(0x35a)]['destroy'](),this[lw(0x16a)]['destroy'](),this['contextMenu'][lw(0x110)](),this['loading'][lw(0x110)](),this['finderBar'][lw(0x110)](),this[lw(0x1fa)]['destroy'](),this['ctx']['containerElement']['remove']();}}const Vs='KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiOy8qISB4bHN4LmpzIChDKSAyMDEzLXByZXNlbnQgU2hlZXRKUyAtLSBodHRwOi8vc2hlZXRqcy5jb20gKi92YXIgSHI9MTIwMCxudCxlYz1bODc0LDkzMiw5MzYsOTQ5LDk1MCwxMjUwLDEyNTEsMTI1MiwxMjUzLDEyNTQsMTI1NSwxMjU2LDEyNTcsMTI1OCwxZTRdLEcwPXswOjEyNTIsMTo2NTAwMSwyOjY1MDAxLDc3OjFlNCwxMjg6OTMyLDEyOTo5NDksMTMwOjEzNjEsMTM0OjkzNiwxMzY6OTUwLDE2MToxMjUzLDE2MjoxMjU0LDE2MzoxMjU4LDE3NzoxMjU1LDE3ODoxMjU2LDE4NjoxMjU3LDIwNDoxMjUxLDIyMjo4NzQsMjM4OjEyNTAsMjU1OjEyNTIsNjk6Njk2OX0sWDA9ZnVuY3Rpb24oZSl7ZWMuaW5kZXhPZihlKSE9LTEmJihHMFswXT1lKX07ZnVuY3Rpb24gcmMoKXtYMCgxMjUyKX12YXIgWXI9ZnVuY3Rpb24oZSl7SHI9ZSxYMChlKX07ZnVuY3Rpb24gVm4oKXtZcigxMjAwKSxyYygpfWZ1bmN0aW9uIEduKGUpe2Zvcih2YXIgYT1bXSxyPTAsdD1lLmxlbmd0aDtyPHQ7KytyKWFbcl09ZS5jaGFyQ29kZUF0KHIpO3JldHVybiBhfWZ1bmN0aW9uIFhuKGUpe2Zvcih2YXIgYT1bXSxyPTA7cjxlLmxlbmd0aD4+MTsrK3IpYVtyXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGUuY2hhckNvZGVBdCgyKnIpKyhlLmNoYXJDb2RlQXQoMipyKzEpPDw4KSk7cmV0dXJuIGEuam9pbigiIil9ZnVuY3Rpb24gYWMoZSl7Zm9yKHZhciBhPVtdLHI9MDtyPGUubGVuZ3RoPj4xOysrcilhW3JdPVN0cmluZy5mcm9tQ2hhckNvZGUoZVsyKnJdKyhlWzIqcisxXTw8OCkpO3JldHVybiBhLmpvaW4oIiIpfWZ1bmN0aW9uIHpuKGUpe2Zvcih2YXIgYT1bXSxyPTA7cjxlLmxlbmd0aD4+MTsrK3IpYVtyXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGUuY2hhckNvZGVBdCgyKnIrMSkrKGUuY2hhckNvZGVBdCgyKnIpPDw4KSk7cmV0dXJuIGEuam9pbigiIil9dmFyIFR0PWZ1bmN0aW9uKGUpe3ZhciBhPWUuY2hhckNvZGVBdCgwKSxyPWUuY2hhckNvZGVBdCgxKTtyZXR1cm4gYT09MjU1JiZyPT0yNTQ/WG4oZS5zbGljZSgyKSk6YT09MjU0JiZyPT0yNTU/em4oZS5zbGljZSgyKSk6YT09NjUyNzk/ZS5zbGljZSgxKTplfSxuMD1mdW5jdGlvbihhKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShhKX0sJG49ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoYSl9LHRjPW51bGwsV3I9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89IjtmdW5jdGlvbiBLbihlKXtmb3IodmFyIGE9IiIscj0wLHQ9MCxuPTAsaT0wLGY9MCxzPTAsYz0wLG89MDtvPGUubGVuZ3RoOylyPWUuY2hhckNvZGVBdChvKyspLGk9cj4+Mix0PWUuY2hhckNvZGVBdChvKyspLGY9KHImMyk8PDR8dD4+NCxuPWUuY2hhckNvZGVBdChvKyspLHM9KHQmMTUpPDwyfG4+PjYsYz1uJjYzLGlzTmFOKHQpP3M9Yz02NDppc05hTihuKSYmKGM9NjQpLGErPVdyLmNoYXJBdChpKStXci5jaGFyQXQoZikrV3IuY2hhckF0KHMpK1dyLmNoYXJBdChjKTtyZXR1cm4gYX1mdW5jdGlvbiB6MChlKXtmb3IodmFyIGE9IiIscj0wLHQ9MCxuPTAsaT0wLGY9MCxzPTAsYz0wLG89MDtvPGUubGVuZ3RoOylyPWVbbysrXSxpPXI+PjIsdD1lW28rK10sZj0ociYzKTw8NHx0Pj40LG49ZVtvKytdLHM9KHQmMTUpPDwyfG4+PjYsYz1uJjYzLGlzTmFOKHQpP3M9Yz02NDppc05hTihuKSYmKGM9NjQpLGErPVdyLmNoYXJBdChpKStXci5jaGFyQXQoZikrV3IuY2hhckF0KHMpK1dyLmNoYXJBdChjKTtyZXR1cm4gYX1mdW5jdGlvbiBJcihlKXt2YXIgYT0iIixyPTAsdD0wLG49MCxpPTAsZj0wLHM9MCxjPTA7aWYoZS5zbGljZSgwLDUpPT0iZGF0YToiKXt2YXIgbz1lLnNsaWNlKDAsMTAyNCkuaW5kZXhPZigiO2Jhc2U2NCwiKTtvPi0xJiYoZT1lLnNsaWNlKG8rOCkpfWU9ZS5yZXBsYWNlKC9bXlx3XCtcL1w9XS9nLCIiKTtmb3IodmFyIG89MDtvPGUubGVuZ3RoOylpPVdyLmluZGV4T2YoZS5jaGFyQXQobysrKSksZj1Xci5pbmRleE9mKGUuY2hhckF0KG8rKykpLHI9aTw8MnxmPj40LGErPVN0cmluZy5mcm9tQ2hhckNvZGUocikscz1Xci5pbmRleE9mKGUuY2hhckF0KG8rKykpLHQ9KGYmMTUpPDw0fHM+PjIscyE9PTY0JiYoYSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0KSksYz1Xci5pbmRleE9mKGUuY2hhckF0KG8rKykpLG49KHMmMyk8PDZ8YyxjIT09NjQmJihhKz1TdHJpbmcuZnJvbUNoYXJDb2RlKG4pKTtyZXR1cm4gYX12YXIgTmU9ZnVuY3Rpb24oKXtyZXR1cm4gdHlwZW9mIEJ1ZmZlcjwidSImJnR5cGVvZiBwcm9jZXNzPCJ1IiYmdHlwZW9mIHByb2Nlc3MudmVyc2lvbnM8InUiJiYhIXByb2Nlc3MudmVyc2lvbnMubm9kZX0oKSxFYT1mdW5jdGlvbigpe2lmKHR5cGVvZiBCdWZmZXI8InUiKXt2YXIgZT0hQnVmZmVyLmZyb207aWYoIWUpdHJ5e0J1ZmZlci5mcm9tKCJmb28iLCJ1dGY4Iil9Y2F0Y2h7ZT0hMH1yZXR1cm4gZT9mdW5jdGlvbihhLHIpe3JldHVybiByP25ldyBCdWZmZXIoYSxyKTpuZXcgQnVmZmVyKGEpfTpCdWZmZXIuZnJvbS5iaW5kKEJ1ZmZlcil9cmV0dXJuIGZ1bmN0aW9uKCl7fX0oKSxFdD1mdW5jdGlvbigpe2lmKHR5cGVvZiBCdWZmZXI+InUiKXJldHVybiExO3ZhciBlPUVhKFs2NSwwXSk7aWYoIWUpcmV0dXJuITE7dmFyIGE9ZS50b1N0cmluZygidXRmMTZsZSIpO3JldHVybiBhLmxlbmd0aD09MX0oKTtmdW5jdGlvbiBBYShlKXtyZXR1cm4gTmU/QnVmZmVyLmFsbG9jP0J1ZmZlci5hbGxvYyhlKTpuZXcgQnVmZmVyKGUpOnR5cGVvZiBVaW50OEFycmF5PCJ1Ij9uZXcgVWludDhBcnJheShlKTpuZXcgQXJyYXkoZSl9ZnVuY3Rpb24gam4oZSl7cmV0dXJuIE5lP0J1ZmZlci5hbGxvY1Vuc2FmZT9CdWZmZXIuYWxsb2NVbnNhZmUoZSk6bmV3IEJ1ZmZlcihlKTp0eXBlb2YgVWludDhBcnJheTwidSI/bmV3IFVpbnQ4QXJyYXkoZSk6bmV3IEFycmF5KGUpfXZhciBEcj1mdW5jdGlvbihhKXtyZXR1cm4gTmU/RWEoYSwiYmluYXJ5Iik6YS5zcGxpdCgiIikubWFwKGZ1bmN0aW9uKHIpe3JldHVybiByLmNoYXJDb2RlQXQoMCkmMjU1fSl9O2Z1bmN0aW9uIGZhKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGUubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHQpfSkuam9pbigiIik7Zm9yKHZhciBhPVtdLHI9MDtyPGUubGVuZ3RoOysrcilhW3JdPVN0cmluZy5mcm9tQ2hhckNvZGUoZVtyXSk7cmV0dXJuIGEuam9pbigiIil9ZnVuY3Rpb24gJDAoZSl7aWYodHlwZW9mIEFycmF5QnVmZmVyPiJ1Iil0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIik7aWYoZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXJldHVybiAkMChuZXcgVWludDhBcnJheShlKSk7Zm9yKHZhciBhPW5ldyBBcnJheShlLmxlbmd0aCkscj0wO3I8ZS5sZW5ndGg7KytyKWFbcl09ZVtyXTtyZXR1cm4gYX12YXIgeWE9TmU/ZnVuY3Rpb24oZSl7cmV0dXJuIEJ1ZmZlci5jb25jYXQoZS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihhKT9hOkVhKGEpfSkpfTpmdW5jdGlvbihlKXtpZih0eXBlb2YgVWludDhBcnJheTwidSIpe3ZhciBhPTAscj0wO2ZvcihhPTA7YTxlLmxlbmd0aDsrK2Epcis9ZVthXS5sZW5ndGg7dmFyIHQ9bmV3IFVpbnQ4QXJyYXkociksbj0wO2ZvcihhPTAscj0wO2E8ZS5sZW5ndGg7cis9biwrK2Epbj1lW2FdLmxlbmd0aCxlW2FdaW5zdGFuY2VvZiBVaW50OEFycmF5P3Quc2V0KGVbYV0scik6dHlwZW9mIGVbYV09PSJzdHJpbmciP3Quc2V0KG5ldyBVaW50OEFycmF5KERyKGVbYV0pKSxyKTp0LnNldChuZXcgVWludDhBcnJheShlW2FdKSxyKTtyZXR1cm4gdH1yZXR1cm5bXS5jb25jYXQuYXBwbHkoW10sZS5tYXAoZnVuY3Rpb24oaSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoaSk/aTpbXS5zbGljZS5jYWxsKGkpfSkpfTtmdW5jdGlvbiBuYyhlKXtmb3IodmFyIGE9W10scj0wLHQ9ZS5sZW5ndGgrMjUwLG49QWEoZS5sZW5ndGgrMjU1KSxpPTA7aTxlLmxlbmd0aDsrK2kpe3ZhciBmPWUuY2hhckNvZGVBdChpKTtpZihmPDEyOCluW3IrK109ZjtlbHNlIGlmKGY8MjA0OCluW3IrK109MTkyfGY+PjYmMzEsbltyKytdPTEyOHxmJjYzO2Vsc2UgaWYoZj49NTUyOTYmJmY8NTczNDQpe2Y9KGYmMTAyMykrNjQ7dmFyIHM9ZS5jaGFyQ29kZUF0KCsraSkmMTAyMztuW3IrK109MjQwfGY+PjgmNyxuW3IrK109MTI4fGY+PjImNjMsbltyKytdPTEyOHxzPj42JjE1fChmJjMpPDw0LG5bcisrXT0xMjh8cyY2M31lbHNlIG5bcisrXT0yMjR8Zj4+MTImMTUsbltyKytdPTEyOHxmPj42JjYzLG5bcisrXT0xMjh8ZiY2MztyPnQmJihhLnB1c2gobi5zbGljZSgwLHIpKSxyPTAsbj1BYSg2NTUzNSksdD02NTUzMCl9cmV0dXJuIGEucHVzaChuLnNsaWNlKDAscikpLHlhKGEpfXZhciBTcj0vXHUwMDAwL2csQXQ9L1tcdTAwMDEtXHUwMDA2XS9nO2Z1bmN0aW9uIGl0KGUpe2Zvcih2YXIgYT0iIixyPWUubGVuZ3RoLTE7cj49MDspYSs9ZS5jaGFyQXQoci0tKTtyZXR1cm4gYX1mdW5jdGlvbiBKcihlLGEpe3ZhciByPSIiK2U7cmV0dXJuIHIubGVuZ3RoPj1hP3I6UGUoIjAiLGEtci5sZW5ndGgpK3J9ZnVuY3Rpb24gSzAoZSxhKXt2YXIgcj0iIitlO3JldHVybiByLmxlbmd0aD49YT9yOlBlKCIgIixhLXIubGVuZ3RoKStyfWZ1bmN0aW9uIGkwKGUsYSl7dmFyIHI9IiIrZTtyZXR1cm4gci5sZW5ndGg+PWE/cjpyK1BlKCIgIixhLXIubGVuZ3RoKX1mdW5jdGlvbiBpYyhlLGEpe3ZhciByPSIiK01hdGgucm91bmQoZSk7cmV0dXJuIHIubGVuZ3RoPj1hP3I6UGUoIjAiLGEtci5sZW5ndGgpK3J9ZnVuY3Rpb24gc2MoZSxhKXt2YXIgcj0iIitlO3JldHVybiByLmxlbmd0aD49YT9yOlBlKCIwIixhLXIubGVuZ3RoKStyfXZhciBZbj1NYXRoLnBvdygyLDMyKTtmdW5jdGlvbiBzdChlLGEpe2lmKGU+WW58fGU8LVluKXJldHVybiBpYyhlLGEpO3ZhciByPU1hdGgucm91bmQoZSk7cmV0dXJuIHNjKHIsYSl9ZnVuY3Rpb24gczAoZSxhKXtyZXR1cm4gYT1hfHwwLGUubGVuZ3RoPj03K2EmJihlLmNoYXJDb2RlQXQoYSl8MzIpPT09MTAzJiYoZS5jaGFyQ29kZUF0KGErMSl8MzIpPT09MTAxJiYoZS5jaGFyQ29kZUF0KGErMil8MzIpPT09MTEwJiYoZS5jaGFyQ29kZUF0KGErMyl8MzIpPT09MTAxJiYoZS5jaGFyQ29kZUF0KGErNCl8MzIpPT09MTE0JiYoZS5jaGFyQ29kZUF0KGErNSl8MzIpPT09OTcmJihlLmNoYXJDb2RlQXQoYSs2KXwzMik9PT0xMDh9dmFyIEpuPVtbIlN1biIsIlN1bmRheSJdLFsiTW9uIiwiTW9uZGF5Il0sWyJUdWUiLCJUdWVzZGF5Il0sWyJXZWQiLCJXZWRuZXNkYXkiXSxbIlRodSIsIlRodXJzZGF5Il0sWyJGcmkiLCJGcmlkYXkiXSxbIlNhdCIsIlNhdHVyZGF5Il1dLGowPVtbIkoiLCJKYW4iLCJKYW51YXJ5Il0sWyJGIiwiRmViIiwiRmVicnVhcnkiXSxbIk0iLCJNYXIiLCJNYXJjaCJdLFsiQSIsIkFwciIsIkFwcmlsIl0sWyJNIiwiTWF5IiwiTWF5Il0sWyJKIiwiSnVuIiwiSnVuZSJdLFsiSiIsIkp1bCIsIkp1bHkiXSxbIkEiLCJBdWciLCJBdWd1c3QiXSxbIlMiLCJTZXAiLCJTZXB0ZW1iZXIiXSxbIk8iLCJPY3QiLCJPY3RvYmVyIl0sWyJOIiwiTm92IiwiTm92ZW1iZXIiXSxbIkQiLCJEZWMiLCJEZWNlbWJlciJdXTtmdW5jdGlvbiBmYyhlKXtyZXR1cm4gZXx8KGU9e30pLGVbMF09IkdlbmVyYWwiLGVbMV09IjAiLGVbMl09IjAuMDAiLGVbM109IiMsIyMwIixlWzRdPSIjLCMjMC4wMCIsZVs5XT0iMCUiLGVbMTBdPSIwLjAwJSIsZVsxMV09IjAuMDBFKzAwIixlWzEyXT0iIyA/Lz8iLGVbMTNdPSIjID8/Lz8/IixlWzE0XT0ibS9kL3l5IixlWzE1XT0iZC1tbW0teXkiLGVbMTZdPSJkLW1tbSIsZVsxN109Im1tbS15eSIsZVsxOF09Img6bW0gQU0vUE0iLGVbMTldPSJoOm1tOnNzIEFNL1BNIixlWzIwXT0iaDptbSIsZVsyMV09Img6bW06c3MiLGVbMjJdPSJtL2QveXkgaDptbSIsZVszN109IiMsIyMwIDsoIywjIzApIixlWzM4XT0iIywjIzAgO1tSZWRdKCMsIyMwKSIsZVszOV09IiMsIyMwLjAwOygjLCMjMC4wMCkiLGVbNDBdPSIjLCMjMC4wMDtbUmVkXSgjLCMjMC4wMCkiLGVbNDVdPSJtbTpzcyIsZVs0Nl09IltoXTptbTpzcyIsZVs0N109Im1tc3MuMCIsZVs0OF09IiMjMC4wRSswIixlWzQ5XT0iQCIsZVs1Nl09JyLkuIrljYgv5LiL5Y2IICJoaCLmmYIibW0i5YiGInNzIuenkiAiJyxlfXZhciBUZT17MDoiR2VuZXJhbCIsMToiMCIsMjoiMC4wMCIsMzoiIywjIzAiLDQ6IiMsIyMwLjAwIiw5OiIwJSIsMTA6IjAuMDAlIiwxMToiMC4wMEUrMDAiLDEyOiIjID8vPyIsMTM6IiMgPz8vPz8iLDE0OiJtL2QveXkiLDE1OiJkLW1tbS15eSIsMTY6ImQtbW1tIiwxNzoibW1tLXl5IiwxODoiaDptbSBBTS9QTSIsMTk6Img6bW06c3MgQU0vUE0iLDIwOiJoOm1tIiwyMToiaDptbTpzcyIsMjI6Im0vZC95eSBoOm1tIiwzNzoiIywjIzAgOygjLCMjMCkiLDM4OiIjLCMjMCA7W1JlZF0oIywjIzApIiwzOToiIywjIzAuMDA7KCMsIyMwLjAwKSIsNDA6IiMsIyMwLjAwO1tSZWRdKCMsIyMwLjAwKSIsNDU6Im1tOnNzIiw0NjoiW2hdOm1tOnNzIiw0NzoibW1zcy4wIiw0ODoiIyMwLjBFKzAiLDQ5OiJAIiw1NjonIuS4iuWNiC/kuIvljYggImhoIuaZgiJtbSLliIYic3Mi56eSICInfSxabj17NTozNyw2OjM4LDc6MzksODo0MCwyMzowLDI0OjAsMjU6MCwyNjowLDI3OjE0LDI4OjE0LDI5OjE0LDMwOjE0LDMxOjE0LDUwOjE0LDUxOjE0LDUyOjE0LDUzOjE0LDU0OjE0LDU1OjE0LDU2OjE0LDU3OjE0LDU4OjE0LDU5OjEsNjA6Miw2MTozLDYyOjQsNjc6OSw2ODoxMCw2OToxMiw3MDoxMyw3MToxNCw3MjoxNCw3MzoxNSw3NDoxNiw3NToxNyw3NjoyMCw3NzoyMSw3ODoyMiw3OTo0NSw4MDo0Niw4MTo0Nyw4MjowfSxjYz17NTonIiQiIywjIzBfKTtcXCgiJCIjLCMjMFxcKScsNjM6JyIkIiMsIyMwXyk7XFwoIiQiIywjIzBcXCknLDY6JyIkIiMsIyMwXyk7W1JlZF1cXCgiJCIjLCMjMFxcKScsNjQ6JyIkIiMsIyMwXyk7W1JlZF1cXCgiJCIjLCMjMFxcKScsNzonIiQiIywjIzAuMDBfKTtcXCgiJCIjLCMjMC4wMFxcKScsNjU6JyIkIiMsIyMwLjAwXyk7XFwoIiQiIywjIzAuMDBcXCknLDg6JyIkIiMsIyMwLjAwXyk7W1JlZF1cXCgiJCIjLCMjMC4wMFxcKScsNjY6JyIkIiMsIyMwLjAwXyk7W1JlZF1cXCgiJCIjLCMjMC4wMFxcKScsNDE6J18oKiAjLCMjMF8pO18oKiBcXCgjLCMjMFxcKTtfKCogIi0iXyk7XyhAXyknLDQyOidfKCIkIiogIywjIzBfKTtfKCIkIiogXFwoIywjIzBcXCk7XygiJCIqICItIl8pO18oQF8pJyw0MzonXygqICMsIyMwLjAwXyk7XygqIFxcKCMsIyMwLjAwXFwpO18oKiAiLSI/P18pO18oQF8pJyw0NDonXygiJCIqICMsIyMwLjAwXyk7XygiJCIqIFxcKCMsIyMwLjAwXFwpO18oIiQiKiAiLSI/P18pO18oQF8pJ307ZnVuY3Rpb24gZjAoZSxhLHIpe2Zvcih2YXIgdD1lPDA/LTE6MSxuPWUqdCxpPTAsZj0xLHM9MCxjPTEsbz0wLGw9MCx1PU1hdGguZmxvb3Iobik7bzxhJiYodT1NYXRoLmZsb29yKG4pLHM9dSpmK2ksbD11Km8rYywhKG4tdTw1ZS04KSk7KW49MS8obi11KSxpPWYsZj1zLGM9byxvPWw7aWYobD5hJiYobz5hPyhsPWMscz1pKToobD1vLHM9ZikpLCFyKXJldHVyblswLHQqcyxsXTt2YXIgeD1NYXRoLmZsb29yKHQqcy9sKTtyZXR1cm5beCx0KnMteCpsLGxdfWZ1bmN0aW9uIG9jKGUpe3ZhciBhPWUudG9QcmVjaXNpb24oMTYpO2lmKGEuaW5kZXhPZigiZSIpPi0xKXt2YXIgcj1hLnNsaWNlKDAsYS5pbmRleE9mKCJlIikpO3JldHVybiByPXIuaW5kZXhPZigiLiIpPi0xP3Iuc2xpY2UoMCxyLnNsaWNlKDAsMik9PSIwLiI/MTc6MTYpOnIuc2xpY2UoMCwxNSkrUGUoIjAiLHIubGVuZ3RoLTE1KSxyK2Euc2xpY2UoYS5pbmRleE9mKCJlIikpfXZhciB0PWEuaW5kZXhPZigiLiIpPi0xP2Euc2xpY2UoMCxhLnNsaWNlKDAsMik9PSIwLiI/MTc6MTYpOmEuc2xpY2UoMCwxNSkrUGUoIjAiLGEubGVuZ3RoLTE1KTtyZXR1cm4gTnVtYmVyKHQpfWZ1bmN0aW9uIGNhKGUsYSxyKXtpZihlPjI5NTg0NjV8fGU8MClyZXR1cm4gbnVsbDtlPW9jKGUpO3ZhciB0PWV8MCxuPU1hdGguZmxvb3IoODY0MDAqKGUtdCkpLGk9MCxmPVtdLHM9e0Q6dCxUOm4sdTo4NjQwMCooZS10KS1uLHk6MCxtOjAsZDowLEg6MCxNOjAsUzowLHE6MH07aWYoTWF0aC5hYnMocy51KTwxZS02JiYocy51PTApLGEmJmEuZGF0ZTE5MDQmJih0Kz0xNDYyKSxzLnU+Ljk5OTkmJihzLnU9MCwrK249PTg2NDAwJiYocy5UPW49MCwrK3QsKytzLkQpKSx0PT09NjApZj1yP1sxMzE3LDEwLDI5XTpbMTkwMCwyLDI5XSxpPTM7ZWxzZSBpZih0PT09MClmPXI/WzEzMTcsOCwyOV06WzE5MDAsMSwwXSxpPTY7ZWxzZXt0PjYwJiYtLXQ7dmFyIGM9bmV3IERhdGUoMTkwMCwwLDEpO2Muc2V0RGF0ZShjLmdldERhdGUoKSt0LTEpLGY9W2MuZ2V0RnVsbFllYXIoKSxjLmdldE1vbnRoKCkrMSxjLmdldERhdGUoKV0saT1jLmdldERheSgpLHQ8NjAmJihpPShpKzYpJTcpLHImJihpPXhjKGMsZikpfXJldHVybiBzLnk9ZlswXSxzLm09ZlsxXSxzLmQ9ZlsyXSxzLlM9biU2MCxuPU1hdGguZmxvb3Iobi82MCkscy5NPW4lNjAsbj1NYXRoLmZsb29yKG4vNjApLHMuSD1uLHMucT1pLHN9ZnVuY3Rpb24gWTAoZSl7cmV0dXJuIGUuaW5kZXhPZigiLiIpPT0tMT9lOmUucmVwbGFjZSgvKD86XC4wKnwoXC5cZCpbMS05XSkwKykkLywiJDEiKX1mdW5jdGlvbiBsYyhlKXtyZXR1cm4gZS5pbmRleE9mKCJFIik9PS0xP2U6ZS5yZXBsYWNlKC8oPzpcLjAqfChcLlxkKlsxLTldKTArKVtFZV0vLCIkMUUiKS5yZXBsYWNlKC8oRVsrLV0pKFxkKSQvLCIkMTAkMiIpfWZ1bmN0aW9uIHVjKGUpe3ZhciBhPWU8MD8xMjoxMSxyPVkwKGUudG9GaXhlZCgxMikpO3JldHVybiByLmxlbmd0aDw9YXx8KHI9ZS50b1ByZWNpc2lvbigxMCksci5sZW5ndGg8PWEpP3I6ZS50b0V4cG9uZW50aWFsKDUpfWZ1bmN0aW9uIGhjKGUpe3ZhciBhPVkwKGUudG9GaXhlZCgxMSkpO3JldHVybiBhLmxlbmd0aD4oZTwwPzEyOjExKXx8YT09PSIwInx8YT09PSItMCI/ZS50b1ByZWNpc2lvbig2KTphfWZ1bmN0aW9uIHl0KGUpe2lmKCFpc0Zpbml0ZShlKSlyZXR1cm4gaXNOYU4oZSk/IiNOVU0hIjoiI0RJVi8wISI7dmFyIGE9TWF0aC5mbG9vcihNYXRoLmxvZyhNYXRoLmFicyhlKSkqTWF0aC5MT0cxMEUpLHI7cmV0dXJuIGE+PS00JiZhPD0tMT9yPWUudG9QcmVjaXNpb24oMTArYSk6TWF0aC5hYnMoYSk8PTk/cj11YyhlKTphPT09MTA/cj1lLnRvRml4ZWQoMTApLnN1YnN0cigwLDEyKTpyPWhjKGUpLFkwKGxjKHIudG9VcHBlckNhc2UoKSkpfWZ1bmN0aW9uIFBhKGUsYSl7c3dpdGNoKHR5cGVvZiBlKXtjYXNlInN0cmluZyI6cmV0dXJuIGU7Y2FzZSJib29sZWFuIjpyZXR1cm4gZT8iVFJVRSI6IkZBTFNFIjtjYXNlIm51bWJlciI6cmV0dXJuKGV8MCk9PT1lP2UudG9TdHJpbmcoMTApOnl0KGUpO2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4iIjtjYXNlIm9iamVjdCI6aWYoZT09bnVsbClyZXR1cm4iIjtpZihlIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gUnIoMTQsb3IoZSxhJiZhLmRhdGUxOTA0KSxhKX10aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIHZhbHVlIGluIEdlbmVyYWwgZm9ybWF0OiAiK2UpfWZ1bmN0aW9uIHhjKGUsYSl7YVswXS09NTgxO3ZhciByPWUuZ2V0RGF5KCk7cmV0dXJuIGU8NjAmJihyPShyKzYpJTcpLHJ9ZnVuY3Rpb24gZGMoZSxhLHIsdCl7dmFyIG49IiIsaT0wLGY9MCxzPXIueSxjLG89MDtzd2l0Y2goZSl7Y2FzZSA5ODpzPXIueSs1NDM7Y2FzZSAxMjE6c3dpdGNoKGEubGVuZ3RoKXtjYXNlIDE6Y2FzZSAyOmM9cyUxMDAsbz0yO2JyZWFrO2RlZmF1bHQ6Yz1zJTFlNCxvPTQ7YnJlYWt9YnJlYWs7Y2FzZSAxMDk6c3dpdGNoKGEubGVuZ3RoKXtjYXNlIDE6Y2FzZSAyOmM9ci5tLG89YS5sZW5ndGg7YnJlYWs7Y2FzZSAzOnJldHVybiBqMFtyLm0tMV1bMV07Y2FzZSA1OnJldHVybiBqMFtyLm0tMV1bMF07ZGVmYXVsdDpyZXR1cm4gajBbci5tLTFdWzJdfWJyZWFrO2Nhc2UgMTAwOnN3aXRjaChhLmxlbmd0aCl7Y2FzZSAxOmNhc2UgMjpjPXIuZCxvPWEubGVuZ3RoO2JyZWFrO2Nhc2UgMzpyZXR1cm4gSm5bci5xXVswXTtkZWZhdWx0OnJldHVybiBKbltyLnFdWzFdfWJyZWFrO2Nhc2UgMTA0OnN3aXRjaChhLmxlbmd0aCl7Y2FzZSAxOmNhc2UgMjpjPTErKHIuSCsxMSklMTIsbz1hLmxlbmd0aDticmVhaztkZWZhdWx0OnRocm93ImJhZCBob3VyIGZvcm1hdDogIithfWJyZWFrO2Nhc2UgNzI6c3dpdGNoKGEubGVuZ3RoKXtjYXNlIDE6Y2FzZSAyOmM9ci5ILG89YS5sZW5ndGg7YnJlYWs7ZGVmYXVsdDp0aHJvdyJiYWQgaG91ciBmb3JtYXQ6ICIrYX1icmVhaztjYXNlIDc3OnN3aXRjaChhLmxlbmd0aCl7Y2FzZSAxOmNhc2UgMjpjPXIuTSxvPWEubGVuZ3RoO2JyZWFrO2RlZmF1bHQ6dGhyb3ciYmFkIG1pbnV0ZSBmb3JtYXQ6ICIrYX1icmVhaztjYXNlIDExNTppZihhIT0icyImJmEhPSJzcyImJmEhPSIuMCImJmEhPSIuMDAiJiZhIT0iLjAwMCIpdGhyb3ciYmFkIHNlY29uZCBmb3JtYXQ6ICIrYTtyZXR1cm4gci51PT09MCYmKGE9PSJzInx8YT09InNzIik/SnIoci5TLGEubGVuZ3RoKToodD49Mj9mPXQ9PT0zPzFlMzoxMDA6Zj10PT09MT8xMDoxLGk9TWF0aC5yb3VuZChmKihyLlMrci51KSksaT49NjAqZiYmKGk9MCksYT09PSJzIj9pPT09MD8iMCI6IiIraS9mOihuPUpyKGksMit0KSxhPT09InNzIj9uLnN1YnN0cigwLDIpOiIuIituLnN1YnN0cigyLGEubGVuZ3RoLTEpKSk7Y2FzZSA5MDpzd2l0Y2goYSl7Y2FzZSJbaF0iOmNhc2UiW2hoXSI6Yz1yLkQqMjQrci5IO2JyZWFrO2Nhc2UiW21dIjpjYXNlIlttbV0iOmM9KHIuRCoyNCtyLkgpKjYwK3IuTTticmVhaztjYXNlIltzXSI6Y2FzZSJbc3NdIjpjPSgoci5EKjI0K3IuSCkqNjArci5NKSo2MCsodD09MD9NYXRoLnJvdW5kKHIuUytyLnUpOnIuUyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyJiYWQgYWJzdGltZSBmb3JtYXQ6ICIrYX1vPWEubGVuZ3RoPT09Mz8xOjI7YnJlYWs7Y2FzZSAxMDE6Yz1zLG89MTticmVha312YXIgbD1vPjA/SnIoYyxvKToiIjtyZXR1cm4gbH1mdW5jdGlvbiBvYShlKXt2YXIgYT0zO2lmKGUubGVuZ3RoPD1hKXJldHVybiBlO2Zvcih2YXIgcj1lLmxlbmd0aCVhLHQ9ZS5zdWJzdHIoMCxyKTtyIT1lLmxlbmd0aDtyKz1hKXQrPSh0Lmxlbmd0aD4wPyIsIjoiIikrZS5zdWJzdHIocixhKTtyZXR1cm4gdH12YXIgcW49LyUvZztmdW5jdGlvbiB2YyhlLGEscil7dmFyIHQ9YS5yZXBsYWNlKHFuLCIiKSxuPWEubGVuZ3RoLXQubGVuZ3RoO3JldHVybiBsYShlLHQscipNYXRoLnBvdygxMCwyKm4pKStQZSgiJSIsbil9ZnVuY3Rpb24gcGMoZSxhLHIpe2Zvcih2YXIgdD1hLmxlbmd0aC0xO2EuY2hhckNvZGVBdCh0LTEpPT09NDQ7KS0tdDtyZXR1cm4gbGEoZSxhLnN1YnN0cigwLHQpLHIvTWF0aC5wb3coMTAsMyooYS5sZW5ndGgtdCkpKX1mdW5jdGlvbiBRbihlLGEpe3ZhciByLHQ9ZS5pbmRleE9mKCJFIiktZS5pbmRleE9mKCIuIiktMTtpZihlLm1hdGNoKC9eIyswLjBFXCswJC8pKXtpZihhPT0wKXJldHVybiIwLjBFKzAiO2lmKGE8MClyZXR1cm4iLSIrUW4oZSwtYSk7dmFyIG49ZS5pbmRleE9mKCIuIik7bj09PS0xJiYobj1lLmluZGV4T2YoIkUiKSk7dmFyIGk9TWF0aC5mbG9vcihNYXRoLmxvZyhhKSpNYXRoLkxPRzEwRSklbjtpZihpPDAmJihpKz1uKSxyPShhL01hdGgucG93KDEwLGkpKS50b1ByZWNpc2lvbih0KzErKG4raSklbiksci5pbmRleE9mKCJlIik9PT0tMSl7dmFyIGY9TWF0aC5mbG9vcihNYXRoLmxvZyhhKSpNYXRoLkxPRzEwRSk7Zm9yKHIuaW5kZXhPZigiLiIpPT09LTE/cj1yLmNoYXJBdCgwKSsiLiIrci5zdWJzdHIoMSkrIkUrIisoZi1yLmxlbmd0aCtpKTpyKz0iRSsiKyhmLWkpO3Iuc3Vic3RyKDAsMik9PT0iMC4iOylyPXIuY2hhckF0KDApK3Iuc3Vic3RyKDIsbikrIi4iK3Iuc3Vic3RyKDIrbikscj1yLnJlcGxhY2UoL14wKyhbMS05XSkvLCIkMSIpLnJlcGxhY2UoL14wK1wuLywiMC4iKTtyPXIucmVwbGFjZSgvXCstLywiLSIpfXI9ci5yZXBsYWNlKC9eKFsrLV0/KShcZCopXC4oXGQqKVtFZV0vLGZ1bmN0aW9uKHMsYyxvLGwpe3JldHVybiBjK28rbC5zdWJzdHIoMCwobitpKSVuKSsiLiIrbC5zdWJzdHIoaSkrIkUifSl9ZWxzZSByPWEudG9FeHBvbmVudGlhbCh0KTtyZXR1cm4gZS5tYXRjaCgvRVwrMDAkLykmJnIubWF0Y2goL2VbKy1dXGQkLykmJihyPXIuc3Vic3RyKDAsci5sZW5ndGgtMSkrIjAiK3IuY2hhckF0KHIubGVuZ3RoLTEpKSxlLm1hdGNoKC9FXC0vKSYmci5tYXRjaCgvZVwrLykmJihyPXIucmVwbGFjZSgvZVwrLywiZSIpKSxyLnJlcGxhY2UoImUiLCJFIil9dmFyIGVpPS8jIChcPyspKCA/KVwvKCA/KShcZCspLztmdW5jdGlvbiBnYyhlLGEscil7dmFyIHQ9cGFyc2VJbnQoZVs0XSwxMCksbj1NYXRoLnJvdW5kKGEqdCksaT1NYXRoLmZsb29yKG4vdCksZj1uLWkqdCxzPXQ7cmV0dXJuIHIrKGk9PT0wPyIiOiIiK2kpKyIgIisoZj09PTA/UGUoIiAiLGVbMV0ubGVuZ3RoKzErZVs0XS5sZW5ndGgpOkswKGYsZVsxXS5sZW5ndGgpK2VbMl0rIi8iK2VbM10rSnIocyxlWzRdLmxlbmd0aCkpfWZ1bmN0aW9uIG1jKGUsYSxyKXtyZXR1cm4gcisoYT09PTA/IiI6IiIrYSkrUGUoIiAiLGVbMV0ubGVuZ3RoKzIrZVs0XS5sZW5ndGgpfXZhciByaT0vXiMqMCpcLihbMCNdKykvLGFpPS9cKVteKV0qWzAjXS8sdGk9L1woIyMjXCkgIyMjXFw/LSMjIyMvO2Z1bmN0aW9uIEVyKGUpe2Zvcih2YXIgYT0iIixyLHQ9MDt0IT1lLmxlbmd0aDsrK3Qpc3dpdGNoKHI9ZS5jaGFyQ29kZUF0KHQpKXtjYXNlIDM1OmJyZWFrO2Nhc2UgNjM6YSs9IiAiO2JyZWFrO2Nhc2UgNDg6YSs9IjAiO2JyZWFrO2RlZmF1bHQ6YSs9U3RyaW5nLmZyb21DaGFyQ29kZShyKX1yZXR1cm4gYX1mdW5jdGlvbiBuaShlLGEpe3ZhciByPWU8MD8tMToxLHQ9TWF0aC5wb3coMTAsYSk7cmV0dXJuIiIrciooTWF0aC5yb3VuZChyKmUqdCkvdCl9ZnVuY3Rpb24gaWkoZSxhKXt2YXIgcj1lLU1hdGguZmxvb3IoZSksdD1NYXRoLnBvdygxMCxhKTtyZXR1cm4gYTwoIiIrTWF0aC5yb3VuZChyKnQpKS5sZW5ndGg/MDpNYXRoLnJvdW5kKHIqdCl9ZnVuY3Rpb24gX2MoZSxhKXtyZXR1cm4gYTwoIiIrTWF0aC5yb3VuZCgoZS1NYXRoLmZsb29yKGUpKSpNYXRoLnBvdygxMCxhKSkpLmxlbmd0aD8xOjB9ZnVuY3Rpb24ga2MoZSl7cmV0dXJuIGU8MjE0NzQ4MzY0NyYmZT4tMjE0NzQ4MzY0OD8iIisoZT49MD9lfDA6ZS0xfDApOiIiK01hdGguZmxvb3IoZSl9ZnVuY3Rpb24gVnIoZSxhLHIpe2lmKGUuY2hhckNvZGVBdCgwKT09PTQwJiYhYS5tYXRjaChhaSkpe3ZhciB0PWEucmVwbGFjZSgvXCggKi8sIiIpLnJlcGxhY2UoLyBcKS8sIiIpLnJlcGxhY2UoL1wpLywiIik7cmV0dXJuIHI+PTA/VnIoIm4iLHQscik6IigiK1ZyKCJuIix0LC1yKSsiKSJ9aWYoYS5jaGFyQ29kZUF0KGEubGVuZ3RoLTEpPT09NDQpcmV0dXJuIHBjKGUsYSxyKTtpZihhLmluZGV4T2YoIiUiKSE9PS0xKXJldHVybiB2YyhlLGEscik7aWYoYS5pbmRleE9mKCJFIikhPT0tMSlyZXR1cm4gUW4oYSxyKTtpZihhLmNoYXJDb2RlQXQoMCk9PT0zNilyZXR1cm4iJCIrVnIoZSxhLnN1YnN0cihhLmNoYXJBdCgxKT09IiAiPzI6MSkscik7dmFyIG4saSxmLHMsYz1NYXRoLmFicyhyKSxvPXI8MD8iLSI6IiI7aWYoYS5tYXRjaCgvXjAwKyQvKSlyZXR1cm4gbytzdChjLGEubGVuZ3RoKTtpZihhLm1hdGNoKC9eWyM/XSskLykpcmV0dXJuIG49c3QociwwKSxuPT09IjAiJiYobj0iIiksbi5sZW5ndGg+YS5sZW5ndGg/bjpFcihhLnN1YnN0cigwLGEubGVuZ3RoLW4ubGVuZ3RoKSkrbjtpZihpPWEubWF0Y2goZWkpKXJldHVybiBnYyhpLGMsbyk7aWYoYS5tYXRjaCgvXiMrMCskLykpcmV0dXJuIG8rc3QoYyxhLmxlbmd0aC1hLmluZGV4T2YoIjAiKSk7aWYoaT1hLm1hdGNoKHJpKSlyZXR1cm4gbj1uaShyLGlbMV0ubGVuZ3RoKS5yZXBsYWNlKC9eKFteXC5dKykkLywiJDEuIitFcihpWzFdKSkucmVwbGFjZSgvXC4kLywiLiIrRXIoaVsxXSkpLnJlcGxhY2UoL1wuKFxkKikkLyxmdW5jdGlvbihnLG0pe3JldHVybiIuIittK1BlKCIwIixFcihpWzFdKS5sZW5ndGgtbS5sZW5ndGgpfSksYS5pbmRleE9mKCIwLiIpIT09LTE/bjpuLnJlcGxhY2UoL14wXC4vLCIuIik7aWYoYT1hLnJlcGxhY2UoL14jKyhbMC5dKS8sIiQxIiksaT1hLm1hdGNoKC9eKDAqKVwuKCMqKSQvKSlyZXR1cm4gbytuaShjLGlbMl0ubGVuZ3RoKS5yZXBsYWNlKC9cLihcZCpbMS05XSkwKiQvLCIuJDEiKS5yZXBsYWNlKC9eKC0/XGQqKSQvLCIkMS4iKS5yZXBsYWNlKC9eMFwuLyxpWzFdLmxlbmd0aD8iMC4iOiIuIik7aWYoaT1hLm1hdGNoKC9eI3sxLDN9LCMjMChcLj8pJC8pKXJldHVybiBvK29hKHN0KGMsMCkpO2lmKGk9YS5tYXRjaCgvXiMsIyMwXC4oWyMwXSowKSQvKSlyZXR1cm4gcjwwPyItIitWcihlLGEsLXIpOm9hKCIiKyhNYXRoLmZsb29yKHIpK19jKHIsaVsxXS5sZW5ndGgpKSkrIi4iK0pyKGlpKHIsaVsxXS5sZW5ndGgpLGlbMV0ubGVuZ3RoKTtpZihpPWEubWF0Y2goL14jLCMqLCMwLykpcmV0dXJuIFZyKGUsYS5yZXBsYWNlKC9eIywjKiwvLCIiKSxyKTtpZihpPWEubWF0Y2goL14oWzAjXSspKFxcPy0oWzAjXSspKSskLykpcmV0dXJuIG49aXQoVnIoZSxhLnJlcGxhY2UoL1tcXC1dL2csIiIpLHIpKSxmPTAsaXQoaXQoYS5yZXBsYWNlKC9cXC9nLCIiKSkucmVwbGFjZSgvWzAjXS9nLGZ1bmN0aW9uKGcpe3JldHVybiBmPG4ubGVuZ3RoP24uY2hhckF0KGYrKyk6Zz09PSIwIj8iMCI6IiJ9KSk7aWYoYS5tYXRjaCh0aSkpcmV0dXJuIG49VnIoZSwiIyMjIyMjIyMjIyIsciksIigiK24uc3Vic3RyKDAsMykrIikgIituLnN1YnN0cigzLDMpKyItIituLnN1YnN0cig2KTt2YXIgbD0iIjtpZihpPWEubWF0Y2goL14oWyMwP10rKSggPylcLyggPykoWyMwP10rKS8pKXJldHVybiBmPU1hdGgubWluKGlbNF0ubGVuZ3RoLDcpLHM9ZjAoYyxNYXRoLnBvdygxMCxmKS0xLCExKSxuPSIiK28sbD1sYSgibiIsaVsxXSxzWzFdKSxsLmNoYXJBdChsLmxlbmd0aC0xKT09IiAiJiYobD1sLnN1YnN0cigwLGwubGVuZ3RoLTEpKyIwIiksbis9bCtpWzJdKyIvIitpWzNdLGw9aTAoc1syXSxmKSxsLmxlbmd0aDxpWzRdLmxlbmd0aCYmKGw9RXIoaVs0XS5zdWJzdHIoaVs0XS5sZW5ndGgtbC5sZW5ndGgpKStsKSxuKz1sLG47aWYoaT1hLm1hdGNoKC9eIyAoWyMwP10rKSggPylcLyggPykoWyMwP10rKS8pKXJldHVybiBmPU1hdGgubWluKE1hdGgubWF4KGlbMV0ubGVuZ3RoLGlbNF0ubGVuZ3RoKSw3KSxzPWYwKGMsTWF0aC5wb3coMTAsZiktMSwhMCksbysoc1swXXx8KHNbMV0/IiI6IjAiKSkrIiAiKyhzWzFdP0swKHNbMV0sZikraVsyXSsiLyIraVszXStpMChzWzJdLGYpOlBlKCIgIiwyKmYrMStpWzJdLmxlbmd0aCtpWzNdLmxlbmd0aCkpO2lmKGk9YS5tYXRjaCgvXlsjMD9dKyQvKSlyZXR1cm4gbj1zdChyLDApLGEubGVuZ3RoPD1uLmxlbmd0aD9uOkVyKGEuc3Vic3RyKDAsYS5sZW5ndGgtbi5sZW5ndGgpKStuO2lmKGk9YS5tYXRjaCgvXihbIzA/XSspXC4oWyMwXSspJC8pKXtuPSIiK3IudG9GaXhlZChNYXRoLm1pbihpWzJdLmxlbmd0aCwxMCkpLnJlcGxhY2UoLyhbXjBdKTArJC8sIiQxIiksZj1uLmluZGV4T2YoIi4iKTt2YXIgdT1hLmluZGV4T2YoIi4iKS1mLHg9YS5sZW5ndGgtbi5sZW5ndGgtdTtyZXR1cm4gRXIoYS5zdWJzdHIoMCx1KStuK2Euc3Vic3RyKGEubGVuZ3RoLXgpKX1pZihpPWEubWF0Y2goL14wMCwwMDBcLihbIzBdKjApJC8pKXJldHVybiBmPWlpKHIsaVsxXS5sZW5ndGgpLHI8MD8iLSIrVnIoZSxhLC1yKTpvYShrYyhyKSkucmVwbGFjZSgvXlxkLFxkezN9JC8sIjAkJiIpLnJlcGxhY2UoL15cZCokLyxmdW5jdGlvbihnKXtyZXR1cm4iMDAsIisoZy5sZW5ndGg8Mz9KcigwLDMtZy5sZW5ndGgpOiIiKStnfSkrIi4iK0pyKGYsaVsxXS5sZW5ndGgpO3N3aXRjaChhKXtjYXNlIiMjIywjIzAuMDAiOnJldHVybiBWcihlLCIjLCMjMC4wMCIscik7Y2FzZSIjIyMsIyMjIjpjYXNlIiMjLCMjIyI6Y2FzZSIjLCMjIyI6dmFyIGg9b2Eoc3QoYywwKSk7cmV0dXJuIGghPT0iMCI/bytoOiIiO2Nhc2UiIyMjLCMjIy4wMCI6cmV0dXJuIFZyKGUsIiMjIywjIzAuMDAiLHIpLnJlcGxhY2UoL14wXC4vLCIuIik7Y2FzZSIjLCMjIy4wMCI6cmV0dXJuIFZyKGUsIiMsIyMwLjAwIixyKS5yZXBsYWNlKC9eMFwuLywiLiIpfXRocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQgZm9ybWF0IHwiK2ErInwiKX1mdW5jdGlvbiB3YyhlLGEscil7Zm9yKHZhciB0PWEubGVuZ3RoLTE7YS5jaGFyQ29kZUF0KHQtMSk9PT00NDspLS10O3JldHVybiBsYShlLGEuc3Vic3RyKDAsdCksci9NYXRoLnBvdygxMCwzKihhLmxlbmd0aC10KSkpfWZ1bmN0aW9uIEZjKGUsYSxyKXt2YXIgdD1hLnJlcGxhY2UocW4sIiIpLG49YS5sZW5ndGgtdC5sZW5ndGg7cmV0dXJuIGxhKGUsdCxyKk1hdGgucG93KDEwLDIqbikpK1BlKCIlIixuKX1mdW5jdGlvbiBzaShlLGEpe3ZhciByLHQ9ZS5pbmRleE9mKCJFIiktZS5pbmRleE9mKCIuIiktMTtpZihlLm1hdGNoKC9eIyswLjBFXCswJC8pKXtpZihhPT0wKXJldHVybiIwLjBFKzAiO2lmKGE8MClyZXR1cm4iLSIrc2koZSwtYSk7dmFyIG49ZS5pbmRleE9mKCIuIik7bj09PS0xJiYobj1lLmluZGV4T2YoIkUiKSk7dmFyIGk9TWF0aC5mbG9vcihNYXRoLmxvZyhhKSpNYXRoLkxPRzEwRSklbjtpZihpPDAmJihpKz1uKSxyPShhL01hdGgucG93KDEwLGkpKS50b1ByZWNpc2lvbih0KzErKG4raSklbiksIXIubWF0Y2goL1tFZV0vKSl7dmFyIGY9TWF0aC5mbG9vcihNYXRoLmxvZyhhKSpNYXRoLkxPRzEwRSk7ci5pbmRleE9mKCIuIik9PT0tMT9yPXIuY2hhckF0KDApKyIuIityLnN1YnN0cigxKSsiRSsiKyhmLXIubGVuZ3RoK2kpOnIrPSJFKyIrKGYtaSkscj1yLnJlcGxhY2UoL1wrLS8sIi0iKX1yPXIucmVwbGFjZSgvXihbKy1dPykoXGQqKVwuKFxkKilbRWVdLyxmdW5jdGlvbihzLGMsbyxsKXtyZXR1cm4gYytvK2wuc3Vic3RyKDAsKG4raSklbikrIi4iK2wuc3Vic3RyKGkpKyJFIn0pfWVsc2Ugcj1hLnRvRXhwb25lbnRpYWwodCk7cmV0dXJuIGUubWF0Y2goL0VcKzAwJC8pJiZyLm1hdGNoKC9lWystXVxkJC8pJiYocj1yLnN1YnN0cigwLHIubGVuZ3RoLTEpKyIwIityLmNoYXJBdChyLmxlbmd0aC0xKSksZS5tYXRjaCgvRVwtLykmJnIubWF0Y2goL2VcKy8pJiYocj1yLnJlcGxhY2UoL2VcKy8sImUiKSksci5yZXBsYWNlKCJlIiwiRSIpfWZ1bmN0aW9uIGFhKGUsYSxyKXtpZihlLmNoYXJDb2RlQXQoMCk9PT00MCYmIWEubWF0Y2goYWkpKXt2YXIgdD1hLnJlcGxhY2UoL1woICovLCIiKS5yZXBsYWNlKC8gXCkvLCIiKS5yZXBsYWNlKC9cKS8sIiIpO3JldHVybiByPj0wP2FhKCJuIix0LHIpOiIoIithYSgibiIsdCwtcikrIikifWlmKGEuY2hhckNvZGVBdChhLmxlbmd0aC0xKT09PTQ0KXJldHVybiB3YyhlLGEscik7aWYoYS5pbmRleE9mKCIlIikhPT0tMSlyZXR1cm4gRmMoZSxhLHIpO2lmKGEuaW5kZXhPZigiRSIpIT09LTEpcmV0dXJuIHNpKGEscik7aWYoYS5jaGFyQ29kZUF0KDApPT09MzYpcmV0dXJuIiQiK2FhKGUsYS5zdWJzdHIoYS5jaGFyQXQoMSk9PSIgIj8yOjEpLHIpO3ZhciBuLGksZixzLGM9TWF0aC5hYnMociksbz1yPDA/Ii0iOiIiO2lmKGEubWF0Y2goL14wMCskLykpcmV0dXJuIG8rSnIoYyxhLmxlbmd0aCk7aWYoYS5tYXRjaCgvXlsjP10rJC8pKXJldHVybiBuPSIiK3Iscj09PTAmJihuPSIiKSxuLmxlbmd0aD5hLmxlbmd0aD9uOkVyKGEuc3Vic3RyKDAsYS5sZW5ndGgtbi5sZW5ndGgpKStuO2lmKGk9YS5tYXRjaChlaSkpcmV0dXJuIG1jKGksYyxvKTtpZihhLm1hdGNoKC9eIyswKyQvKSlyZXR1cm4gbytKcihjLGEubGVuZ3RoLWEuaW5kZXhPZigiMCIpKTtpZihpPWEubWF0Y2gocmkpKXJldHVybiBuPSgiIityKS5yZXBsYWNlKC9eKFteXC5dKykkLywiJDEuIitFcihpWzFdKSkucmVwbGFjZSgvXC4kLywiLiIrRXIoaVsxXSkpLG49bi5yZXBsYWNlKC9cLihcZCopJC8sZnVuY3Rpb24oZyxtKXtyZXR1cm4iLiIrbStQZSgiMCIsRXIoaVsxXSkubGVuZ3RoLW0ubGVuZ3RoKX0pLGEuaW5kZXhPZigiMC4iKSE9PS0xP246bi5yZXBsYWNlKC9eMFwuLywiLiIpO2lmKGE9YS5yZXBsYWNlKC9eIysoWzAuXSkvLCIkMSIpLGk9YS5tYXRjaCgvXigwKilcLigjKikkLykpcmV0dXJuIG8rKCIiK2MpLnJlcGxhY2UoL1wuKFxkKlsxLTldKTAqJC8sIi4kMSIpLnJlcGxhY2UoL14oLT9cZCopJC8sIiQxLiIpLnJlcGxhY2UoL14wXC4vLGlbMV0ubGVuZ3RoPyIwLiI6Ii4iKTtpZihpPWEubWF0Y2goL14jezEsM30sIyMwKFwuPykkLykpcmV0dXJuIG8rb2EoIiIrYyk7aWYoaT1hLm1hdGNoKC9eIywjIzBcLihbIzBdKjApJC8pKXJldHVybiByPDA/Ii0iK2FhKGUsYSwtcik6b2EoIiIrcikrIi4iK1BlKCIwIixpWzFdLmxlbmd0aCk7aWYoaT1hLm1hdGNoKC9eIywjKiwjMC8pKXJldHVybiBhYShlLGEucmVwbGFjZSgvXiMsIyosLywiIikscik7aWYoaT1hLm1hdGNoKC9eKFswI10rKShcXD8tKFswI10rKSkrJC8pKXJldHVybiBuPWl0KGFhKGUsYS5yZXBsYWNlKC9bXFwtXS9nLCIiKSxyKSksZj0wLGl0KGl0KGEucmVwbGFjZSgvXFwvZywiIikpLnJlcGxhY2UoL1swI10vZyxmdW5jdGlvbihnKXtyZXR1cm4gZjxuLmxlbmd0aD9uLmNoYXJBdChmKyspOmc9PT0iMCI/IjAiOiIifSkpO2lmKGEubWF0Y2godGkpKXJldHVybiBuPWFhKGUsIiMjIyMjIyMjIyMiLHIpLCIoIituLnN1YnN0cigwLDMpKyIpICIrbi5zdWJzdHIoMywzKSsiLSIrbi5zdWJzdHIoNik7dmFyIGw9IiI7aWYoaT1hLm1hdGNoKC9eKFsjMD9dKykoID8pXC8oID8pKFsjMD9dKykvKSlyZXR1cm4gZj1NYXRoLm1pbihpWzRdLmxlbmd0aCw3KSxzPWYwKGMsTWF0aC5wb3coMTAsZiktMSwhMSksbj0iIitvLGw9bGEoIm4iLGlbMV0sc1sxXSksbC5jaGFyQXQobC5sZW5ndGgtMSk9PSIgIiYmKGw9bC5zdWJzdHIoMCxsLmxlbmd0aC0xKSsiMCIpLG4rPWwraVsyXSsiLyIraVszXSxsPWkwKHNbMl0sZiksbC5sZW5ndGg8aVs0XS5sZW5ndGgmJihsPUVyKGlbNF0uc3Vic3RyKGlbNF0ubGVuZ3RoLWwubGVuZ3RoKSkrbCksbis9bCxuO2lmKGk9YS5tYXRjaCgvXiMgKFsjMD9dKykoID8pXC8oID8pKFsjMD9dKykvKSlyZXR1cm4gZj1NYXRoLm1pbihNYXRoLm1heChpWzFdLmxlbmd0aCxpWzRdLmxlbmd0aCksNykscz1mMChjLE1hdGgucG93KDEwLGYpLTEsITApLG8rKHNbMF18fChzWzFdPyIiOiIwIikpKyIgIisoc1sxXT9LMChzWzFdLGYpK2lbMl0rIi8iK2lbM10raTAoc1syXSxmKTpQZSgiICIsMipmKzEraVsyXS5sZW5ndGgraVszXS5sZW5ndGgpKTtpZihpPWEubWF0Y2goL15bIzA/XSskLykpcmV0dXJuIG49IiIrcixhLmxlbmd0aDw9bi5sZW5ndGg/bjpFcihhLnN1YnN0cigwLGEubGVuZ3RoLW4ubGVuZ3RoKSkrbjtpZihpPWEubWF0Y2goL14oWyMwXSspXC4oWyMwXSspJC8pKXtuPSIiK3IudG9GaXhlZChNYXRoLm1pbihpWzJdLmxlbmd0aCwxMCkpLnJlcGxhY2UoLyhbXjBdKTArJC8sIiQxIiksZj1uLmluZGV4T2YoIi4iKTt2YXIgdT1hLmluZGV4T2YoIi4iKS1mLHg9YS5sZW5ndGgtbi5sZW5ndGgtdTtyZXR1cm4gRXIoYS5zdWJzdHIoMCx1KStuK2Euc3Vic3RyKGEubGVuZ3RoLXgpKX1pZihpPWEubWF0Y2goL14wMCwwMDBcLihbIzBdKjApJC8pKXJldHVybiByPDA/Ii0iK2FhKGUsYSwtcik6b2EoIiIrcikucmVwbGFjZSgvXlxkLFxkezN9JC8sIjAkJiIpLnJlcGxhY2UoL15cZCokLyxmdW5jdGlvbihnKXtyZXR1cm4iMDAsIisoZy5sZW5ndGg8Mz9KcigwLDMtZy5sZW5ndGgpOiIiKStnfSkrIi4iK0pyKDAsaVsxXS5sZW5ndGgpO3N3aXRjaChhKXtjYXNlIiMjIywjIyMiOmNhc2UiIyMsIyMjIjpjYXNlIiMsIyMjIjp2YXIgaD1vYSgiIitjKTtyZXR1cm4gaCE9PSIwIj9vK2g6IiI7ZGVmYXVsdDppZihhLm1hdGNoKC9cLlswIz9dKiQvKSlyZXR1cm4gYWEoZSxhLnNsaWNlKDAsYS5sYXN0SW5kZXhPZigiLiIpKSxyKStFcihhLnNsaWNlKGEubGFzdEluZGV4T2YoIi4iKSkpfXRocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQgZm9ybWF0IHwiK2ErInwiKX1mdW5jdGlvbiBsYShlLGEscil7cmV0dXJuKHJ8MCk9PT1yP2FhKGUsYSxyKTpWcihlLGEscil9ZnVuY3Rpb24gVGMoZSl7Zm9yKHZhciBhPVtdLHI9ITEsdD0wLG49MDt0PGUubGVuZ3RoOysrdClzd2l0Y2goZS5jaGFyQ29kZUF0KHQpKXtjYXNlIDM0OnI9IXI7YnJlYWs7Y2FzZSA5NTpjYXNlIDQyOmNhc2UgOTI6Kyt0O2JyZWFrO2Nhc2UgNTk6YVthLmxlbmd0aF09ZS5zdWJzdHIobix0LW4pLG49dCsxfWlmKGFbYS5sZW5ndGhdPWUuc3Vic3RyKG4pLHI9PT0hMCl0aHJvdyBuZXcgRXJyb3IoIkZvcm1hdCB8IitlKyJ8IHVudGVybWluYXRlZCBzdHJpbmcgIik7cmV0dXJuIGF9dmFyIGZpPS9cW1tIaE1tU3NcdTBFMEFcdTBFMTlcdTBFMTddKlxdLztmdW5jdGlvbiBacihlKXtmb3IodmFyIGE9MCxyPSIiLHQ9IiI7YTxlLmxlbmd0aDspc3dpdGNoKHI9ZS5jaGFyQXQoYSkpe2Nhc2UiRyI6czAoZSxhKSYmKGErPTYpLGErKzticmVhaztjYXNlJyInOmZvcig7ZS5jaGFyQ29kZUF0KCsrYSkhPT0zNCYmYTxlLmxlbmd0aDspOysrYTticmVhaztjYXNlIlxcIjphKz0yO2JyZWFrO2Nhc2UiXyI6YSs9MjticmVhaztjYXNlIkAiOisrYTticmVhaztjYXNlIkIiOmNhc2UiYiI6aWYoZS5jaGFyQXQoYSsxKT09PSIxInx8ZS5jaGFyQXQoYSsxKT09PSIyIilyZXR1cm4hMDtjYXNlIk0iOmNhc2UiRCI6Y2FzZSJZIjpjYXNlIkgiOmNhc2UiUyI6Y2FzZSJFIjpjYXNlIm0iOmNhc2UiZCI6Y2FzZSJ5IjpjYXNlImgiOmNhc2UicyI6Y2FzZSJlIjpjYXNlImciOnJldHVybiEwO2Nhc2UiQSI6Y2FzZSJhIjpjYXNlIuS4iiI6aWYoZS5zdWJzdHIoYSwzKS50b1VwcGVyQ2FzZSgpPT09IkEvUCJ8fGUuc3Vic3RyKGEsNSkudG9VcHBlckNhc2UoKT09PSJBTS9QTSJ8fGUuc3Vic3RyKGEsNSkudG9VcHBlckNhc2UoKT09PSLkuIrljYgv5LiL5Y2IIilyZXR1cm4hMDsrK2E7YnJlYWs7Y2FzZSJbIjpmb3IodD1yO2UuY2hhckF0KGErKykhPT0iXSImJmE8ZS5sZW5ndGg7KXQrPWUuY2hhckF0KGEpO2lmKHQubWF0Y2goZmkpKXJldHVybiEwO2JyZWFrO2Nhc2UiLiI6Y2FzZSIwIjpjYXNlIiMiOmZvcig7YTxlLmxlbmd0aCYmKCIwIz8uLEUrLSUiLmluZGV4T2Yocj1lLmNoYXJBdCgrK2EpKT4tMXx8cj09IlxcIiYmZS5jaGFyQXQoYSsxKT09Ii0iJiYiMCMiLmluZGV4T2YoZS5jaGFyQXQoYSsyKSk+LTEpOyk7YnJlYWs7Y2FzZSI/Ijpmb3IoO2UuY2hhckF0KCsrYSk9PT1yOyk7YnJlYWs7Y2FzZSIqIjorK2EsKGUuY2hhckF0KGEpPT0iICJ8fGUuY2hhckF0KGEpPT0iKiIpJiYrK2E7YnJlYWs7Y2FzZSIoIjpjYXNlIikiOisrYTticmVhaztjYXNlIjEiOmNhc2UiMiI6Y2FzZSIzIjpjYXNlIjQiOmNhc2UiNSI6Y2FzZSI2IjpjYXNlIjciOmNhc2UiOCI6Y2FzZSI5Ijpmb3IoO2E8ZS5sZW5ndGgmJiIwMTIzNDU2Nzg5Ii5pbmRleE9mKGUuY2hhckF0KCsrYSkpPi0xOyk7YnJlYWs7Y2FzZSIgIjorK2E7YnJlYWs7ZGVmYXVsdDorK2E7YnJlYWt9cmV0dXJuITF9ZnVuY3Rpb24gRWMoZSxhLHIsdCl7Zm9yKHZhciBuPVtdLGk9IiIsZj0wLHM9IiIsYz0idCIsbyxsLHUseD0iSCI7ZjxlLmxlbmd0aDspc3dpdGNoKHM9ZS5jaGFyQXQoZikpe2Nhc2UiRyI6aWYoIXMwKGUsZikpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgY2hhcmFjdGVyICIrcysiIGluICIrZSk7bltuLmxlbmd0aF09e3Q6IkciLHY6IkdlbmVyYWwifSxmKz03O2JyZWFrO2Nhc2UnIic6Zm9yKGk9IiI7KHU9ZS5jaGFyQ29kZUF0KCsrZikpIT09MzQmJmY8ZS5sZW5ndGg7KWkrPVN0cmluZy5mcm9tQ2hhckNvZGUodSk7bltuLmxlbmd0aF09e3Q6InQiLHY6aX0sKytmO2JyZWFrO2Nhc2UiXFwiOnZhciBoPWUuY2hhckF0KCsrZiksZz1oPT09IigifHxoPT09IikiP2g6InQiO25bbi5sZW5ndGhdPXt0OmcsdjpofSwrK2Y7YnJlYWs7Y2FzZSJfIjpuW24ubGVuZ3RoXT17dDoidCIsdjoiICJ9LGYrPTI7YnJlYWs7Y2FzZSJAIjpuW24ubGVuZ3RoXT17dDoiVCIsdjphfSwrK2Y7YnJlYWs7Y2FzZSJCIjpjYXNlImIiOmlmKGUuY2hhckF0KGYrMSk9PT0iMSJ8fGUuY2hhckF0KGYrMSk9PT0iMiIpe2lmKG89PW51bGwmJihvPWNhKGEscixlLmNoYXJBdChmKzEpPT09IjIiKSxvPT1udWxsKSlyZXR1cm4iIjtuW24ubGVuZ3RoXT17dDoiWCIsdjplLnN1YnN0cihmLDIpfSxjPXMsZis9MjticmVha31jYXNlIk0iOmNhc2UiRCI6Y2FzZSJZIjpjYXNlIkgiOmNhc2UiUyI6Y2FzZSJFIjpzPXMudG9Mb3dlckNhc2UoKTtjYXNlIm0iOmNhc2UiZCI6Y2FzZSJ5IjpjYXNlImgiOmNhc2UicyI6Y2FzZSJlIjpjYXNlImciOmlmKGE8MHx8bz09bnVsbCYmKG89Y2EoYSxyKSxvPT1udWxsKSlyZXR1cm4iIjtmb3IoaT1zOysrZjxlLmxlbmd0aCYmZS5jaGFyQXQoZikudG9Mb3dlckNhc2UoKT09PXM7KWkrPXM7cz09PSJtIiYmYy50b0xvd2VyQ2FzZSgpPT09ImgiJiYocz0iTSIpLHM9PT0iaCImJihzPXgpLG5bbi5sZW5ndGhdPXt0OnMsdjppfSxjPXM7YnJlYWs7Y2FzZSJBIjpjYXNlImEiOmNhc2Ui5LiKIjp2YXIgbT17dDpzLHY6c307aWYobz09bnVsbCYmKG89Y2EoYSxyKSksZS5zdWJzdHIoZiwzKS50b1VwcGVyQ2FzZSgpPT09IkEvUCI/KG8hPW51bGwmJihtLnY9by5IPj0xMj9lLmNoYXJBdChmKzIpOnMpLG0udD0iVCIseD0iaCIsZis9Myk6ZS5zdWJzdHIoZiw1KS50b1VwcGVyQ2FzZSgpPT09IkFNL1BNIj8obyE9bnVsbCYmKG0udj1vLkg+PTEyPyJQTSI6IkFNIiksbS50PSJUIixmKz01LHg9ImgiKTplLnN1YnN0cihmLDUpLnRvVXBwZXJDYXNlKCk9PT0i5LiK5Y2IL+S4i+WNiCI/KG8hPW51bGwmJihtLnY9by5IPj0xMj8i5LiL5Y2IIjoi5LiK5Y2IIiksbS50PSJUIixmKz01LHg9ImgiKToobS50PSJ0IiwrK2YpLG89PW51bGwmJm0udD09PSJUIilyZXR1cm4iIjtuW24ubGVuZ3RoXT1tLGM9czticmVhaztjYXNlIlsiOmZvcihpPXM7ZS5jaGFyQXQoZisrKSE9PSJdIiYmZjxlLmxlbmd0aDspaSs9ZS5jaGFyQXQoZik7aWYoaS5zbGljZSgtMSkhPT0iXSIpdGhyb3cndW50ZXJtaW5hdGVkICJbIiBibG9jazogfCcraSsifCI7aWYoaS5tYXRjaChmaSkpe2lmKG89PW51bGwmJihvPWNhKGEsciksbz09bnVsbCkpcmV0dXJuIiI7bltuLmxlbmd0aF09e3Q6IloiLHY6aS50b0xvd2VyQ2FzZSgpfSxjPWkuY2hhckF0KDEpfWVsc2UgaS5pbmRleE9mKCIkIik+LTEmJihpPShpLm1hdGNoKC9cJChbXi1cW1xdXSopLyl8fFtdKVsxXXx8IiQiLFpyKGUpfHwobltuLmxlbmd0aF09e3Q6InQiLHY6aX0pKTticmVhaztjYXNlIi4iOmlmKG8hPW51bGwpe2ZvcihpPXM7KytmPGUubGVuZ3RoJiYocz1lLmNoYXJBdChmKSk9PT0iMCI7KWkrPXM7bltuLmxlbmd0aF09e3Q6InMiLHY6aX07YnJlYWt9Y2FzZSIwIjpjYXNlIiMiOmZvcihpPXM7KytmPGUubGVuZ3RoJiYiMCM/LixFKy0lIi5pbmRleE9mKHM9ZS5jaGFyQXQoZikpPi0xOylpKz1zO25bbi5sZW5ndGhdPXt0OiJuIix2Oml9O2JyZWFrO2Nhc2UiPyI6Zm9yKGk9cztlLmNoYXJBdCgrK2YpPT09czspaSs9cztuW24ubGVuZ3RoXT17dDpzLHY6aX0sYz1zO2JyZWFrO2Nhc2UiKiI6KytmLChlLmNoYXJBdChmKT09IiAifHxlLmNoYXJBdChmKT09IioiKSYmKytmO2JyZWFrO2Nhc2UiKCI6Y2FzZSIpIjpuW24ubGVuZ3RoXT17dDp0PT09MT8idCI6cyx2OnN9LCsrZjticmVhaztjYXNlIjEiOmNhc2UiMiI6Y2FzZSIzIjpjYXNlIjQiOmNhc2UiNSI6Y2FzZSI2IjpjYXNlIjciOmNhc2UiOCI6Y2FzZSI5Ijpmb3IoaT1zO2Y8ZS5sZW5ndGgmJiIwMTIzNDU2Nzg5Ii5pbmRleE9mKGUuY2hhckF0KCsrZikpPi0xOylpKz1lLmNoYXJBdChmKTtuW24ubGVuZ3RoXT17dDoiRCIsdjppfTticmVhaztjYXNlIiAiOm5bbi5sZW5ndGhdPXt0OnMsdjpzfSwrK2Y7YnJlYWs7Y2FzZSIkIjpuW24ubGVuZ3RoXT17dDoidCIsdjoiJCJ9LCsrZjticmVhaztkZWZhdWx0OmlmKCIsJC0rLygpOiFeJid+e308Pj3igqxhY2Zpamtsb3BxcnR1dnd4elAiLmluZGV4T2Yocyk9PT0tMSl0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCBjaGFyYWN0ZXIgIitzKyIgaW4gIitlKTtuW24ubGVuZ3RoXT17dDoidCIsdjpzfSwrK2Y7YnJlYWt9dmFyIGQ9MCxwPTAsdztmb3IoZj1uLmxlbmd0aC0xLGM9InQiO2Y+PTA7LS1mKXN3aXRjaChuW2ZdLnQpe2Nhc2UiaCI6Y2FzZSJIIjpuW2ZdLnQ9eCxjPSJoIixkPDEmJihkPTEpO2JyZWFrO2Nhc2UicyI6KHc9bltmXS52Lm1hdGNoKC9cLjArJC8pKSYmKHA9TWF0aC5tYXgocCx3WzBdLmxlbmd0aC0xKSxkPTQpLGQ8MyYmKGQ9Myk7Y2FzZSJkIjpjYXNlInkiOmNhc2UiZSI6Yz1uW2ZdLnQ7YnJlYWs7Y2FzZSJNIjpjPW5bZl0udCxkPDImJihkPTIpO2JyZWFrO2Nhc2UibSI6Yz09PSJzIiYmKG5bZl0udD0iTSIsZDwyJiYoZD0yKSk7YnJlYWs7Y2FzZSJYIjpicmVhaztjYXNlIloiOmQ8MSYmbltmXS52Lm1hdGNoKC9bSGhdLykmJihkPTEpLGQ8MiYmbltmXS52Lm1hdGNoKC9bTW1dLykmJihkPTIpLGQ8MyYmbltmXS52Lm1hdGNoKC9bU3NdLykmJihkPTMpfXZhciBfO3N3aXRjaChkKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOmNhc2UgMjpjYXNlIDM6by51Pj0uNSYmKG8udT0wLCsrby5TKSxvLlM+PTYwJiYoby5TPTAsKytvLk0pLG8uTT49NjAmJihvLk09MCwrK28uSCksby5IPj0yNCYmKG8uSD0wLCsrby5ELF89Y2Eoby5EKSxfLnU9by51LF8uUz1vLlMsXy5NPW8uTSxfLkg9by5ILG89Xyk7YnJlYWs7Y2FzZSA0OnN3aXRjaChwKXtjYXNlIDE6by51PU1hdGgucm91bmQoby51KjEwKS8xMDticmVhaztjYXNlIDI6by51PU1hdGgucm91bmQoby51KjEwMCkvMTAwO2JyZWFrO2Nhc2UgMzpvLnU9TWF0aC5yb3VuZChvLnUqMWUzKS8xZTM7YnJlYWt9by51Pj0xJiYoby51PTAsKytvLlMpLG8uUz49NjAmJihvLlM9MCwrK28uTSksby5NPj02MCYmKG8uTT0wLCsrby5IKSxvLkg+PTI0JiYoby5IPTAsKytvLkQsXz1jYShvLkQpLF8udT1vLnUsXy5TPW8uUyxfLk09by5NLF8uSD1vLkgsbz1fKTticmVha312YXIgeT0iIixSO2ZvcihmPTA7ZjxuLmxlbmd0aDsrK2Ypc3dpdGNoKG5bZl0udCl7Y2FzZSJ0IjpjYXNlIlQiOmNhc2UiICI6Y2FzZSJEIjpicmVhaztjYXNlIlgiOm5bZl0udj0iIixuW2ZdLnQ9IjsiO2JyZWFrO2Nhc2UiZCI6Y2FzZSJtIjpjYXNlInkiOmNhc2UiaCI6Y2FzZSJIIjpjYXNlIk0iOmNhc2UicyI6Y2FzZSJlIjpjYXNlImIiOmNhc2UiWiI6bltmXS52PWRjKG5bZl0udC5jaGFyQ29kZUF0KDApLG5bZl0udixvLHApLG5bZl0udD0idCI7YnJlYWs7Y2FzZSJuIjpjYXNlIj8iOmZvcihSPWYrMTtuW1JdIT1udWxsJiYoKHM9bltSXS50KT09PSI/Inx8cz09PSJEInx8KHM9PT0iICJ8fHM9PT0idCIpJiZuW1IrMV0hPW51bGwmJihuW1IrMV0udD09PSI/Inx8bltSKzFdLnQ9PT0idCImJm5bUisxXS52PT09Ii8iKXx8bltmXS50PT09IigiJiYocz09PSIgInx8cz09PSJuInx8cz09PSIpIil8fHM9PT0idCImJihuW1JdLnY9PT0iLyJ8fG5bUl0udj09PSIgIiYmbltSKzFdIT1udWxsJiZuW1IrMV0udD09Ij8iKSk7KW5bZl0udis9bltSXS52LG5bUl09e3Y6IiIsdDoiOyJ9LCsrUjt5Kz1uW2ZdLnYsZj1SLTE7YnJlYWs7Y2FzZSJHIjpuW2ZdLnQ9InQiLG5bZl0udj1QYShhLHIpO2JyZWFrfXZhciBQPSIiLGIsTjtpZih5Lmxlbmd0aD4wKXt5LmNoYXJDb2RlQXQoMCk9PTQwPyhiPWE8MCYmeS5jaGFyQ29kZUF0KDApPT09NDU/LWE6YSxOPWxhKCJuIix5LGIpKTooYj1hPDAmJnQ+MT8tYTphLE49bGEoIm4iLHksYiksYjwwJiZuWzBdJiZuWzBdLnQ9PSJ0IiYmKE49Ti5zdWJzdHIoMSksblswXS52PSItIituWzBdLnYpKSxSPU4ubGVuZ3RoLTE7dmFyIEk9bi5sZW5ndGg7Zm9yKGY9MDtmPG4ubGVuZ3RoOysrZilpZihuW2ZdIT1udWxsJiZuW2ZdLnQhPSJ0IiYmbltmXS52LmluZGV4T2YoIi4iKT4tMSl7ST1mO2JyZWFrfXZhciBCPW4ubGVuZ3RoO2lmKEk9PT1uLmxlbmd0aCYmTi5pbmRleE9mKCJFIik9PT0tMSl7Zm9yKGY9bi5sZW5ndGgtMTtmPj0wOy0tZiluW2ZdPT1udWxsfHwibj8iLmluZGV4T2YobltmXS50KT09PS0xfHwoUj49bltmXS52Lmxlbmd0aC0xPyhSLT1uW2ZdLnYubGVuZ3RoLG5bZl0udj1OLnN1YnN0cihSKzEsbltmXS52Lmxlbmd0aCkpOlI8MD9uW2ZdLnY9IiI6KG5bZl0udj1OLnN1YnN0cigwLFIrMSksUj0tMSksbltmXS50PSJ0IixCPWYpO1I+PTAmJkI8bi5sZW5ndGgmJihuW0JdLnY9Ti5zdWJzdHIoMCxSKzEpK25bQl0udil9ZWxzZSBpZihJIT09bi5sZW5ndGgmJk4uaW5kZXhPZigiRSIpPT09LTEpe2ZvcihSPU4uaW5kZXhPZigiLiIpLTEsZj1JO2Y+PTA7LS1mKWlmKCEobltmXT09bnVsbHx8Im4/Ii5pbmRleE9mKG5bZl0udCk9PT0tMSkpe2ZvcihsPW5bZl0udi5pbmRleE9mKCIuIik+LTEmJmY9PT1JP25bZl0udi5pbmRleE9mKCIuIiktMTpuW2ZdLnYubGVuZ3RoLTEsUD1uW2ZdLnYuc3Vic3RyKGwrMSk7bD49MDstLWwpUj49MCYmKG5bZl0udi5jaGFyQXQobCk9PT0iMCJ8fG5bZl0udi5jaGFyQXQobCk9PT0iIyIpJiYoUD1OLmNoYXJBdChSLS0pK1ApO25bZl0udj1QLG5bZl0udD0idCIsQj1mfWZvcihSPj0wJiZCPG4ubGVuZ3RoJiYobltCXS52PU4uc3Vic3RyKDAsUisxKStuW0JdLnYpLFI9Ti5pbmRleE9mKCIuIikrMSxmPUk7ZjxuLmxlbmd0aDsrK2YpaWYoIShuW2ZdPT1udWxsfHwibj8oIi5pbmRleE9mKG5bZl0udCk9PT0tMSYmZiE9PUkpKXtmb3IobD1uW2ZdLnYuaW5kZXhPZigiLiIpPi0xJiZmPT09ST9uW2ZdLnYuaW5kZXhPZigiLiIpKzE6MCxQPW5bZl0udi5zdWJzdHIoMCxsKTtsPG5bZl0udi5sZW5ndGg7KytsKVI8Ti5sZW5ndGgmJihQKz1OLmNoYXJBdChSKyspKTtuW2ZdLnY9UCxuW2ZdLnQ9InQiLEI9Zn19fWZvcihmPTA7ZjxuLmxlbmd0aDsrK2YpbltmXSE9bnVsbCYmIm4/Ii5pbmRleE9mKG5bZl0udCk+LTEmJihiPXQ+MSYmYTwwJiZmPjAmJm5bZi0xXS52PT09Ii0iPy1hOmEsbltmXS52PWxhKG5bZl0udCxuW2ZdLnYsYiksbltmXS50PSJ0Iik7dmFyIEw9IiI7Zm9yKGY9MDtmIT09bi5sZW5ndGg7KytmKW5bZl0hPW51bGwmJihMKz1uW2ZdLnYpO3JldHVybiBMfXZhciBjaT0vXFsoPXw+Wz1dP3w8Wz49XT8pKC0/XGQrKD86XC5cZCopPylcXS87ZnVuY3Rpb24gb2koZSxhKXtpZihhPT1udWxsKXJldHVybiExO3ZhciByPXBhcnNlRmxvYXQoYVsyXSk7c3dpdGNoKGFbMV0pe2Nhc2UiPSI6aWYoZT09cilyZXR1cm4hMDticmVhaztjYXNlIj4iOmlmKGU+cilyZXR1cm4hMDticmVhaztjYXNlIjwiOmlmKGU8cilyZXR1cm4hMDticmVhaztjYXNlIjw+IjppZihlIT1yKXJldHVybiEwO2JyZWFrO2Nhc2UiPj0iOmlmKGU+PXIpcmV0dXJuITA7YnJlYWs7Y2FzZSI8PSI6aWYoZTw9cilyZXR1cm4hMDticmVha31yZXR1cm4hMX1mdW5jdGlvbiBBYyhlLGEpe3ZhciByPVRjKGUpLHQ9ci5sZW5ndGgsbj1yW3QtMV0uaW5kZXhPZigiQCIpO2lmKHQ8NCYmbj4tMSYmLS10LHIubGVuZ3RoPjQpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgZmluZCByaWdodCBmb3JtYXQgZm9yIHwiK3Iuam9pbigifCIpKyJ8Iik7aWYodHlwZW9mIGEhPSJudW1iZXIiKXJldHVybls0LHIubGVuZ3RoPT09NHx8bj4tMT9yW3IubGVuZ3RoLTFdOiJAIl07c3dpdGNoKHR5cGVvZiBhPT0ibnVtYmVyIiYmIWlzRmluaXRlKGEpJiYoYT0wKSxyLmxlbmd0aCl7Y2FzZSAxOnI9bj4tMT9bIkdlbmVyYWwiLCJHZW5lcmFsIiwiR2VuZXJhbCIsclswXV06W3JbMF0sclswXSxyWzBdLCJAIl07YnJlYWs7Y2FzZSAyOnI9bj4tMT9bclswXSxyWzBdLHJbMF0sclsxXV06W3JbMF0sclsxXSxyWzBdLCJAIl07YnJlYWs7Y2FzZSAzOnI9bj4tMT9bclswXSxyWzFdLHJbMF0sclsyXV06W3JbMF0sclsxXSxyWzJdLCJAIl07YnJlYWt9dmFyIGk9YT4wP3JbMF06YTwwP3JbMV06clsyXTtpZihyWzBdLmluZGV4T2YoIlsiKT09PS0xJiZyWzFdLmluZGV4T2YoIlsiKT09PS0xKXJldHVyblt0LGldO2lmKHJbMF0ubWF0Y2goL1xbWz08Pl0vKSE9bnVsbHx8clsxXS5tYXRjaCgvXFtbPTw+XS8pIT1udWxsKXt2YXIgZj1yWzBdLm1hdGNoKGNpKSxzPXJbMV0ubWF0Y2goY2kpO3JldHVybiBvaShhLGYpP1t0LHJbMF1dOm9pKGEscyk/W3QsclsxXV06W3QscltmIT1udWxsJiZzIT1udWxsPzI6MV1dfXJldHVyblt0LGldfWZ1bmN0aW9uIFJyKGUsYSxyKXtyPT1udWxsJiYocj17fSk7dmFyIHQ9IiI7c3dpdGNoKHR5cGVvZiBlKXtjYXNlInN0cmluZyI6ZT09Im0vZC95eSImJnIuZGF0ZU5GP3Q9ci5kYXRlTkY6dD1lO2JyZWFrO2Nhc2UibnVtYmVyIjplPT0xNCYmci5kYXRlTkY/dD1yLmRhdGVORjp0PShyLnRhYmxlIT1udWxsP3IudGFibGU6VGUpW2VdLHQ9PW51bGwmJih0PXIudGFibGUmJnIudGFibGVbWm5bZV1dfHxUZVtabltlXV0pLHQ9PW51bGwmJih0PWNjW2VdfHwiR2VuZXJhbCIpO2JyZWFrfWlmKHMwKHQsMCkpcmV0dXJuIFBhKGEscik7YSBpbnN0YW5jZW9mIERhdGUmJihhPW9yKGEsci5kYXRlMTkwNCkpO3ZhciBuPUFjKHQsYSk7aWYoczAoblsxXSkpcmV0dXJuIFBhKGEscik7aWYoYT09PSEwKWE9IlRSVUUiO2Vsc2UgaWYoYT09PSExKWE9IkZBTFNFIjtlbHNle2lmKGE9PT0iInx8YT09bnVsbClyZXR1cm4iIjtpZihpc05hTihhKSYmblsxXS5pbmRleE9mKCIwIik+LTEpcmV0dXJuIiNOVU0hIjtpZighaXNGaW5pdGUoYSkmJm5bMV0uaW5kZXhPZigiMCIpPi0xKXJldHVybiIjRElWLzAhIn1yZXR1cm4gRWMoblsxXSxhLHIsblswXSl9ZnVuY3Rpb24geWMoZSxhKXtpZih0eXBlb2YgYSE9Im51bWJlciIpe2E9K2F8fC0xO2Zvcih2YXIgcj0wO3I8MzkyOysrcil7aWYoVGVbcl09PW51bGwpe2E8MCYmKGE9cik7Y29udGludWV9aWYoVGVbcl09PWUpe2E9cjticmVha319YTwwJiYoYT0zOTEpfXJldHVybiBUZVthXT1lLGF9ZnVuY3Rpb24gbGkoKXtUZT1mYygpfXZhciBTYz17NTonIiQiIywjIzBfKTtcXCgiJCIjLCMjMFxcKScsNjonIiQiIywjIzBfKTtbUmVkXVxcKCIkIiMsIyMwXFwpJyw3OiciJCIjLCMjMC4wMF8pO1xcKCIkIiMsIyMwLjAwXFwpJyw4OiciJCIjLCMjMC4wMF8pO1tSZWRdXFwoIiQiIywjIzAuMDBcXCknLDIzOiJHZW5lcmFsIiwyNDoiR2VuZXJhbCIsMjU6IkdlbmVyYWwiLDI2OiJHZW5lcmFsIiwyNzoibS9kL3l5IiwyODoibS9kL3l5IiwyOToibS9kL3l5IiwzMDoibS9kL3l5IiwzMToibS9kL3l5IiwzMjoiaDptbTpzcyIsMzM6Img6bW06c3MiLDM0OiJoOm1tOnNzIiwzNToiaDptbTpzcyIsMzY6Im0vZC95eSIsNDE6J18oKiAjLCMjMF8pO18oKiAoIywjIzApO18oKiAiLSJfKTtfKEBfKScsNDI6J18oIiQiKiAjLCMjMF8pO18oIiQiKiAoIywjIzApO18oIiQiKiAiLSJfKTtfKEBfKScsNDM6J18oKiAjLCMjMC4wMF8pO18oKiAoIywjIzAuMDApO18oKiAiLSI/P18pO18oQF8pJyw0NDonXygiJCIqICMsIyMwLjAwXyk7XygiJCIqICgjLCMjMC4wMCk7XygiJCIqICItIj8/Xyk7XyhAXyknLDUwOiJtL2QveXkiLDUxOiJtL2QveXkiLDUyOiJtL2QveXkiLDUzOiJtL2QveXkiLDU0OiJtL2QveXkiLDU1OiJtL2QveXkiLDU2OiJtL2QveXkiLDU3OiJtL2QveXkiLDU4OiJtL2QveXkiLDU5OiIwIiw2MDoiMC4wMCIsNjE6IiMsIyMwIiw2MjoiIywjIzAuMDAiLDYzOiciJCIjLCMjMF8pO1xcKCIkIiMsIyMwXFwpJyw2NDonIiQiIywjIzBfKTtbUmVkXVxcKCIkIiMsIyMwXFwpJyw2NTonIiQiIywjIzAuMDBfKTtcXCgiJCIjLCMjMC4wMFxcKScsNjY6JyIkIiMsIyMwLjAwXyk7W1JlZF1cXCgiJCIjLCMjMC4wMFxcKScsNjc6IjAlIiw2ODoiMC4wMCUiLDY5OiIjID8vPyIsNzA6IiMgPz8vPz8iLDcxOiJtL2QveXkiLDcyOiJtL2QveXkiLDczOiJkLW1tbS15eSIsNzQ6ImQtbW1tIiw3NToibW1tLXl5Iiw3NjoiaDptbSIsNzc6Img6bW06c3MiLDc4OiJtL2QveXkgaDptbSIsNzk6Im1tOnNzIiw4MDoiW2hdOm1tOnNzIiw4MToibW1zcy4wIn0sYzA9L1tkRF0rfFttTV0rfFt5WWVFXSt8W0hoXSt8W1NzXSsvZztmdW5jdGlvbiBDYyhlKXt2YXIgYT10eXBlb2YgZT09Im51bWJlciI/VGVbZV06ZTtyZXR1cm4gYT1hLnJlcGxhY2UoYzAsIihcXGQrKSIpLGMwLmxhc3RJbmRleD0wLG5ldyBSZWdFeHAoIl4iK2ErIiQiKX1mdW5jdGlvbiBiYyhlLGEscil7dmFyIHQ9LTEsbj0tMSxpPS0xLGY9LTEscz0tMSxjPS0xOyhhLm1hdGNoKGMwKXx8W10pLmZvckVhY2goZnVuY3Rpb24odSx4KXt2YXIgaD1wYXJzZUludChyW3grMV0sMTApO3N3aXRjaCh1LnRvTG93ZXJDYXNlKCkuY2hhckF0KDApKXtjYXNlInkiOnQ9aDticmVhaztjYXNlImQiOmk9aDticmVhaztjYXNlImgiOmY9aDticmVhaztjYXNlInMiOmM9aDticmVhaztjYXNlIm0iOmY+PTA/cz1oOm49aDticmVha319KSxjMC5sYXN0SW5kZXg9MCxjPj0wJiZzPT0tMSYmbj49MCYmKHM9bixuPS0xKTt2YXIgbz0oIiIrKHQ+PTA/dDpuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkpKS5zbGljZSgtNCkrIi0iKygiMDAiKyhuPj0xP246MSkpLnNsaWNlKC0yKSsiLSIrKCIwMCIrKGk+PTE/aToxKSkuc2xpY2UoLTIpO28ubGVuZ3RoPT03JiYobz0iMCIrbyksby5sZW5ndGg9PTgmJihvPSIyMCIrbyk7dmFyIGw9KCIwMCIrKGY+PTA/ZjowKSkuc2xpY2UoLTIpKyI6IisoIjAwIisocz49MD9zOjApKS5zbGljZSgtMikrIjoiKygiMDAiKyhjPj0wP2M6MCkpLnNsaWNlKC0yKTtyZXR1cm4gZj09LTEmJnM9PS0xJiZjPT0tMT9vOnQ9PS0xJiZuPT0tMSYmaT09LTE/bDpvKyJUIitsfXZhciBJYz17ImQubSI6ImRcXC5tIn07ZnVuY3Rpb24gTGEoZSxhKXtyZXR1cm4geWMoSWNbZV18fGUsYSl9dmFyIHVpPWZ1bmN0aW9uKCl7dmFyIGU9e307ZS52ZXJzaW9uPSIxLjIuMCI7ZnVuY3Rpb24gYSgpe2Zvcih2YXIgYj0wLE49bmV3IEFycmF5KDI1NiksST0wO0khPTI1NjsrK0kpYj1JLGI9YiYxPy0zMDY2NzQ5MTJeYj4+PjE6Yj4+PjEsYj1iJjE/LTMwNjY3NDkxMl5iPj4+MTpiPj4+MSxiPWImMT8tMzA2Njc0OTEyXmI+Pj4xOmI+Pj4xLGI9YiYxPy0zMDY2NzQ5MTJeYj4+PjE6Yj4+PjEsYj1iJjE/LTMwNjY3NDkxMl5iPj4+MTpiPj4+MSxiPWImMT8tMzA2Njc0OTEyXmI+Pj4xOmI+Pj4xLGI9YiYxPy0zMDY2NzQ5MTJeYj4+PjE6Yj4+PjEsYj1iJjE/LTMwNjY3NDkxMl5iPj4+MTpiPj4+MSxOW0ldPWI7cmV0dXJuIHR5cGVvZiBJbnQzMkFycmF5PCJ1Ij9uZXcgSW50MzJBcnJheShOKTpOfXZhciByPWEoKTtmdW5jdGlvbiB0KGIpe3ZhciBOPTAsST0wLEI9MCxMPXR5cGVvZiBJbnQzMkFycmF5PCJ1Ij9uZXcgSW50MzJBcnJheSg0MDk2KTpuZXcgQXJyYXkoNDA5Nik7Zm9yKEI9MDtCIT0yNTY7KytCKUxbQl09YltCXTtmb3IoQj0wO0IhPTI1NjsrK0IpZm9yKEk9YltCXSxOPTI1NitCO048NDA5NjtOKz0yNTYpST1MW05dPUk+Pj44XmJbSSYyNTVdO3ZhciBHPVtdO2ZvcihCPTE7QiE9MTY7KytCKUdbQi0xXT10eXBlb2YgSW50MzJBcnJheTwidSImJnR5cGVvZiBMLnN1YmFycmF5PT0iZnVuY3Rpb24iP0wuc3ViYXJyYXkoQioyNTYsQioyNTYrMjU2KTpMLnNsaWNlKEIqMjU2LEIqMjU2KzI1Nik7cmV0dXJuIEd9dmFyIG49dChyKSxpPW5bMF0sZj1uWzFdLHM9blsyXSxjPW5bM10sbz1uWzRdLGw9bls1XSx1PW5bNl0seD1uWzddLGg9bls4XSxnPW5bOV0sbT1uWzEwXSxkPW5bMTFdLHA9blsxMl0sdz1uWzEzXSxfPW5bMTRdO2Z1bmN0aW9uIHkoYixOKXtmb3IodmFyIEk9Tl4tMSxCPTAsTD1iLmxlbmd0aDtCPEw7KUk9ST4+PjheclsoSV5iLmNoYXJDb2RlQXQoQisrKSkmMjU1XTtyZXR1cm5+SX1mdW5jdGlvbiBSKGIsTil7Zm9yKHZhciBJPU5eLTEsQj1iLmxlbmd0aC0xNSxMPTA7TDxCOylJPV9bYltMKytdXkkmMjU1XV53W2JbTCsrXV5JPj44JjI1NV1ecFtiW0wrK11eST4+MTYmMjU1XV5kW2JbTCsrXV5JPj4+MjRdXm1bYltMKytdXV5nW2JbTCsrXV1eaFtiW0wrK11dXnhbYltMKytdXV51W2JbTCsrXV1ebFtiW0wrK11dXm9bYltMKytdXV5jW2JbTCsrXV1ec1tiW0wrK11dXmZbYltMKytdXV5pW2JbTCsrXV1ecltiW0wrK11dO2ZvcihCKz0xNTtMPEI7KUk9ST4+PjheclsoSV5iW0wrK10pJjI1NV07cmV0dXJufkl9ZnVuY3Rpb24gUChiLE4pe2Zvcih2YXIgST1OXi0xLEI9MCxMPWIubGVuZ3RoLEc9MCxpZT0wO0I8TDspRz1iLmNoYXJDb2RlQXQoQisrKSxHPDEyOD9JPUk+Pj44XnJbKEleRykmMjU1XTpHPDIwNDg/KEk9ST4+PjheclsoSV4oMTkyfEc+PjYmMzEpKSYyNTVdLEk9ST4+PjheclsoSV4oMTI4fEcmNjMpKSYyNTVdKTpHPj01NTI5NiYmRzw1NzM0ND8oRz0oRyYxMDIzKSs2NCxpZT1iLmNoYXJDb2RlQXQoQisrKSYxMDIzLEk9ST4+PjheclsoSV4oMjQwfEc+PjgmNykpJjI1NV0sST1JPj4+OF5yWyhJXigxMjh8Rz4+MiY2MykpJjI1NV0sST1JPj4+OF5yWyhJXigxMjh8aWU+PjYmMTV8KEcmMyk8PDQpKSYyNTVdLEk9ST4+PjheclsoSV4oMTI4fGllJjYzKSkmMjU1XSk6KEk9ST4+PjheclsoSV4oMjI0fEc+PjEyJjE1KSkmMjU1XSxJPUk+Pj44XnJbKEleKDEyOHxHPj42JjYzKSkmMjU1XSxJPUk+Pj44XnJbKEleKDEyOHxHJjYzKSkmMjU1XSk7cmV0dXJufkl9cmV0dXJuIGUudGFibGU9cixlLmJzdHI9eSxlLmJ1Zj1SLGUuc3RyPVAsZX0oKSxNZT1mdW5jdGlvbigpe3ZhciBhPXt9O2EudmVyc2lvbj0iMS4yLjIiO2Z1bmN0aW9uIHIodixUKXtmb3IodmFyIGs9di5zcGxpdCgiLyIpLEY9VC5zcGxpdCgiLyIpLEU9MCxTPTAsVz1NYXRoLm1pbihrLmxlbmd0aCxGLmxlbmd0aCk7RTxXOysrRSl7aWYoUz1rW0VdLmxlbmd0aC1GW0VdLmxlbmd0aClyZXR1cm4gUztpZihrW0VdIT1GW0VdKXJldHVybiBrW0VdPEZbRV0/LTE6MX1yZXR1cm4gay5sZW5ndGgtRi5sZW5ndGh9ZnVuY3Rpb24gdCh2KXtpZih2LmNoYXJBdCh2Lmxlbmd0aC0xKT09Ii8iKXJldHVybiB2LnNsaWNlKDAsLTEpLmluZGV4T2YoIi8iKT09PS0xP3Y6dCh2LnNsaWNlKDAsLTEpKTt2YXIgVD12Lmxhc3RJbmRleE9mKCIvIik7cmV0dXJuIFQ9PT0tMT92OnYuc2xpY2UoMCxUKzEpfWZ1bmN0aW9uIG4odil7aWYodi5jaGFyQXQodi5sZW5ndGgtMSk9PSIvIilyZXR1cm4gbih2LnNsaWNlKDAsLTEpKTt2YXIgVD12Lmxhc3RJbmRleE9mKCIvIik7cmV0dXJuIFQ9PT0tMT92OnYuc2xpY2UoVCsxKX1mdW5jdGlvbiBpKHYsVCl7dHlwZW9mIFQ9PSJzdHJpbmciJiYoVD1uZXcgRGF0ZShUKSk7dmFyIGs9VC5nZXRIb3VycygpO2s9azw8NnxULmdldE1pbnV0ZXMoKSxrPWs8PDV8VC5nZXRTZWNvbmRzKCk+Pj4xLHYud3JpdGVfc2hpZnQoMixrKTt2YXIgRj1ULmdldEZ1bGxZZWFyKCktMTk4MDtGPUY8PDR8VC5nZXRNb250aCgpKzEsRj1GPDw1fFQuZ2V0RGF0ZSgpLHYud3JpdGVfc2hpZnQoMixGKX1mdW5jdGlvbiBmKHYpe3ZhciBUPXYucmVhZF9zaGlmdCgyKSY2NTUzNSxrPXYucmVhZF9zaGlmdCgyKSY2NTUzNSxGPW5ldyBEYXRlLEU9ayYzMTtrPj4+PTU7dmFyIFM9ayYxNTtrPj4+PTQsRi5zZXRNaWxsaXNlY29uZHMoMCksRi5zZXRGdWxsWWVhcihrKzE5ODApLEYuc2V0TW9udGgoUy0xKSxGLnNldERhdGUoRSk7dmFyIFc9VCYzMTtUPj4+PTU7dmFyIEs9VCY2MztyZXR1cm4gVD4+Pj02LEYuc2V0SG91cnMoVCksRi5zZXRNaW51dGVzKEspLEYuc2V0U2Vjb25kcyhXPDwxKSxGfWZ1bmN0aW9uIHModil7c3IodiwwKTtmb3IodmFyIFQ9e30saz0wO3YubDw9di5sZW5ndGgtNDspe3ZhciBGPXYucmVhZF9zaGlmdCgyKSxFPXYucmVhZF9zaGlmdCgyKSxTPXYubCtFLFc9e307c3dpdGNoKEYpe2Nhc2UgMjE1ODk6az12LnJlYWRfc2hpZnQoMSksayYxJiYoVy5tdGltZT12LnJlYWRfc2hpZnQoNCkpLEU+NSYmKGsmMiYmKFcuYXRpbWU9di5yZWFkX3NoaWZ0KDQpKSxrJjQmJihXLmN0aW1lPXYucmVhZF9zaGlmdCg0KSkpLFcubXRpbWUmJihXLm10PW5ldyBEYXRlKFcubXRpbWUqMWUzKSk7YnJlYWs7Y2FzZSAxOnt2YXIgSz12LnJlYWRfc2hpZnQoNCksSD12LnJlYWRfc2hpZnQoNCk7Vy51c3o9SCpNYXRoLnBvdygyLDMyKStLLEs9di5yZWFkX3NoaWZ0KDQpLEg9di5yZWFkX3NoaWZ0KDQpLFcuY3N6PUgqTWF0aC5wb3coMiwzMikrS31icmVha312Lmw9UyxUW0ZdPVd9cmV0dXJuIFR9dmFyIGM7ZnVuY3Rpb24gbygpe3JldHVybiBjfHwoYz1EYyl9ZnVuY3Rpb24gbCh2LFQpe2lmKHZbMF09PTgwJiZ2WzFdPT03NSlyZXR1cm4gZTAodixUKTtpZigodlswXXwzMik9PTEwOSYmKHZbMV18MzIpPT0xMDUpcmV0dXJuIEZ0KHYsVCk7aWYodi5sZW5ndGg8NTEyKXRocm93IG5ldyBFcnJvcigiQ0ZCIGZpbGUgc2l6ZSAiK3YubGVuZ3RoKyIgPCA1MTIiKTt2YXIgaz0zLEY9NTEyLEU9MCxTPTAsVz0wLEs9MCxIPTAsVj1bXSxYPXYuc2xpY2UoMCw1MTIpO3NyKFgsMCk7dmFyIGFlPXUoWCk7c3dpdGNoKGs9YWVbMF0sayl7Y2FzZSAzOkY9NTEyO2JyZWFrO2Nhc2UgNDpGPTQwOTY7YnJlYWs7Y2FzZSAwOmlmKGFlWzFdPT0wKXJldHVybiBlMCh2LFQpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJNYWpvciBWZXJzaW9uOiBFeHBlY3RlZCAzIG9yIDQgc2F3ICIrayl9RiE9PTUxMiYmKFg9di5zbGljZSgwLEYpLHNyKFgsMjgpKTt2YXIgc2U9di5zbGljZSgwLEYpO3goWCxrKTt2YXIgdmU9WC5yZWFkX3NoaWZ0KDQsImkiKTtpZihrPT09MyYmdmUhPT0wKXRocm93IG5ldyBFcnJvcigiIyBEaXJlY3RvcnkgU2VjdG9yczogRXhwZWN0ZWQgMCBzYXcgIit2ZSk7WC5sKz00LFc9WC5yZWFkX3NoaWZ0KDQsImkiKSxYLmwrPTQsWC5jaGsoIjAwMTAwMDAwIiwiTWluaSBTdHJlYW0gQ3V0b2ZmIFNpemU6ICIpLEs9WC5yZWFkX3NoaWZ0KDQsImkiKSxFPVgucmVhZF9zaGlmdCg0LCJpIiksSD1YLnJlYWRfc2hpZnQoNCwiaSIpLFM9WC5yZWFkX3NoaWZ0KDQsImkiKTtmb3IodmFyIHRlPS0xLGNlPTA7Y2U8MTA5JiYodGU9WC5yZWFkX3NoaWZ0KDQsImkiKSwhKHRlPDApKTsrK2NlKVZbY2VdPXRlO3ZhciBTZT1oKHYsRik7ZChILFMsU2UsRixWKTt2YXIgSmU9dyhTZSxXLFYsRik7VzxKZS5sZW5ndGgmJihKZVtXXS5uYW1lPSIhRGlyZWN0b3J5IiksRT4wJiZLIT09aWUmJihKZVtLXS5uYW1lPSIhTWluaUZBVCIpLEplW1ZbMF1dLm5hbWU9IiFGQVQiLEplLmZhdF9hZGRycz1WLEplLnNzej1GO3ZhciBRZT17fSxUcj1bXSxyMD1bXSxhMD1bXTtfKFcsSmUsU2UsVHIsRSxRZSxyMCxLKSxnKHIwLGEwLFRyKSxUci5zaGlmdCgpO3ZhciB0MD17RmlsZUluZGV4OnIwLEZ1bGxQYXRoczphMH07cmV0dXJuIFQmJlQucmF3JiYodDAucmF3PXtoZWFkZXI6c2Usc2VjdG9yczpTZX0pLHQwfWZ1bmN0aW9uIHUodil7aWYodlt2LmxdPT04MCYmdlt2LmwrMV09PTc1KXJldHVyblswLDBdO3YuY2hrKG5lLCJIZWFkZXIgU2lnbmF0dXJlOiAiKSx2LmwrPTE2O3ZhciBUPXYucmVhZF9zaGlmdCgyLCJ1Iik7cmV0dXJuW3YucmVhZF9zaGlmdCgyLCJ1IiksVF19ZnVuY3Rpb24geCh2LFQpe3ZhciBrPTk7c3dpdGNoKHYubCs9MixrPXYucmVhZF9zaGlmdCgyKSl7Y2FzZSA5OmlmKFQhPTMpdGhyb3cgbmV3IEVycm9yKCJTZWN0b3IgU2hpZnQ6IEV4cGVjdGVkIDkgc2F3ICIrayk7YnJlYWs7Y2FzZSAxMjppZihUIT00KXRocm93IG5ldyBFcnJvcigiU2VjdG9yIFNoaWZ0OiBFeHBlY3RlZCAxMiBzYXcgIitrKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiU2VjdG9yIFNoaWZ0OiBFeHBlY3RlZCA5IG9yIDEyIHNhdyAiK2spfXYuY2hrKCIwNjAwIiwiTWluaSBTZWN0b3IgU2hpZnQ6ICIpLHYuY2hrKCIwMDAwMDAwMDAwMDAiLCJSZXNlcnZlZDogIil9ZnVuY3Rpb24gaCh2LFQpe2Zvcih2YXIgaz1NYXRoLmNlaWwodi5sZW5ndGgvVCktMSxGPVtdLEU9MTtFPGs7KytFKUZbRS0xXT12LnNsaWNlKEUqVCwoRSsxKSpUKTtyZXR1cm4gRltrLTFdPXYuc2xpY2UoaypUKSxGfWZ1bmN0aW9uIGcodixULGspe2Zvcih2YXIgRj0wLEU9MCxTPTAsVz0wLEs9MCxIPWsubGVuZ3RoLFY9W10sWD1bXTtGPEg7KytGKVZbRl09WFtGXT1GLFRbRl09a1tGXTtmb3IoO0s8WC5sZW5ndGg7KytLKUY9WFtLXSxFPXZbRl0uTCxTPXZbRl0uUixXPXZbRl0uQyxWW0ZdPT09RiYmKEUhPT0tMSYmVltFXSE9PUUmJihWW0ZdPVZbRV0pLFMhPT0tMSYmVltTXSE9PVMmJihWW0ZdPVZbU10pKSxXIT09LTEmJihWW1ddPUYpLEUhPT0tMSYmRiE9VltGXSYmKFZbRV09VltGXSxYLmxhc3RJbmRleE9mKEUpPEsmJlgucHVzaChFKSksUyE9PS0xJiZGIT1WW0ZdJiYoVltTXT1WW0ZdLFgubGFzdEluZGV4T2YoUyk8SyYmWC5wdXNoKFMpKTtmb3IoRj0xO0Y8SDsrK0YpVltGXT09PUYmJihTIT09LTEmJlZbU10hPT1TP1ZbRl09VltTXTpFIT09LTEmJlZbRV0hPT1FJiYoVltGXT1WW0VdKSk7Zm9yKEY9MTtGPEg7KytGKWlmKHZbRl0udHlwZSE9PTApe2lmKEs9RixLIT1WW0tdKWRvIEs9VltLXSxUW0ZdPVRbS10rIi8iK1RbRl07d2hpbGUoSyE9PTAmJlZbS10hPT0tMSYmSyE9VltLXSk7VltGXT0tMX1mb3IoVFswXSs9Ii8iLEY9MTtGPEg7KytGKXZbRl0udHlwZSE9PTImJihUW0ZdKz0iLyIpfWZ1bmN0aW9uIG0odixULGspe2Zvcih2YXIgRj12LnN0YXJ0LEU9di5zaXplLFM9W10sVz1GO2smJkU+MCYmVz49MDspUy5wdXNoKFQuc2xpY2UoVypHLFcqRytHKSksRS09RyxXPVdhKGssVyo0KTtyZXR1cm4gUy5sZW5ndGg9PT0wP2ZyKDApOnlhKFMpLnNsaWNlKDAsdi5zaXplKX1mdW5jdGlvbiBkKHYsVCxrLEYsRSl7dmFyIFM9aWU7aWYodj09PWllKXtpZihUIT09MCl0aHJvdyBuZXcgRXJyb3IoIkRJRkFUIGNoYWluIHNob3J0ZXIgdGhhbiBleHBlY3RlZCIpfWVsc2UgaWYodiE9PS0xKXt2YXIgVz1rW3ZdLEs9KEY+Pj4yKS0xO2lmKCFXKXJldHVybjtmb3IodmFyIEg9MDtIPEsmJihTPVdhKFcsSCo0KSkhPT1pZTsrK0gpRS5wdXNoKFMpO1Q+PTEmJmQoV2EoVyxGLTQpLFQtMSxrLEYsRSl9fWZ1bmN0aW9uIHAodixULGssRixFKXt2YXIgUz1bXSxXPVtdO0V8fChFPVtdKTt2YXIgSz1GLTEsSD0wLFY9MDtmb3IoSD1UO0g+PTA7KXtFW0hdPSEwLFNbUy5sZW5ndGhdPUgsVy5wdXNoKHZbSF0pO3ZhciBYPWtbTWF0aC5mbG9vcihIKjQvRildO2lmKFY9SCo0JkssRjw0K1YpdGhyb3cgbmV3IEVycm9yKCJGQVQgYm91bmRhcnkgY3Jvc3NlZDogIitIKyIgNCAiK0YpO2lmKCF2W1hdKWJyZWFrO0g9V2EodltYXSxWKX1yZXR1cm57bm9kZXM6UyxkYXRhOkRpKFtXXSl9fWZ1bmN0aW9uIHcodixULGssRil7dmFyIEU9di5sZW5ndGgsUz1bXSxXPVtdLEs9W10sSD1bXSxWPUYtMSxYPTAsYWU9MCxzZT0wLHZlPTA7Zm9yKFg9MDtYPEU7KytYKWlmKEs9W10sc2U9WCtULHNlPj1FJiYoc2UtPUUpLCFXW3NlXSl7SD1bXTt2YXIgdGU9W107Zm9yKGFlPXNlO2FlPj0wOyl7dGVbYWVdPSEwLFdbYWVdPSEwLEtbSy5sZW5ndGhdPWFlLEgucHVzaCh2W2FlXSk7dmFyIGNlPWtbTWF0aC5mbG9vcihhZSo0L0YpXTtpZih2ZT1hZSo0JlYsRjw0K3ZlKXRocm93IG5ldyBFcnJvcigiRkFUIGJvdW5kYXJ5IGNyb3NzZWQ6ICIrYWUrIiA0ICIrRik7aWYoIXZbY2VdfHwoYWU9V2EodltjZV0sdmUpLHRlW2FlXSkpYnJlYWt9U1tzZV09e25vZGVzOkssZGF0YTpEaShbSF0pfX1yZXR1cm4gU31mdW5jdGlvbiBfKHYsVCxrLEYsRSxTLFcsSyl7Zm9yKHZhciBIPTAsVj1GLmxlbmd0aD8yOjAsWD1UW3ZdLmRhdGEsYWU9MCxzZT0wLHZlO2FlPFgubGVuZ3RoO2FlKz0xMjgpe3ZhciB0ZT1YLnNsaWNlKGFlLGFlKzEyOCk7c3IodGUsNjQpLHNlPXRlLnJlYWRfc2hpZnQoMiksdmU9cm4odGUsMCxzZS1WKSxGLnB1c2godmUpO3ZhciBjZT17bmFtZTp2ZSx0eXBlOnRlLnJlYWRfc2hpZnQoMSksY29sb3I6dGUucmVhZF9zaGlmdCgxKSxMOnRlLnJlYWRfc2hpZnQoNCwiaSIpLFI6dGUucmVhZF9zaGlmdCg0LCJpIiksQzp0ZS5yZWFkX3NoaWZ0KDQsImkiKSxjbHNpZDp0ZS5yZWFkX3NoaWZ0KDE2KSxzdGF0ZTp0ZS5yZWFkX3NoaWZ0KDQsImkiKSxzdGFydDowLHNpemU6MH0sU2U9dGUucmVhZF9zaGlmdCgyKSt0ZS5yZWFkX3NoaWZ0KDIpK3RlLnJlYWRfc2hpZnQoMikrdGUucmVhZF9zaGlmdCgyKTtTZSE9PTAmJihjZS5jdD15KHRlLHRlLmwtOCkpO3ZhciBKZT10ZS5yZWFkX3NoaWZ0KDIpK3RlLnJlYWRfc2hpZnQoMikrdGUucmVhZF9zaGlmdCgyKSt0ZS5yZWFkX3NoaWZ0KDIpO0plIT09MCYmKGNlLm10PXkodGUsdGUubC04KSksY2Uuc3RhcnQ9dGUucmVhZF9zaGlmdCg0LCJpIiksY2Uuc2l6ZT10ZS5yZWFkX3NoaWZ0KDQsImkiKSxjZS5zaXplPDAmJmNlLnN0YXJ0PDAmJihjZS5zaXplPWNlLnR5cGU9MCxjZS5zdGFydD1pZSxjZS5uYW1lPSIiKSxjZS50eXBlPT09NT8oSD1jZS5zdGFydCxFPjAmJkghPT1pZSYmKFRbSF0ubmFtZT0iIVN0cmVhbURhdGEiKSk6Y2Uuc2l6ZT49NDA5Nj8oY2Uuc3RvcmFnZT0iZmF0IixUW2NlLnN0YXJ0XT09PXZvaWQgMCYmKFRbY2Uuc3RhcnRdPXAoayxjZS5zdGFydCxULmZhdF9hZGRycyxULnNzeikpLFRbY2Uuc3RhcnRdLm5hbWU9Y2UubmFtZSxjZS5jb250ZW50PVRbY2Uuc3RhcnRdLmRhdGEuc2xpY2UoMCxjZS5zaXplKSk6KGNlLnN0b3JhZ2U9Im1pbmlmYXQiLGNlLnNpemU8MD9jZS5zaXplPTA6SCE9PWllJiZjZS5zdGFydCE9PWllJiZUW0hdJiYoY2UuY29udGVudD1tKGNlLFRbSF0uZGF0YSwoVFtLXXx8e30pLmRhdGEpKSksY2UuY29udGVudCYmc3IoY2UuY29udGVudCwwKSxTW3ZlXT1jZSxXLnB1c2goY2UpfX1mdW5jdGlvbiB5KHYsVCl7cmV0dXJuIG5ldyBEYXRlKChOcih2LFQrNCkvMWU3Kk1hdGgucG93KDIsMzIpK05yKHYsVCkvMWU3LTExNjQ0NDczNjAwKSoxZTMpfWZ1bmN0aW9uIFIodixUKXtyZXR1cm4gbygpLGwoYy5yZWFkRmlsZVN5bmModiksVCl9ZnVuY3Rpb24gUCh2LFQpe3ZhciBrPVQmJlQudHlwZTtzd2l0Y2goa3x8TmUmJkJ1ZmZlci5pc0J1ZmZlcih2KSYmKGs9ImJ1ZmZlciIpLGt8fCJiYXNlNjQiKXtjYXNlImZpbGUiOnJldHVybiBSKHYsVCk7Y2FzZSJiYXNlNjQiOnJldHVybiBsKERyKElyKHYpKSxUKTtjYXNlImJpbmFyeSI6cmV0dXJuIGwoRHIodiksVCl9cmV0dXJuIGwodixUKX1mdW5jdGlvbiBiKHYsVCl7dmFyIGs9VHx8e30sRj1rLnJvb3R8fCJSb290IEVudHJ5IjtpZih2LkZ1bGxQYXRoc3x8KHYuRnVsbFBhdGhzPVtdKSx2LkZpbGVJbmRleHx8KHYuRmlsZUluZGV4PVtdKSx2LkZ1bGxQYXRocy5sZW5ndGghPT12LkZpbGVJbmRleC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJpbmNvbnNpc3RlbnQgQ0ZCIHN0cnVjdHVyZSIpO3YuRnVsbFBhdGhzLmxlbmd0aD09PTAmJih2LkZ1bGxQYXRoc1swXT1GKyIvIix2LkZpbGVJbmRleFswXT17bmFtZTpGLHR5cGU6NX0pLGsuQ0xTSUQmJih2LkZpbGVJbmRleFswXS5jbHNpZD1rLkNMU0lEKSxOKHYpfWZ1bmN0aW9uIE4odil7dmFyIFQ9IgFTaDMzdEo1IjtpZighTWUuZmluZCh2LCIvIitUKSl7dmFyIGs9ZnIoNCk7a1swXT01NSxrWzFdPWtbM109NTAsa1syXT01NCx2LkZpbGVJbmRleC5wdXNoKHtuYW1lOlQsdHlwZToyLGNvbnRlbnQ6ayxzaXplOjQsTDo2OSxSOjY5LEM6Njl9KSx2LkZ1bGxQYXRocy5wdXNoKHYuRnVsbFBhdGhzWzBdK1QpLEkodil9fWZ1bmN0aW9uIEkodixUKXtiKHYpO2Zvcih2YXIgaz0hMSxGPSExLEU9di5GdWxsUGF0aHMubGVuZ3RoLTE7RT49MDstLUUpe3ZhciBTPXYuRmlsZUluZGV4W0VdO3N3aXRjaChTLnR5cGUpe2Nhc2UgMDpGP2s9ITA6KHYuRmlsZUluZGV4LnBvcCgpLHYuRnVsbFBhdGhzLnBvcCgpKTticmVhaztjYXNlIDE6Y2FzZSAyOmNhc2UgNTpGPSEwLGlzTmFOKFMuUipTLkwqUy5DKSYmKGs9ITApLFMuUj4tMSYmUy5MPi0xJiZTLlI9PVMuTCYmKGs9ITApO2JyZWFrO2RlZmF1bHQ6az0hMDticmVha319aWYoISghayYmIVQpKXt2YXIgVz1uZXcgRGF0ZSgxOTg3LDEsMTkpLEs9MCxIPU9iamVjdC5jcmVhdGU/T2JqZWN0LmNyZWF0ZShudWxsKTp7fSxWPVtdO2ZvcihFPTA7RTx2LkZ1bGxQYXRocy5sZW5ndGg7KytFKUhbdi5GdWxsUGF0aHNbRV1dPSEwLHYuRmlsZUluZGV4W0VdLnR5cGUhPT0wJiZWLnB1c2goW3YuRnVsbFBhdGhzW0VdLHYuRmlsZUluZGV4W0VdXSk7Zm9yKEU9MDtFPFYubGVuZ3RoOysrRSl7dmFyIFg9dChWW0VdWzBdKTtmb3IoRj1IW1hdOyFGOyl7Zm9yKDt0KFgpJiYhSFt0KFgpXTspWD10KFgpO1YucHVzaChbWCx7bmFtZTpuKFgpLnJlcGxhY2UoIi8iLCIiKSx0eXBlOjEsY2xzaWQ6bGUsY3Q6VyxtdDpXLGNvbnRlbnQ6bnVsbH1dKSxIW1hdPSEwLFg9dChWW0VdWzBdKSxGPUhbWF19fWZvcihWLnNvcnQoZnVuY3Rpb24odmUsdGUpe3JldHVybiByKHZlWzBdLHRlWzBdKX0pLHYuRnVsbFBhdGhzPVtdLHYuRmlsZUluZGV4PVtdLEU9MDtFPFYubGVuZ3RoOysrRSl2LkZ1bGxQYXRoc1tFXT1WW0VdWzBdLHYuRmlsZUluZGV4W0VdPVZbRV1bMV07Zm9yKEU9MDtFPFYubGVuZ3RoOysrRSl7dmFyIGFlPXYuRmlsZUluZGV4W0VdLHNlPXYuRnVsbFBhdGhzW0VdO2lmKGFlLm5hbWU9bihzZSkucmVwbGFjZSgiLyIsIiIpLGFlLkw9YWUuUj1hZS5DPS0oYWUuY29sb3I9MSksYWUuc2l6ZT1hZS5jb250ZW50P2FlLmNvbnRlbnQubGVuZ3RoOjAsYWUuc3RhcnQ9MCxhZS5jbHNpZD1hZS5jbHNpZHx8bGUsRT09PTApYWUuQz1WLmxlbmd0aD4xPzE6LTEsYWUuc2l6ZT0wLGFlLnR5cGU9NTtlbHNlIGlmKHNlLnNsaWNlKC0xKT09Ii8iKXtmb3IoSz1FKzE7SzxWLmxlbmd0aCYmdCh2LkZ1bGxQYXRoc1tLXSkhPXNlOysrSyk7Zm9yKGFlLkM9Sz49Vi5sZW5ndGg/LTE6SyxLPUUrMTtLPFYubGVuZ3RoJiZ0KHYuRnVsbFBhdGhzW0tdKSE9dChzZSk7KytLKTthZS5SPUs+PVYubGVuZ3RoPy0xOkssYWUudHlwZT0xfWVsc2UgdCh2LkZ1bGxQYXRoc1tFKzFdfHwiIik9PXQoc2UpJiYoYWUuUj1FKzEpLGFlLnR5cGU9Mn19fWZ1bmN0aW9uIEIodixUKXt2YXIgaz1UfHx7fTtpZihrLmZpbGVUeXBlPT0ibWFkIilyZXR1cm4gVW4odixrKTtzd2l0Y2goSSh2KSxrLmZpbGVUeXBlKXtjYXNlInppcCI6cmV0dXJuIFUwKHYsayl9dmFyIEY9ZnVuY3Rpb24odmUpe2Zvcih2YXIgdGU9MCxjZT0wLFNlPTA7U2U8dmUuRmlsZUluZGV4Lmxlbmd0aDsrK1NlKXt2YXIgSmU9dmUuRmlsZUluZGV4W1NlXTtpZihKZS5jb250ZW50KXt2YXIgUWU9SmUuY29udGVudC5sZW5ndGg7UWU+MCYmKFFlPDQwOTY/dGUrPVFlKzYzPj42OmNlKz1RZSs1MTE+PjkpfX1mb3IodmFyIFRyPXZlLkZ1bGxQYXRocy5sZW5ndGgrMz4+MixyMD10ZSs3Pj4zLGEwPXRlKzEyNz4+Nyx0MD1yMCtjZStUcithMCx0dD10MCsxMjc+PjcsV249dHQ8PTEwOT8wOk1hdGguY2VpbCgodHQtMTA5KS8xMjcpO3QwK3R0K1duKzEyNz4+Nz50dDspV249Kyt0dDw9MTA5PzA6TWF0aC5jZWlsKCh0dC0xMDkpLzEyNyk7dmFyIFRhPVsxLFduLHR0LGEwLFRyLGNlLHRlLDBdO3JldHVybiB2ZS5GaWxlSW5kZXhbMF0uc2l6ZT10ZTw8NixUYVs3XT0odmUuRmlsZUluZGV4WzBdLnN0YXJ0PVRhWzBdK1RhWzFdK1RhWzJdK1RhWzNdK1RhWzRdK1RhWzVdKSsoVGFbNl0rNz4+MyksVGF9KHYpLEU9ZnIoRls3XTw8OSksUz0wLFc9MDt7Zm9yKFM9MDtTPDg7KytTKUUud3JpdGVfc2hpZnQoMSxxW1NdKTtmb3IoUz0wO1M8ODsrK1MpRS53cml0ZV9zaGlmdCgyLDApO2ZvcihFLndyaXRlX3NoaWZ0KDIsNjIpLEUud3JpdGVfc2hpZnQoMiwzKSxFLndyaXRlX3NoaWZ0KDIsNjU1MzQpLEUud3JpdGVfc2hpZnQoMiw5KSxFLndyaXRlX3NoaWZ0KDIsNiksUz0wO1M8MzsrK1MpRS53cml0ZV9zaGlmdCgyLDApO2ZvcihFLndyaXRlX3NoaWZ0KDQsMCksRS53cml0ZV9zaGlmdCg0LEZbMl0pLEUud3JpdGVfc2hpZnQoNCxGWzBdK0ZbMV0rRlsyXStGWzNdLTEpLEUud3JpdGVfc2hpZnQoNCwwKSxFLndyaXRlX3NoaWZ0KDQsNDA5NiksRS53cml0ZV9zaGlmdCg0LEZbM10/RlswXStGWzFdK0ZbMl0tMTppZSksRS53cml0ZV9zaGlmdCg0LEZbM10pLEUud3JpdGVfc2hpZnQoLTQsRlsxXT9GWzBdLTE6aWUpLEUud3JpdGVfc2hpZnQoNCxGWzFdKSxTPTA7UzwxMDk7KytTKUUud3JpdGVfc2hpZnQoLTQsUzxGWzJdP0ZbMV0rUzotMSl9aWYoRlsxXSlmb3IoVz0wO1c8RlsxXTsrK1cpe2Zvcig7UzwyMzYrVyoxMjc7KytTKUUud3JpdGVfc2hpZnQoLTQsUzxGWzJdP0ZbMV0rUzotMSk7RS53cml0ZV9zaGlmdCgtNCxXPT09RlsxXS0xP2llOlcrMSl9dmFyIEs9ZnVuY3Rpb24odmUpe2ZvcihXKz12ZTtTPFctMTsrK1MpRS53cml0ZV9zaGlmdCgtNCxTKzEpO3ZlJiYoKytTLEUud3JpdGVfc2hpZnQoLTQsaWUpKX07Zm9yKFc9Uz0wLFcrPUZbMV07UzxXOysrUylFLndyaXRlX3NoaWZ0KC00LFEuRElGU0VDVCk7Zm9yKFcrPUZbMl07UzxXOysrUylFLndyaXRlX3NoaWZ0KC00LFEuRkFUU0VDVCk7SyhGWzNdKSxLKEZbNF0pO2Zvcih2YXIgSD0wLFY9MCxYPXYuRmlsZUluZGV4WzBdO0g8di5GaWxlSW5kZXgubGVuZ3RoOysrSClYPXYuRmlsZUluZGV4W0hdLFguY29udGVudCYmKFY9WC5jb250ZW50Lmxlbmd0aCwhKFY8NDA5NikmJihYLnN0YXJ0PVcsSyhWKzUxMT4+OSkpKTtmb3IoSyhGWzZdKzc+PjMpO0UubCY1MTE7KUUud3JpdGVfc2hpZnQoLTQsUS5FTkRPRkNIQUlOKTtmb3IoVz1TPTAsSD0wO0g8di5GaWxlSW5kZXgubGVuZ3RoOysrSClYPXYuRmlsZUluZGV4W0hdLFguY29udGVudCYmKFY9WC5jb250ZW50Lmxlbmd0aCwhKCFWfHxWPj00MDk2KSYmKFguc3RhcnQ9VyxLKFYrNjM+PjYpKSk7Zm9yKDtFLmwmNTExOylFLndyaXRlX3NoaWZ0KC00LFEuRU5ET0ZDSEFJTik7Zm9yKFM9MDtTPEZbNF08PDI7KytTKXt2YXIgYWU9di5GdWxsUGF0aHNbU107aWYoIWFlfHxhZS5sZW5ndGg9PT0wKXtmb3IoSD0wO0g8MTc7KytIKUUud3JpdGVfc2hpZnQoNCwwKTtmb3IoSD0wO0g8MzsrK0gpRS53cml0ZV9zaGlmdCg0LC0xKTtmb3IoSD0wO0g8MTI7KytIKUUud3JpdGVfc2hpZnQoNCwwKTtjb250aW51ZX1YPXYuRmlsZUluZGV4W1NdLFM9PT0wJiYoWC5zdGFydD1YLnNpemU/WC5zdGFydC0xOmllKTt2YXIgc2U9Uz09PTAmJmsucm9vdHx8WC5uYW1lO2lmKHNlLmxlbmd0aD4zMSYmKGNvbnNvbGUuZXJyb3IoIk5hbWUgIitzZSsiIHdpbGwgYmUgdHJ1bmNhdGVkIHRvICIrc2Uuc2xpY2UoMCwzMSkpLHNlPXNlLnNsaWNlKDAsMzEpKSxWPTIqKHNlLmxlbmd0aCsxKSxFLndyaXRlX3NoaWZ0KDY0LHNlLCJ1dGYxNmxlIiksRS53cml0ZV9zaGlmdCgyLFYpLEUud3JpdGVfc2hpZnQoMSxYLnR5cGUpLEUud3JpdGVfc2hpZnQoMSxYLmNvbG9yKSxFLndyaXRlX3NoaWZ0KC00LFguTCksRS53cml0ZV9zaGlmdCgtNCxYLlIpLEUud3JpdGVfc2hpZnQoLTQsWC5DKSxYLmNsc2lkKUUud3JpdGVfc2hpZnQoMTYsWC5jbHNpZCwiaGV4Iik7ZWxzZSBmb3IoSD0wO0g8NDsrK0gpRS53cml0ZV9zaGlmdCg0LDApO0Uud3JpdGVfc2hpZnQoNCxYLnN0YXRlfHwwKSxFLndyaXRlX3NoaWZ0KDQsMCksRS53cml0ZV9zaGlmdCg0LDApLEUud3JpdGVfc2hpZnQoNCwwKSxFLndyaXRlX3NoaWZ0KDQsMCksRS53cml0ZV9zaGlmdCg0LFguc3RhcnQpLEUud3JpdGVfc2hpZnQoNCxYLnNpemUpLEUud3JpdGVfc2hpZnQoNCwwKX1mb3IoUz0xO1M8di5GaWxlSW5kZXgubGVuZ3RoOysrUylpZihYPXYuRmlsZUluZGV4W1NdLFguc2l6ZT49NDA5NilpZihFLmw9WC5zdGFydCsxPDw5LE5lJiZCdWZmZXIuaXNCdWZmZXIoWC5jb250ZW50KSlYLmNvbnRlbnQuY29weShFLEUubCwwLFguc2l6ZSksRS5sKz1YLnNpemUrNTExJi01MTI7ZWxzZXtmb3IoSD0wO0g8WC5zaXplOysrSClFLndyaXRlX3NoaWZ0KDEsWC5jb250ZW50W0hdKTtmb3IoO0gmNTExOysrSClFLndyaXRlX3NoaWZ0KDEsMCl9Zm9yKFM9MTtTPHYuRmlsZUluZGV4Lmxlbmd0aDsrK1MpaWYoWD12LkZpbGVJbmRleFtTXSxYLnNpemU+MCYmWC5zaXplPDQwOTYpaWYoTmUmJkJ1ZmZlci5pc0J1ZmZlcihYLmNvbnRlbnQpKVguY29udGVudC5jb3B5KEUsRS5sLDAsWC5zaXplKSxFLmwrPVguc2l6ZSs2MyYtNjQ7ZWxzZXtmb3IoSD0wO0g8WC5zaXplOysrSClFLndyaXRlX3NoaWZ0KDEsWC5jb250ZW50W0hdKTtmb3IoO0gmNjM7KytIKUUud3JpdGVfc2hpZnQoMSwwKX1pZihOZSlFLmw9RS5sZW5ndGg7ZWxzZSBmb3IoO0UubDxFLmxlbmd0aDspRS53cml0ZV9zaGlmdCgxLDApO3JldHVybiBFfWZ1bmN0aW9uIEwodixUKXt2YXIgaz12LkZ1bGxQYXRocy5tYXAoZnVuY3Rpb24oSCl7cmV0dXJuIEgudG9VcHBlckNhc2UoKX0pLEY9ay5tYXAoZnVuY3Rpb24oSCl7dmFyIFY9SC5zcGxpdCgiLyIpO3JldHVybiBWW1YubGVuZ3RoLShILnNsaWNlKC0xKT09Ii8iPzI6MSldfSksRT0hMTtULmNoYXJDb2RlQXQoMCk9PT00Nz8oRT0hMCxUPWtbMF0uc2xpY2UoMCwtMSkrVCk6RT1ULmluZGV4T2YoIi8iKSE9PS0xO3ZhciBTPVQudG9VcHBlckNhc2UoKSxXPUU9PT0hMD9rLmluZGV4T2YoUyk6Ri5pbmRleE9mKFMpO2lmKFchPT0tMSlyZXR1cm4gdi5GaWxlSW5kZXhbV107dmFyIEs9IVMubWF0Y2goQXQpO2ZvcihTPVMucmVwbGFjZShTciwiIiksSyYmKFM9Uy5yZXBsYWNlKEF0LCIhIikpLFc9MDtXPGsubGVuZ3RoOysrVylpZigoSz9rW1ddLnJlcGxhY2UoQXQsIiEiKTprW1ddKS5yZXBsYWNlKFNyLCIiKT09U3x8KEs/RltXXS5yZXBsYWNlKEF0LCIhIik6RltXXSkucmVwbGFjZShTciwiIik9PVMpcmV0dXJuIHYuRmlsZUluZGV4W1ddO3JldHVybiBudWxsfXZhciBHPTY0LGllPS0yLG5lPSJkMGNmMTFlMGExYjExYWUxIixxPVsyMDgsMjA3LDE3LDIyNCwxNjEsMTc3LDI2LDIyNV0sbGU9IjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIixRPXtNQVhSRUdTRUNUOi02LERJRlNFQ1Q6LTQsRkFUU0VDVDotMyxFTkRPRkNIQUlOOmllLEZSRUVTRUNUOi0xLEhFQURFUl9TSUdOQVRVUkU6bmUsSEVBREVSX01JTk9SX1ZFUlNJT046IjNlMDAiLE1BWFJFR1NJRDotNixOT1NUUkVBTTotMSxIRUFERVJfQ0xTSUQ6bGUsRW50cnlUeXBlczpbInVua25vd24iLCJzdG9yYWdlIiwic3RyZWFtIiwibG9ja2J5dGVzIiwicHJvcGVydHkiLCJyb290Il19O2Z1bmN0aW9uIGdlKHYsVCxrKXtvKCk7dmFyIEY9Qih2LGspO2Mud3JpdGVGaWxlU3luYyhULEYpfWZ1bmN0aW9uIHVlKHYpe2Zvcih2YXIgVD1uZXcgQXJyYXkodi5sZW5ndGgpLGs9MDtrPHYubGVuZ3RoOysraylUW2tdPVN0cmluZy5mcm9tQ2hhckNvZGUodltrXSk7cmV0dXJuIFQuam9pbigiIil9ZnVuY3Rpb24gaih2LFQpe3ZhciBrPUIodixUKTtzd2l0Y2goVCYmVC50eXBlfHwiYnVmZmVyIil7Y2FzZSJmaWxlIjpyZXR1cm4gbygpLGMud3JpdGVGaWxlU3luYyhULmZpbGVuYW1lLGspLGs7Y2FzZSJiaW5hcnkiOnJldHVybiB0eXBlb2Ygaz09InN0cmluZyI/azp1ZShrKTtjYXNlImJhc2U2NCI6cmV0dXJuIEtuKHR5cGVvZiBrPT0ic3RyaW5nIj9rOnVlKGspKTtjYXNlImJ1ZmZlciI6aWYoTmUpcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihrKT9rOkVhKGspO2Nhc2UiYXJyYXkiOnJldHVybiB0eXBlb2Ygaz09InN0cmluZyI/RHIoayk6a31yZXR1cm4ga312YXIgeWU7ZnVuY3Rpb24gYmUodil7dHJ5e3ZhciBUPXYuSW5mbGF0ZVJhdyxrPW5ldyBUO2lmKGsuX3Byb2Nlc3NDaHVuayhuZXcgVWludDhBcnJheShbMywwXSksay5fZmluaXNoRmx1c2hGbGFnKSxrLmJ5dGVzUmVhZCl5ZT12O2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJ6bGliIGRvZXMgbm90IGV4cG9zZSBieXRlc1JlYWQiKX1jYXRjaChGKXtjb25zb2xlLmVycm9yKCJjYW5ub3QgdXNlIG5hdGl2ZSB6bGliOiAiKyhGLm1lc3NhZ2V8fEYpKX19ZnVuY3Rpb24gbWUodixUKXtpZigheWUpcmV0dXJuIFF0KHYsVCk7dmFyIGs9eWUuSW5mbGF0ZVJhdyxGPW5ldyBrLEU9Ri5fcHJvY2Vzc0NodW5rKHYuc2xpY2Uodi5sKSxGLl9maW5pc2hGbHVzaEZsYWcpO3JldHVybiB2LmwrPUYuYnl0ZXNSZWFkLEV9ZnVuY3Rpb24gWih2KXtyZXR1cm4geWU/eWUuZGVmbGF0ZVJhd1N5bmModik6T2Eodil9dmFyIE9lPVsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XSx3ZT1bMyw0LDUsNiw3LDgsOSwxMCwxMSwxMywxNSwxNywxOSwyMywyNywzMSwzNSw0Myw1MSw1OSw2Nyw4Myw5OSwxMTUsMTMxLDE2MywxOTUsMjI3LDI1OF0sQWU9WzEsMiwzLDQsNSw3LDksMTMsMTcsMjUsMzMsNDksNjUsOTcsMTI5LDE5MywyNTcsMzg1LDUxMyw3NjksMTAyNSwxNTM3LDIwNDksMzA3Myw0MDk3LDYxNDUsODE5MywxMjI4OSwxNjM4NSwyNDU3N107ZnVuY3Rpb24gQSh2KXt2YXIgVD0odjw8MXx2PDwxMSkmMTM5NTM2fCh2PDw1fHY8PDE1KSY1NTgxNDQ7cmV0dXJuKFQ+PjE2fFQ+Pjh8VCkmMjU1fWZvcih2YXIgVT10eXBlb2YgVWludDhBcnJheTwidSIsTz1VP25ldyBVaW50OEFycmF5KDI1Nik6W10sRD0wO0Q8MjU2OysrRClPW0RdPUEoRCk7ZnVuY3Rpb24geih2LFQpe3ZhciBrPU9bdiYyNTVdO3JldHVybiBUPD04P2s+Pj44LVQ6KGs9azw8OHxPW3Y+PjgmMjU1XSxUPD0xNj9rPj4+MTYtVDooaz1rPDw4fE9bdj4+MTYmMjU1XSxrPj4+MjQtVCkpfWZ1bmN0aW9uIHBlKHYsVCl7dmFyIGs9VCY3LEY9VD4+PjM7cmV0dXJuKHZbRl18KGs8PTY/MDp2W0YrMV08PDgpKT4+PmsmM31mdW5jdGlvbiBKKHYsVCl7dmFyIGs9VCY3LEY9VD4+PjM7cmV0dXJuKHZbRl18KGs8PTU/MDp2W0YrMV08PDgpKT4+PmsmN31mdW5jdGlvbiByZSh2LFQpe3ZhciBrPVQmNyxGPVQ+Pj4zO3JldHVybih2W0ZdfChrPD00PzA6dltGKzFdPDw4KSk+Pj5rJjE1fWZ1bmN0aW9uIGVlKHYsVCl7dmFyIGs9VCY3LEY9VD4+PjM7cmV0dXJuKHZbRl18KGs8PTM/MDp2W0YrMV08PDgpKT4+PmsmMzF9ZnVuY3Rpb24ga2UodixUKXt2YXIgaz1UJjcsRj1UPj4+MztyZXR1cm4odltGXXwoazw9MT8wOnZbRisxXTw8OCkpPj4+ayYxMjd9ZnVuY3Rpb24gaGUodixULGspe3ZhciBGPVQmNyxFPVQ+Pj4zLFM9KDE8PGspLTEsVz12W0VdPj4+RjtyZXR1cm4gazw4LUZ8fChXfD12W0UrMV08PDgtRixrPDE2LUYpfHwoV3w9dltFKzJdPDwxNi1GLGs8MjQtRil8fChXfD12W0UrM108PDI0LUYpLFcmU31mdW5jdGlvbiB4ZSh2LFQsayl7dmFyIEY9VCY3LEU9VD4+PjM7cmV0dXJuIEY8PTU/dltFXXw9KGsmNyk8PEY6KHZbRV18PWs8PEYmMjU1LHZbRSsxXT0oayY3KT4+OC1GKSxUKzN9ZnVuY3Rpb24gWGUodixULGspe3ZhciBGPVQmNyxFPVQ+Pj4zO3JldHVybiBrPShrJjEpPDxGLHZbRV18PWssVCsxfWZ1bmN0aW9uIHplKHYsVCxrKXt2YXIgRj1UJjcsRT1UPj4+MztyZXR1cm4gazw8PUYsdltFXXw9ayYyNTUsaz4+Pj04LHZbRSsxXT1rLFQrOH1mdW5jdGlvbiBqZSh2LFQsayl7dmFyIEY9VCY3LEU9VD4+PjM7cmV0dXJuIGs8PD1GLHZbRV18PWsmMjU1LGs+Pj49OCx2W0UrMV09ayYyNTUsdltFKzJdPWs+Pj44LFQrMTZ9ZnVuY3Rpb24gZGUodixUKXt2YXIgaz12Lmxlbmd0aCxGPTIqaz5UPzIqazpUKzUsRT0wO2lmKGs+PVQpcmV0dXJuIHY7aWYoTmUpe3ZhciBTPWpuKEYpO2lmKHYuY29weSl2LmNvcHkoUyk7ZWxzZSBmb3IoO0U8di5sZW5ndGg7KytFKVNbRV09dltFXTtyZXR1cm4gU31lbHNlIGlmKFUpe3ZhciBXPW5ldyBVaW50OEFycmF5KEYpO2lmKFcuc2V0KVcuc2V0KHYpO2Vsc2UgZm9yKDtFPGs7KytFKVdbRV09dltFXTtyZXR1cm4gV31yZXR1cm4gdi5sZW5ndGg9Rix2fWZ1bmN0aW9uIFdlKHYpe2Zvcih2YXIgVD1uZXcgQXJyYXkodiksaz0wO2s8djsrK2spVFtrXT0wO3JldHVybiBUfWZ1bmN0aW9uIGZlKHYsVCxrKXt2YXIgRj0xLEU9MCxTPTAsVz0wLEs9MCxIPXYubGVuZ3RoLFY9VT9uZXcgVWludDE2QXJyYXkoMzIpOldlKDMyKTtmb3IoUz0wO1M8MzI7KytTKVZbU109MDtmb3IoUz1IO1M8azsrK1MpdltTXT0wO0g9di5sZW5ndGg7dmFyIFg9VT9uZXcgVWludDE2QXJyYXkoSCk6V2UoSCk7Zm9yKFM9MDtTPEg7KytTKVZbRT12W1NdXSsrLEY8RSYmKEY9RSksWFtTXT0wO2ZvcihWWzBdPTAsUz0xO1M8PUY7KytTKVZbUysxNl09Sz1LK1ZbUy0xXTw8MTtmb3IoUz0wO1M8SDsrK1MpSz12W1NdLEshPTAmJihYW1NdPVZbSysxNl0rKyk7dmFyIGFlPTA7Zm9yKFM9MDtTPEg7KytTKWlmKGFlPXZbU10sYWUhPTApZm9yKEs9eihYW1NdLEYpPj5GLWFlLFc9KDE8PEYrNC1hZSktMTtXPj0wOy0tVylUW0t8Vzw8YWVdPWFlJjE1fFM8PDQ7cmV0dXJuIEZ9dmFyIHNhPVU/bmV3IFVpbnQxNkFycmF5KDUxMik6V2UoNTEyKSxqcj1VP25ldyBVaW50MTZBcnJheSgzMik6V2UoMzIpO2lmKCFVKXtmb3IodmFyIFllPTA7WWU8NTEyOysrWWUpc2FbWWVdPTA7Zm9yKFllPTA7WWU8MzI7KytZZSlqcltZZV09MH0oZnVuY3Rpb24oKXtmb3IodmFyIHY9W10sVD0wO1Q8MzI7VCsrKXYucHVzaCg1KTtmZSh2LGpyLDMyKTt2YXIgaz1bXTtmb3IoVD0wO1Q8PTE0MztUKyspay5wdXNoKDgpO2Zvcig7VDw9MjU1O1QrKylrLnB1c2goOSk7Zm9yKDtUPD0yNzk7VCsrKWsucHVzaCg3KTtmb3IoO1Q8PTI4NztUKyspay5wdXNoKDgpO2ZlKGssc2EsMjg4KX0pKCk7dmFyIFJhPWZ1bmN0aW9uKCl7Zm9yKHZhciBUPVU/bmV3IFVpbnQ4QXJyYXkoMzI3NjgpOltdLGs9MCxGPTA7azxBZS5sZW5ndGgtMTsrK2spZm9yKDtGPEFlW2srMV07KytGKVRbRl09aztmb3IoO0Y8MzI3Njg7KytGKVRbRl09Mjk7dmFyIEU9VT9uZXcgVWludDhBcnJheSgyNTkpOltdO2ZvcihrPTAsRj0wO2s8d2UubGVuZ3RoLTE7KytrKWZvcig7Rjx3ZVtrKzFdOysrRilFW0ZdPWs7ZnVuY3Rpb24gUyhLLEgpe2Zvcih2YXIgVj0wO1Y8Sy5sZW5ndGg7KXt2YXIgWD1NYXRoLm1pbig2NTUzNSxLLmxlbmd0aC1WKSxhZT1WK1g9PUsubGVuZ3RoO2ZvcihILndyaXRlX3NoaWZ0KDEsK2FlKSxILndyaXRlX3NoaWZ0KDIsWCksSC53cml0ZV9zaGlmdCgyLH5YJjY1NTM1KTtYLS0gPjA7KUhbSC5sKytdPUtbVisrXX1yZXR1cm4gSC5sfWZ1bmN0aW9uIFcoSyxIKXtmb3IodmFyIFY9MCxYPTAsYWU9VT9uZXcgVWludDE2QXJyYXkoMzI3NjgpOltdO1g8Sy5sZW5ndGg7KXt2YXIgc2U9TWF0aC5taW4oNjU1MzUsSy5sZW5ndGgtWCk7aWYoc2U8MTApe2ZvcihWPXhlKEgsViwrKFgrc2U9PUsubGVuZ3RoKSksViY3JiYoVis9OC0oViY3KSksSC5sPVYvOHwwLEgud3JpdGVfc2hpZnQoMixzZSksSC53cml0ZV9zaGlmdCgyLH5zZSY2NTUzNSk7c2UtLSA+MDspSFtILmwrK109S1tYKytdO1Y9SC5sKjg7Y29udGludWV9Vj14ZShILFYsKyhYK3NlPT1LLmxlbmd0aCkrMik7Zm9yKHZhciB2ZT0wO3NlLS0gPjA7KXt2YXIgdGU9S1tYXTt2ZT0odmU8PDVedGUpJjMyNzY3O3ZhciBjZT0tMSxTZT0wO2lmKChjZT1hZVt2ZV0pJiYoY2V8PVgmLTMyNzY4LGNlPlgmJihjZS09MzI3NjgpLGNlPFgpKWZvcig7S1tjZStTZV09PUtbWCtTZV0mJlNlPDI1MDspKytTZTtpZihTZT4yKXt0ZT1FW1NlXSx0ZTw9MjI/Vj16ZShILFYsT1t0ZSsxXT4+MSktMTooemUoSCxWLDMpLFYrPTUsemUoSCxWLE9bdGUtMjNdPj41KSxWKz0zKTt2YXIgSmU9dGU8OD8wOnRlLTQ+PjI7SmU+MCYmKGplKEgsVixTZS13ZVt0ZV0pLFYrPUplKSx0ZT1UW1gtY2VdLFY9emUoSCxWLE9bdGVdPj4zKSxWLT0zO3ZhciBRZT10ZTw0PzA6dGUtMj4+MTtRZT4wJiYoamUoSCxWLFgtY2UtQWVbdGVdKSxWKz1RZSk7Zm9yKHZhciBUcj0wO1RyPFNlOysrVHIpYWVbdmVdPVgmMzI3NjcsdmU9KHZlPDw1XktbWF0pJjMyNzY3LCsrWDtzZS09U2UtMX1lbHNlIHRlPD0xNDM/dGU9dGUrNDg6Vj1YZShILFYsMSksVj16ZShILFYsT1t0ZV0pLGFlW3ZlXT1YJjMyNzY3LCsrWH1WPXplKEgsViwwKS0xfXJldHVybiBILmw9KFYrNykvOHwwLEgubH1yZXR1cm4gZnVuY3Rpb24oSCxWKXtyZXR1cm4gSC5sZW5ndGg8OD9TKEgsVik6VyhILFYpfX0oKTtmdW5jdGlvbiBPYSh2KXt2YXIgVD1mcig1MCtNYXRoLmZsb29yKHYubGVuZ3RoKjEuMSkpLGs9UmEodixUKTtyZXR1cm4gVC5zbGljZSgwLGspfXZhciBFZT1VP25ldyBVaW50MTZBcnJheSgzMjc2OCk6V2UoMzI3NjgpLHJyPVU/bmV3IFVpbnQxNkFycmF5KDMyNzY4KTpXZSgzMjc2OCksRnI9VT9uZXcgVWludDE2QXJyYXkoMTI4KTpXZSgxMjgpLEZhPTEsQz0xO2Z1bmN0aW9uIEJyKHYsVCl7dmFyIGs9ZWUodixUKSsyNTc7VCs9NTt2YXIgRj1lZSh2LFQpKzE7VCs9NTt2YXIgRT1yZSh2LFQpKzQ7VCs9NDtmb3IodmFyIFM9MCxXPVU/bmV3IFVpbnQ4QXJyYXkoMTkpOldlKDE5KSxLPVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXSxIPTEsVj1VP25ldyBVaW50OEFycmF5KDgpOldlKDgpLFg9VT9uZXcgVWludDhBcnJheSg4KTpXZSg4KSxhZT1XLmxlbmd0aCxzZT0wO3NlPEU7KytzZSlXW09lW3NlXV09Uz1KKHYsVCksSDxTJiYoSD1TKSxWW1NdKyssVCs9Mzt2YXIgdmU9MDtmb3IoVlswXT0wLHNlPTE7c2U8PUg7KytzZSlYW3NlXT12ZT12ZStWW3NlLTFdPDwxO2ZvcihzZT0wO3NlPGFlOysrc2UpKHZlPVdbc2VdKSE9MCYmKEtbc2VdPVhbdmVdKyspO3ZhciB0ZT0wO2ZvcihzZT0wO3NlPGFlOysrc2UpaWYodGU9V1tzZV0sdGUhPTApe3ZlPU9bS1tzZV1dPj44LXRlO2Zvcih2YXIgY2U9KDE8PDctdGUpLTE7Y2U+PTA7LS1jZSlGclt2ZXxjZTw8dGVdPXRlJjd8c2U8PDN9dmFyIFNlPVtdO2ZvcihIPTE7U2UubGVuZ3RoPGsrRjspc3dpdGNoKHZlPUZyW2tlKHYsVCldLFQrPXZlJjcsdmU+Pj49Myl7Y2FzZSAxNjpmb3IoUz0zK3BlKHYsVCksVCs9Mix2ZT1TZVtTZS5sZW5ndGgtMV07Uy0tID4wOylTZS5wdXNoKHZlKTticmVhaztjYXNlIDE3OmZvcihTPTMrSih2LFQpLFQrPTM7Uy0tID4wOylTZS5wdXNoKDApO2JyZWFrO2Nhc2UgMTg6Zm9yKFM9MTEra2UodixUKSxUKz03O1MtLSA+MDspU2UucHVzaCgwKTticmVhaztkZWZhdWx0OlNlLnB1c2godmUpLEg8dmUmJihIPXZlKTticmVha312YXIgSmU9U2Uuc2xpY2UoMCxrKSxRZT1TZS5zbGljZShrKTtmb3Ioc2U9aztzZTwyODY7KytzZSlKZVtzZV09MDtmb3Ioc2U9RjtzZTwzMDsrK3NlKVFlW3NlXT0wO3JldHVybiBGYT1mZShKZSxFZSwyODYpLEM9ZmUoUWUscnIsMzApLFR9ZnVuY3Rpb24gX3QodixUKXtpZih2WzBdPT0zJiYhKHZbMV0mMykpcmV0dXJuW0FhKFQpLDJdO2Zvcih2YXIgaz0wLEY9MCxFPWpuKFR8fDE8PDE4KSxTPTAsVz1FLmxlbmd0aD4+PjAsSz0wLEg9MDshKEYmMSk7KXtpZihGPUoodixrKSxrKz0zLEY+Pj4xKUY+PjE9PTE/KEs9OSxIPTUpOihrPUJyKHYsayksSz1GYSxIPUMpO2Vsc2V7ayY3JiYoays9OC0oayY3KSk7dmFyIFY9dltrPj4+M118dlsoaz4+PjMpKzFdPDw4O2lmKGsrPTMyLFY+MClmb3IoIVQmJlc8UytWJiYoRT1kZShFLFMrViksVz1FLmxlbmd0aCk7Vi0tID4wOylFW1MrK109dltrPj4+M10says9ODtjb250aW51ZX1mb3IoOzspeyFUJiZXPFMrMzI3NjcmJihFPWRlKEUsUyszMjc2NyksVz1FLmxlbmd0aCk7dmFyIFg9aGUodixrLEspLGFlPUY+Pj4xPT0xP3NhW1hdOkVlW1hdO2lmKGsrPWFlJjE1LGFlPj4+PTQsIShhZT4+PjgmMjU1KSlFW1MrK109YWU7ZWxzZXtpZihhZT09MjU2KWJyZWFrO2FlLT0yNTc7dmFyIHNlPWFlPDg/MDphZS00Pj4yO3NlPjUmJihzZT0wKTt2YXIgdmU9Uyt3ZVthZV07c2U+MCYmKHZlKz1oZSh2LGssc2UpLGsrPXNlKSxYPWhlKHYsayxIKSxhZT1GPj4+MT09MT9qcltYXTpycltYXSxrKz1hZSYxNSxhZT4+Pj00O3ZhciB0ZT1hZTw0PzA6YWUtMj4+MSxjZT1BZVthZV07Zm9yKHRlPjAmJihjZSs9aGUodixrLHRlKSxrKz10ZSksIVQmJlc8dmUmJihFPWRlKEUsdmUrMTAwKSxXPUUubGVuZ3RoKTtTPHZlOylFW1NdPUVbUy1jZV0sKytTfX19cmV0dXJuIFQ/W0Usays3Pj4+M106W0Uuc2xpY2UoMCxTKSxrKzc+Pj4zXX1mdW5jdGlvbiBRdCh2LFQpe3ZhciBrPXYuc2xpY2Uodi5sfHwwKSxGPV90KGssVCk7cmV0dXJuIHYubCs9RlsxXSxGWzBdfWZ1bmN0aW9uIE5hKHYsVCl7aWYodil0eXBlb2YgY29uc29sZTwidSImJmNvbnNvbGUuZXJyb3IoVCk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoVCl9ZnVuY3Rpb24gZTAodixUKXt2YXIgaz12O3NyKGssMCk7dmFyIEY9W10sRT1bXSxTPXtGaWxlSW5kZXg6RixGdWxsUGF0aHM6RX07YihTLHtyb290OlQucm9vdH0pO2Zvcih2YXIgVz1rLmxlbmd0aC00OyhrW1ddIT04MHx8a1tXKzFdIT03NXx8a1tXKzJdIT01fHxrW1crM10hPTYpJiZXPj0wOyktLVc7ay5sPVcrNCxrLmwrPTQ7dmFyIEs9ay5yZWFkX3NoaWZ0KDIpO2subCs9Njt2YXIgSD1rLnJlYWRfc2hpZnQoNCk7Zm9yKGsubD1ILFc9MDtXPEs7KytXKXtrLmwrPTIwO3ZhciBWPWsucmVhZF9zaGlmdCg0KSxYPWsucmVhZF9zaGlmdCg0KSxhZT1rLnJlYWRfc2hpZnQoMiksc2U9ay5yZWFkX3NoaWZ0KDIpLHZlPWsucmVhZF9zaGlmdCgyKTtrLmwrPTg7dmFyIHRlPWsucmVhZF9zaGlmdCg0KSxjZT1zKGsuc2xpY2Uoay5sK2FlLGsubCthZStzZSkpO2subCs9YWUrc2UrdmU7dmFyIFNlPWsubDtrLmw9dGUrNCxjZSYmY2VbMV0mJigoY2VbMV18fHt9KS51c3omJihYPWNlWzFdLnVzeiksKGNlWzFdfHx7fSkuY3N6JiYoVj1jZVsxXS5jc3opKSxNYShrLFYsWCxTLGNlKSxrLmw9U2V9cmV0dXJuIFN9ZnVuY3Rpb24gTWEodixULGssRixFKXt2LmwrPTI7dmFyIFM9di5yZWFkX3NoaWZ0KDIpLFc9di5yZWFkX3NoaWZ0KDIpLEs9Zih2KTtpZihTJjgyNTcpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBaSVAgZW5jcnlwdGlvbiIpO2Zvcih2YXIgSD12LnJlYWRfc2hpZnQoNCksVj12LnJlYWRfc2hpZnQoNCksWD12LnJlYWRfc2hpZnQoNCksYWU9di5yZWFkX3NoaWZ0KDIpLHNlPXYucmVhZF9zaGlmdCgyKSx2ZT0iIix0ZT0wO3RlPGFlOysrdGUpdmUrPVN0cmluZy5mcm9tQ2hhckNvZGUodlt2LmwrK10pO2lmKHNlKXt2YXIgY2U9cyh2LnNsaWNlKHYubCx2Lmwrc2UpKTsoY2VbMjE1ODldfHx7fSkubXQmJihLPWNlWzIxNTg5XS5tdCksKGNlWzFdfHx7fSkudXN6JiYoWD1jZVsxXS51c3opLChjZVsxXXx8e30pLmNzeiYmKFY9Y2VbMV0uY3N6KSxFJiYoKEVbMjE1ODldfHx7fSkubXQmJihLPUVbMjE1ODldLm10KSwoRVsxXXx8e30pLnVzeiYmKFg9RVsxXS51c3opLChFWzFdfHx7fSkuY3N6JiYoVj1FWzFdLmNzeikpfXYubCs9c2U7dmFyIFNlPXYuc2xpY2Uodi5sLHYubCtWKTtzd2l0Y2goVyl7Y2FzZSA4OlNlPW1lKHYsWCk7YnJlYWs7Y2FzZSAwOnYubCs9VjticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgWklQIENvbXByZXNzaW9uIG1ldGhvZCAiK1cpfXZhciBKZT0hMTtTJjgmJihIPXYucmVhZF9zaGlmdCg0KSxIPT0xMzQ2OTU3NjAmJihIPXYucmVhZF9zaGlmdCg0KSxKZT0hMCksVj12LnJlYWRfc2hpZnQoNCksWD12LnJlYWRfc2hpZnQoNCkpLFYhPVQmJk5hKEplLCJCYWQgY29tcHJlc3NlZCBzaXplOiAiK1QrIiAhPSAiK1YpLFghPWsmJk5hKEplLCJCYWQgdW5jb21wcmVzc2VkIHNpemU6ICIraysiICE9ICIrWCksVXIoRix2ZSxTZSx7dW5zYWZlOiEwLG10Okt9KX1mdW5jdGlvbiBVMCh2LFQpe3ZhciBrPVR8fHt9LEY9W10sRT1bXSxTPWZyKDEpLFc9ay5jb21wcmVzc2lvbj84OjAsSz0wLEg9MCxWPTAsWD0wLGFlPTAsc2U9di5GdWxsUGF0aHNbMF0sdmU9c2UsdGU9di5GaWxlSW5kZXhbMF0sY2U9W10sU2U9MDtmb3IoSD0xO0g8di5GdWxsUGF0aHMubGVuZ3RoOysrSClpZih2ZT12LkZ1bGxQYXRoc1tIXS5zbGljZShzZS5sZW5ndGgpLHRlPXYuRmlsZUluZGV4W0hdLCEoIXRlLnNpemV8fCF0ZS5jb250ZW50fHxBcnJheS5pc0FycmF5KHRlLmNvbnRlbnQpJiZ0ZS5jb250ZW50Lmxlbmd0aD09MHx8dmU9PSIBU2gzM3RKNSIpKXt2YXIgSmU9WCxRZT1mcih2ZS5sZW5ndGgpO2ZvcihWPTA7Vjx2ZS5sZW5ndGg7KytWKVFlLndyaXRlX3NoaWZ0KDEsdmUuY2hhckNvZGVBdChWKSYxMjcpO1FlPVFlLnNsaWNlKDAsUWUubCksY2VbYWVdPXR5cGVvZiB0ZS5jb250ZW50PT0ic3RyaW5nIj91aS5ic3RyKHRlLmNvbnRlbnQsMCk6dWkuYnVmKHRlLmNvbnRlbnQsMCk7dmFyIFRyPXR5cGVvZiB0ZS5jb250ZW50PT0ic3RyaW5nIj9Ecih0ZS5jb250ZW50KTp0ZS5jb250ZW50O1c9PTgmJihUcj1aKFRyKSksUz1mcigzMCksUy53cml0ZV9zaGlmdCg0LDY3MzI0NzUyKSxTLndyaXRlX3NoaWZ0KDIsMjApLFMud3JpdGVfc2hpZnQoMixLKSxTLndyaXRlX3NoaWZ0KDIsVyksdGUubXQ/aShTLHRlLm10KTpTLndyaXRlX3NoaWZ0KDQsMCksUy53cml0ZV9zaGlmdCgtNCxjZVthZV0pLFMud3JpdGVfc2hpZnQoNCxUci5sZW5ndGgpLFMud3JpdGVfc2hpZnQoNCx0ZS5jb250ZW50Lmxlbmd0aCksUy53cml0ZV9zaGlmdCgyLFFlLmxlbmd0aCksUy53cml0ZV9zaGlmdCgyLDApLFgrPVMubGVuZ3RoLEYucHVzaChTKSxYKz1RZS5sZW5ndGgsRi5wdXNoKFFlKSxYKz1Uci5sZW5ndGgsRi5wdXNoKFRyKSxTPWZyKDQ2KSxTLndyaXRlX3NoaWZ0KDQsMzM2MzkyNDgpLFMud3JpdGVfc2hpZnQoMiwwKSxTLndyaXRlX3NoaWZ0KDIsMjApLFMud3JpdGVfc2hpZnQoMixLKSxTLndyaXRlX3NoaWZ0KDIsVyksUy53cml0ZV9zaGlmdCg0LDApLFMud3JpdGVfc2hpZnQoLTQsY2VbYWVdKSxTLndyaXRlX3NoaWZ0KDQsVHIubGVuZ3RoKSxTLndyaXRlX3NoaWZ0KDQsdGUuY29udGVudC5sZW5ndGgpLFMud3JpdGVfc2hpZnQoMixRZS5sZW5ndGgpLFMud3JpdGVfc2hpZnQoMiwwKSxTLndyaXRlX3NoaWZ0KDIsMCksUy53cml0ZV9zaGlmdCgyLDApLFMud3JpdGVfc2hpZnQoMiwwKSxTLndyaXRlX3NoaWZ0KDQsMCksUy53cml0ZV9zaGlmdCg0LEplKSxTZSs9Uy5sLEUucHVzaChTKSxTZSs9UWUubGVuZ3RoLEUucHVzaChRZSksKythZX1yZXR1cm4gUz1mcigyMiksUy53cml0ZV9zaGlmdCg0LDEwMTAxMDI1NiksUy53cml0ZV9zaGlmdCgyLDApLFMud3JpdGVfc2hpZnQoMiwwKSxTLndyaXRlX3NoaWZ0KDIsYWUpLFMud3JpdGVfc2hpZnQoMixhZSksUy53cml0ZV9zaGlmdCg0LFNlKSxTLndyaXRlX3NoaWZ0KDQsWCksUy53cml0ZV9zaGlmdCgyLDApLHlhKFt5YShGKSx5YShFKSxTXSl9dmFyIGF0PXtodG06InRleHQvaHRtbCIseG1sOiJ0ZXh0L3htbCIsZ2lmOiJpbWFnZS9naWYiLGpwZzoiaW1hZ2UvanBlZyIscG5nOiJpbWFnZS9wbmciLG1zbzoiYXBwbGljYXRpb24veC1tc28iLHRobXg6ImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2V0aGVtZSIsc2gzM3RqNToiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIn07ZnVuY3Rpb24gSDAodixUKXtpZih2LmN0eXBlKXJldHVybiB2LmN0eXBlO3ZhciBrPXYubmFtZXx8IiIsRj1rLm1hdGNoKC9cLihbXlwuXSspJC8pO3JldHVybiBGJiZhdFtGWzFdXXx8VCYmKEY9KGs9VCkubWF0Y2goL1tcLlxcXShbXlwuXFxdKSskLyksRiYmYXRbRlsxXV0pP2F0W0ZbMV1dOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0ifWZ1bmN0aW9uIFcwKHYpe2Zvcih2YXIgVD1Lbih2KSxrPVtdLEY9MDtGPFQubGVuZ3RoO0YrPTc2KWsucHVzaChULnNsaWNlKEYsRis3NikpO3JldHVybiBrLmpvaW4oYFxyCmApK2BccgpgfWZ1bmN0aW9uIGt0KHYpe3ZhciBUPXYucmVwbGFjZSgvW1x4MDAtXHgwOFx4MEJceDBDXHgwRS1ceDFGXHg3RS1ceEZGPV0vZyxmdW5jdGlvbihWKXt2YXIgWD1WLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7cmV0dXJuIj0iKyhYLmxlbmd0aD09MT8iMCIrWDpYKX0pO1Q9VC5yZXBsYWNlKC8gJC9tZywiPTIwIikucmVwbGFjZSgvXHQkL21nLCI9MDkiKSxULmNoYXJBdCgwKT09YApgJiYoVD0iPTBEIitULnNsaWNlKDEpKSxUPVQucmVwbGFjZSgvXHIoPyFcbikvbWcsIj0wRCIpLnJlcGxhY2UoL1xuXG4vbWcsYAo9MEFgKS5yZXBsYWNlKC8oW15cclxuXSlcbi9tZywiJDE9MEEiKTtmb3IodmFyIGs9W10sRj1ULnNwbGl0KGBccgpgKSxFPTA7RTxGLmxlbmd0aDsrK0Upe3ZhciBTPUZbRV07aWYoUy5sZW5ndGg9PTApe2sucHVzaCgiIik7Y29udGludWV9Zm9yKHZhciBXPTA7VzxTLmxlbmd0aDspe3ZhciBLPTc2LEg9Uy5zbGljZShXLFcrSyk7SC5jaGFyQXQoSy0xKT09Ij0iP0stLTpILmNoYXJBdChLLTIpPT0iPSI/Sy09MjpILmNoYXJBdChLLTMpPT0iPSImJihLLT0zKSxIPVMuc2xpY2UoVyxXK0spLFcrPUssVzxTLmxlbmd0aCYmKEgrPSI9Iiksay5wdXNoKEgpfX1yZXR1cm4gay5qb2luKGBccgpgKX1mdW5jdGlvbiBWMCh2KXtmb3IodmFyIFQ9W10saz0wO2s8di5sZW5ndGg7KytrKXtmb3IodmFyIEY9dltrXTtrPD12Lmxlbmd0aCYmRi5jaGFyQXQoRi5sZW5ndGgtMSk9PSI9IjspRj1GLnNsaWNlKDAsRi5sZW5ndGgtMSkrdlsrK2tdO1QucHVzaChGKX1mb3IodmFyIEU9MDtFPFQubGVuZ3RoOysrRSlUW0VdPVRbRV0ucmVwbGFjZSgvWz1dWzAtOUEtRmEtZl17Mn0vZyxmdW5jdGlvbihTKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChTLnNsaWNlKDEpLDE2KSl9KTtyZXR1cm4gRHIoVC5qb2luKGBccgpgKSl9ZnVuY3Rpb24gd3QodixULGspe2Zvcih2YXIgRj0iIixFPSIiLFM9IiIsVyxLPTA7SzwxMDsrK0spe3ZhciBIPVRbS107aWYoIUh8fEgubWF0Y2goL15ccyokLykpYnJlYWs7dmFyIFY9SC5tYXRjaCgvXihbXjpdKj8pOlxzKihbXlxzXS4qKSQvKTtpZihWKXN3aXRjaChWWzFdLnRvTG93ZXJDYXNlKCkpe2Nhc2UiY29udGVudC1sb2NhdGlvbiI6Rj1WWzJdLnRyaW0oKTticmVhaztjYXNlImNvbnRlbnQtdHlwZSI6Uz1WWzJdLnRyaW0oKTticmVhaztjYXNlImNvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmciOkU9VlsyXS50cmltKCk7YnJlYWt9fXN3aXRjaCgrK0ssRS50b0xvd2VyQ2FzZSgpKXtjYXNlImJhc2U2NCI6Vz1EcihJcihULnNsaWNlKEspLmpvaW4oIiIpKSk7YnJlYWs7Y2FzZSJxdW90ZWQtcHJpbnRhYmxlIjpXPVYwKFQuc2xpY2UoSykpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nICIrRSl9dmFyIFg9VXIodixGLnNsaWNlKGsubGVuZ3RoKSxXLHt1bnNhZmU6ITB9KTtTJiYoWC5jdHlwZT1TKX1mdW5jdGlvbiBGdCh2LFQpe2lmKHVlKHYuc2xpY2UoMCwxMykpLnRvTG93ZXJDYXNlKCkhPSJtaW1lLXZlcnNpb246Iil0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIE1BRCBoZWFkZXIiKTt2YXIgaz1UJiZULnJvb3R8fCIiLEY9KE5lJiZCdWZmZXIuaXNCdWZmZXIodik/di50b1N0cmluZygiYmluYXJ5Iik6dWUodikpLnNwbGl0KGBccgpgKSxFPTAsUz0iIjtmb3IoRT0wO0U8Ri5sZW5ndGg7KytFKWlmKFM9RltFXSwhIS9eQ29udGVudC1Mb2NhdGlvbjovaS50ZXN0KFMpJiYoUz1TLnNsaWNlKFMuaW5kZXhPZigiZmlsZSIpKSxrfHwoaz1TLnNsaWNlKDAsUy5sYXN0SW5kZXhPZigiLyIpKzEpKSxTLnNsaWNlKDAsay5sZW5ndGgpIT1rKSlmb3IoO2subGVuZ3RoPjAmJihrPWsuc2xpY2UoMCxrLmxlbmd0aC0xKSxrPWsuc2xpY2UoMCxrLmxhc3RJbmRleE9mKCIvIikrMSksUy5zbGljZSgwLGsubGVuZ3RoKSE9ayk7KTt2YXIgVz0oRlsxXXx8IiIpLm1hdGNoKC9ib3VuZGFyeT0iKC4qPykiLyk7aWYoIVcpdGhyb3cgbmV3IEVycm9yKCJNQUQgY2Fubm90IGZpbmQgYm91bmRhcnkiKTt2YXIgSz0iLS0iKyhXWzFdfHwiIiksSD1bXSxWPVtdLFg9e0ZpbGVJbmRleDpILEZ1bGxQYXRoczpWfTtiKFgpO3ZhciBhZSxzZT0wO2ZvcihFPTA7RTxGLmxlbmd0aDsrK0Upe3ZhciB2ZT1GW0VdO3ZlIT09SyYmdmUhPT1LKyItLSJ8fChzZSsrJiZ3dChYLEYuc2xpY2UoYWUsRSksayksYWU9RSl9cmV0dXJuIFh9ZnVuY3Rpb24gVW4odixUKXt2YXIgaz1UfHx7fSxGPWsuYm91bmRhcnl8fCJTaGVldEpTIjtGPSItLS0tLS09IitGO2Zvcih2YXIgRT1bIk1JTUUtVmVyc2lvbjogMS4wIiwnQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvcmVsYXRlZDsgYm91bmRhcnk9IicrRi5zbGljZSgyKSsnIicsIiIsIiIsIiJdLFM9di5GdWxsUGF0aHNbMF0sVz1TLEs9di5GaWxlSW5kZXhbMF0sSD0xO0g8di5GdWxsUGF0aHMubGVuZ3RoOysrSClpZihXPXYuRnVsbFBhdGhzW0hdLnNsaWNlKFMubGVuZ3RoKSxLPXYuRmlsZUluZGV4W0hdLCEoIUsuc2l6ZXx8IUsuY29udGVudHx8Vz09IgFTaDMzdEo1Iikpe1c9Vy5yZXBsYWNlKC9bXHgwMC1ceDA4XHgwQlx4MENceDBFLVx4MUZceDdFLVx4RkZdL2csZnVuY3Rpb24oU2Upe3JldHVybiJfeCIrU2UuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikrIl8ifSkucmVwbGFjZSgvW1x1MDA4MC1cdUZGRkZdL2csZnVuY3Rpb24oU2Upe3JldHVybiJfdSIrU2UuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikrIl8ifSk7Zm9yKHZhciBWPUsuY29udGVudCxYPU5lJiZCdWZmZXIuaXNCdWZmZXIoVik/Vi50b1N0cmluZygiYmluYXJ5Iik6dWUoViksYWU9MCxzZT1NYXRoLm1pbigxMDI0LFgubGVuZ3RoKSx2ZT0wLHRlPTA7dGU8PXNlOysrdGUpKHZlPVguY2hhckNvZGVBdCh0ZSkpPj0zMiYmdmU8MTI4JiYrK2FlO3ZhciBjZT1hZT49c2UqNC81O0UucHVzaChGKSxFLnB1c2goIkNvbnRlbnQtTG9jYXRpb246ICIrKGsucm9vdHx8ImZpbGU6Ly8vQzovU2hlZXRKUy8iKStXKSxFLnB1c2goIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6ICIrKGNlPyJxdW90ZWQtcHJpbnRhYmxlIjoiYmFzZTY0IikpLEUucHVzaCgiQ29udGVudC1UeXBlOiAiK0gwKEssVykpLEUucHVzaCgiIiksRS5wdXNoKGNlP2t0KFgpOlcwKFgpKX1yZXR1cm4gRS5wdXNoKEYrYC0tXHIKYCksRS5qb2luKGBccgpgKX1mdW5jdGlvbiBIbih2KXt2YXIgVD17fTtyZXR1cm4gYihULHYpLFR9ZnVuY3Rpb24gVXIodixULGssRil7dmFyIEU9RiYmRi51bnNhZmU7RXx8Yih2KTt2YXIgUz0hRSYmTWUuZmluZCh2LFQpO2lmKCFTKXt2YXIgVz12LkZ1bGxQYXRoc1swXTtULnNsaWNlKDAsVy5sZW5ndGgpPT1XP1c9VDooVy5zbGljZSgtMSkhPSIvIiYmKFcrPSIvIiksVz0oVytUKS5yZXBsYWNlKCIvLyIsIi8iKSksUz17bmFtZTpuKFQpLHR5cGU6Mn0sdi5GaWxlSW5kZXgucHVzaChTKSx2LkZ1bGxQYXRocy5wdXNoKFcpLEV8fE1lLnV0aWxzLmNmYl9nYyh2KX1yZXR1cm4gUy5jb250ZW50PWssUy5zaXplPWs/ay5sZW5ndGg6MCxGJiYoRi5DTFNJRCYmKFMuY2xzaWQ9Ri5DTFNJRCksRi5tdCYmKFMubXQ9Ri5tdCksRi5jdCYmKFMuY3Q9Ri5jdCkpLFN9ZnVuY3Rpb24gJGUodixUKXtiKHYpO3ZhciBrPU1lLmZpbmQodixUKTtpZihrKXtmb3IodmFyIEY9MDtGPHYuRmlsZUluZGV4Lmxlbmd0aDsrK0YpaWYodi5GaWxlSW5kZXhbRl09PWspcmV0dXJuIHYuRmlsZUluZGV4LnNwbGljZShGLDEpLHYuRnVsbFBhdGhzLnNwbGljZShGLDEpLCEwfXJldHVybiExfWZ1bmN0aW9uIE0odixULGspe2Iodik7dmFyIEY9TWUuZmluZCh2LFQpO2lmKEYpe2Zvcih2YXIgRT0wO0U8di5GaWxlSW5kZXgubGVuZ3RoOysrRSlpZih2LkZpbGVJbmRleFtFXT09RilyZXR1cm4gdi5GaWxlSW5kZXhbRV0ubmFtZT1uKGspLHYuRnVsbFBhdGhzW0VdPWssITB9cmV0dXJuITF9ZnVuY3Rpb24gWSh2KXtJKHYsITApfXJldHVybiBhLmZpbmQ9TCxhLnJlYWQ9UCxhLnBhcnNlPWwsYS53cml0ZT1qLGEud3JpdGVGaWxlPWdlLGEudXRpbHM9e2NmYl9uZXc6SG4sY2ZiX2FkZDpVcixjZmJfZGVsOiRlLGNmYl9tb3Y6TSxjZmJfZ2M6WSxSZWFkU2hpZnQ6RHQsQ2hlY2tGaWVsZDpqaSxwcmVwX2Jsb2I6c3IsYmNvbmNhdDp5YSx1c2VfemxpYjpiZSxfZGVmbGF0ZVJhdzpPYSxfaW5mbGF0ZVJhdzpRdCxjb25zdHM6UX0sYX0oKSxEYztmdW5jdGlvbiBSYyhlKXtpZih0eXBlb2YgRGVubzwidSIpcmV0dXJuIERlbm8ucmVhZEZpbGVTeW5jKGUpO2lmKHR5cGVvZiAkPCJ1IiYmdHlwZW9mIEZpbGU8InUiJiZ0eXBlb2YgRm9sZGVyPCJ1Iil0cnl7dmFyIGE9RmlsZShlKTthLm9wZW4oInIiKSxhLmVuY29kaW5nPSJiaW5hcnkiO3ZhciByPWEucmVhZCgpO3JldHVybiBhLmNsb3NlKCkscn1jYXRjaCh0KXtpZighdC5tZXNzYWdlfHx0Lm1lc3NhZ2UuaW5kZXhPZigib25zdHJ1Y3QiKT09LTEpdGhyb3cgdH10aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBhY2Nlc3MgZmlsZSAiK2UpfWZ1bmN0aW9uIHByKGUpe2Zvcih2YXIgYT1PYmplY3Qua2V5cyhlKSxyPVtdLHQ9MDt0PGEubGVuZ3RoOysrdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxhW3RdKSYmci5wdXNoKGFbdF0pO3JldHVybiByfWZ1bmN0aW9uIEowKGUpe2Zvcih2YXIgYT1bXSxyPXByKGUpLHQ9MDt0IT09ci5sZW5ndGg7Kyt0KWFbZVtyW3RdXV09clt0XTtyZXR1cm4gYX12YXIgaGk9RGF0ZS5VVEMoMTg5OSwxMSwzMCwwLDAsMCksT2M9RGF0ZS5VVEMoMTg5OSwxMSwzMSwwLDAsMCksTmM9RGF0ZS5VVEMoMTkwNCwwLDEsMCwwLDApO2Z1bmN0aW9uIG9yKGUsYSl7dmFyIHI9ZS5nZXRUaW1lKCksdD0oci1oaSkvKDI0KjYwKjYwKjFlMyk7cmV0dXJuIGE/KHQtPTE0NjIsdDwtMTQwMj90LTE6dCk6dDw2MD90LTE6dH1mdW5jdGlvbiBTYShlKXtpZihlPj02MCYmZTw2MSlyZXR1cm4gZTt2YXIgYT1uZXcgRGF0ZTtyZXR1cm4gYS5zZXRUaW1lKChlPjYwP2U6ZSsxKSoyNCo2MCo2MCoxZTMraGkpLGF9ZnVuY3Rpb24gTWMoZSl7dmFyIGE9MCxyPTAsdD0hMSxuPWUubWF0Y2goL1AoWzAtOVwuXStZKT8oWzAtOVwuXStNKT8oWzAtOVwuXStEKT9UKFswLTlcLl0rSCk/KFswLTlcLl0rTSk/KFswLTlcLl0rUyk/Lyk7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJ8IitlKyJ8IGlzIG5vdCBhbiBJU084NjAxIER1cmF0aW9uIik7Zm9yKHZhciBpPTE7aSE9bi5sZW5ndGg7KytpKWlmKG5baV0pe3N3aXRjaChyPTEsaT4zJiYodD0hMCksbltpXS5zbGljZShuW2ldLmxlbmd0aC0xKSl7Y2FzZSJZIjp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIElTTyBEdXJhdGlvbiBGaWVsZDogIituW2ldLnNsaWNlKG5baV0ubGVuZ3RoLTEpKTtjYXNlIkQiOnIqPTI0O2Nhc2UiSCI6cio9NjA7Y2FzZSJNIjppZih0KXIqPTYwO2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBJU08gRHVyYXRpb24gRmllbGQ6IE0iKX1hKz1yKnBhcnNlSW50KG5baV0sMTApfXJldHVybiBhfXZhciBQYz0vXihcZCspOihcZCspKDpcZCspPyhcLlxkKyk/JC8sTGM9L14oXGQrKS0oXGQrKS0oXGQrKSQvLHhpPS9eKFxkKyktKFxkKyktKFxkKylbVCBdKFxkKyk6KFxkKykoOlxkKyk/KFwuXGQrKT8kLztmdW5jdGlvbiB4cihlLGEpe2lmKGUgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBlO3ZhciByPWUubWF0Y2goUGMpO2lmKHIpcmV0dXJuIG5ldyBEYXRlKChhP05jOk9jKSsoKHBhcnNlSW50KHJbMV0sMTApKjYwK3BhcnNlSW50KHJbMl0sMTApKSo2MCsoclszXT9wYXJzZUludChyWzNdLnNsaWNlKDEpLDEwKTowKSkqMWUzKyhyWzRdP3BhcnNlSW50KChyWzRdKyIwMDAiKS5zbGljZSgxLDQpLDEwKTowKSk7aWYocj1lLm1hdGNoKExjKSxyKXJldHVybiBuZXcgRGF0ZShEYXRlLlVUQygrclsxXSwrclsyXS0xLCtyWzNdLDAsMCwwLDApKTtpZihyPWUubWF0Y2goeGkpLHIpcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKCtyWzFdLCtyWzJdLTEsK3JbM10sK3JbNF0sK3JbNV0scls2XSYmcGFyc2VJbnQocls2XS5zbGljZSgxKSwxMCl8fDAscls3XSYmcGFyc2VJbnQoKHJbN10rIjAwMDAiKS5zbGljZSgxLDQpLDEwKXx8MCkpO3ZhciB0PW5ldyBEYXRlKGUpO3JldHVybiB0fWZ1bmN0aW9uIEJhKGUsYSl7aWYoTmUmJkJ1ZmZlci5pc0J1ZmZlcihlKSl7aWYoYSYmRXQpe2lmKGVbMF09PTI1NSYmZVsxXT09MjU0KXJldHVybiBidChlLnNsaWNlKDIpLnRvU3RyaW5nKCJ1dGYxNmxlIikpO2lmKGVbMV09PTI1NCYmZVsyXT09MjU1KXJldHVybiBidCh6bihlLnNsaWNlKDIpLnRvU3RyaW5nKCJiaW5hcnkiKSkpfXJldHVybiBlLnRvU3RyaW5nKCJiaW5hcnkiKX1pZih0eXBlb2YgVGV4dERlY29kZXI8InUiKXRyeXtpZihhKXtpZihlWzBdPT0yNTUmJmVbMV09PTI1NClyZXR1cm4gYnQobmV3IFRleHREZWNvZGVyKCJ1dGYtMTZsZSIpLmRlY29kZShlLnNsaWNlKDIpKSk7aWYoZVswXT09MjU0JiZlWzFdPT0yNTUpcmV0dXJuIGJ0KG5ldyBUZXh0RGVjb2RlcigidXRmLTE2YmUiKS5kZWNvZGUoZS5zbGljZSgyKSkpfXZhciByPXsi4oKsIjoiwoAiLCLigJoiOiLCgiIsxpI6IsKDIiwi4oCeIjoiwoQiLCLigKYiOiLChSIsIuKAoCI6IsKGIiwi4oChIjoiwociLCLLhiI6IsKIIiwi4oCwIjoiwokiLMWgOiLCiiIsIuKAuSI6IsKLIizFkjoiwowiLMW9OiLCjiIsIuKAmCI6IsKRIiwi4oCZIjoiwpIiLCLigJwiOiLCkyIsIuKAnSI6IsKUIiwi4oCiIjoiwpUiLCLigJMiOiLCliIsIuKAlCI6IsKXIiwiy5wiOiLCmCIsIuKEoiI6IsKZIizFoToiwpoiLCLigLoiOiLCmyIsxZM6IsKcIizFvjoiwp4iLMW4OiLCnyJ9O3JldHVybiBBcnJheS5pc0FycmF5KGUpJiYoZT1uZXcgVWludDhBcnJheShlKSksbmV3IFRleHREZWNvZGVyKCJsYXRpbjEiKS5kZWNvZGUoZSkucmVwbGFjZSgvW+KCrOKAmsaS4oCe4oCm4oCg4oChy4bigLDFoOKAucWSxb3igJjigJnigJzigJ3igKLigJPigJTLnOKEosWh4oC6xZPFvsW4XS9nLGZ1bmN0aW9uKGkpe3JldHVybiByW2ldfHxpfSl9Y2F0Y2h7fXZhciB0PVtdLG49MDt0cnl7Zm9yKG49MDtuPGUubGVuZ3RoLTY1NTM2O24rPTY1NTM2KXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KDAsZS5zbGljZShuLG4rNjU1MzYpKSk7dC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoMCxlLnNsaWNlKG4pKSl9Y2F0Y2h7dHJ5e2Zvcig7bjxlLmxlbmd0aC0xNjM4NDtuKz0xNjM4NCl0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseSgwLGUuc2xpY2UobixuKzE2Mzg0KSkpO3QucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KDAsZS5zbGljZShuKSkpfWNhdGNoe2Zvcig7biE9ZS5sZW5ndGg7KytuKXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGVbbl0pKX19cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gVWUoZSl7aWYodHlwZW9mIEpTT048InUiJiYhQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlKSk7aWYodHlwZW9mIGUhPSJvYmplY3QifHxlPT1udWxsKXJldHVybiBlO2lmKGUgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBuZXcgRGF0ZShlLmdldFRpbWUoKSk7dmFyIGE9e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJihhW3JdPVVlKGVbcl0pKTtyZXR1cm4gYX1mdW5jdGlvbiBQZShlLGEpe2Zvcih2YXIgcj0iIjtyLmxlbmd0aDxhOylyKz1lO3JldHVybiByfWZ1bmN0aW9uIE9yKGUpe3ZhciBhPU51bWJlcihlKTtpZighaXNOYU4oYSkpcmV0dXJuIGlzRmluaXRlKGEpP2E6TmFOO2lmKCEvXGQvLnRlc3QoZSkpcmV0dXJuIGE7dmFyIHI9MSx0PWUucmVwbGFjZSgvKFtcZF0pLChbXGRdKS9nLCIkMSQyIikucmVwbGFjZSgvWyRdL2csIiIpLnJlcGxhY2UoL1slXS9nLGZ1bmN0aW9uKCl7cmV0dXJuIHIqPTEwMCwiIn0pO3JldHVybiFpc05hTihhPU51bWJlcih0KSl8fCh0PXQucmVwbGFjZSgvWyhdKFteKCldKilbKV0vLGZ1bmN0aW9uKG4saSl7cmV0dXJuIHI9LXIsaX0pLCFpc05hTihhPU51bWJlcih0KSkpP2EvcjphfXZhciBCYz0vXigwP1xkfDFbMC0yXSkoPzp8OihbMC01XT9cZCkoPzp8KFwuXGQrKSg/Onw6KFswLTVdP1xkKSl8OihbMC01XT9cZCkofFwuXGQrKSkpXHMrKFthcF0pbT8kLyxVYz0vXihbMDFdP1xkfDJbMC0zXSkoPzp8OihbMC01XT9cZCkoPzp8KFwuXGQrKSg/Onw6KFswLTVdP1xkKSl8OihbMC01XT9cZCkofFwuXGQrKSkpJC8sSGM9L14oXGQrKS0oXGQrKS0oXGQrKVtUIF0oXGQrKTooXGQrKSg6XGQrKShcLlxkKyk/W1pdPyQvLFdjPW5ldyBEYXRlKCI2LzkvNjkgMDA6MDAgVVRDIikudmFsdWVPZigpPT0tMTc3OTg0ZTU7ZnVuY3Rpb24gVmMoZSl7cmV0dXJuIGVbMl0/ZVszXT9lWzRdP25ldyBEYXRlKERhdGUuVVRDKDE4OTksMTEsMzEsK2VbMV0lMTIrKGVbN109PSJwIj8xMjowKSwrZVsyXSwrZVs0XSxwYXJzZUZsb2F0KGVbM10pKjFlMykpOm5ldyBEYXRlKERhdGUuVVRDKDE4OTksMTEsMzEsZVs3XT09InAiPzEyOjAsK2VbMV0sK2VbMl0scGFyc2VGbG9hdChlWzNdKSoxZTMpKTplWzVdP25ldyBEYXRlKERhdGUuVVRDKDE4OTksMTEsMzEsK2VbMV0lMTIrKGVbN109PSJwIj8xMjowKSwrZVsyXSwrZVs1XSxlWzZdP3BhcnNlRmxvYXQoZVs2XSkqMWUzOjApKTpuZXcgRGF0ZShEYXRlLlVUQygxODk5LDExLDMxLCtlWzFdJTEyKyhlWzddPT0icCI/MTI6MCksK2VbMl0sMCwwKSk6bmV3IERhdGUoRGF0ZS5VVEMoMTg5OSwxMSwzMSwrZVsxXSUxMisoZVs3XT09InAiPzEyOjApLDAsMCwwKSl9ZnVuY3Rpb24gR2MoZSl7cmV0dXJuIGVbMl0/ZVszXT9lWzRdP25ldyBEYXRlKERhdGUuVVRDKDE4OTksMTEsMzEsK2VbMV0sK2VbMl0sK2VbNF0scGFyc2VGbG9hdChlWzNdKSoxZTMpKTpuZXcgRGF0ZShEYXRlLlVUQygxODk5LDExLDMxLDAsK2VbMV0sK2VbMl0scGFyc2VGbG9hdChlWzNdKSoxZTMpKTplWzVdP25ldyBEYXRlKERhdGUuVVRDKDE4OTksMTEsMzEsK2VbMV0sK2VbMl0sK2VbNV0sZVs2XT9wYXJzZUZsb2F0KGVbNl0pKjFlMzowKSk6bmV3IERhdGUoRGF0ZS5VVEMoMTg5OSwxMSwzMSwrZVsxXSwrZVsyXSwwLDApKTpuZXcgRGF0ZShEYXRlLlVUQygxODk5LDExLDMxLCtlWzFdLDAsMCwwKSl9dmFyIFhjPVsiamFudWFyeSIsImZlYnJ1YXJ5IiwibWFyY2giLCJhcHJpbCIsIm1heSIsImp1bmUiLCJqdWx5IiwiYXVndXN0Iiwic2VwdGVtYmVyIiwib2N0b2JlciIsIm5vdmVtYmVyIiwiZGVjZW1iZXIiXTtmdW5jdGlvbiBTdChlKXtpZihIYy50ZXN0KGUpKXJldHVybiBlLmluZGV4T2YoIloiKT09LTE/bzAobmV3IERhdGUoZSkpOm5ldyBEYXRlKGUpO3ZhciBhPWUudG9Mb3dlckNhc2UoKSxyPWEucmVwbGFjZSgvXHMrL2csIiAiKS50cmltKCksdD1yLm1hdGNoKEJjKTtpZih0KXJldHVybiBWYyh0KTtpZih0PXIubWF0Y2goVWMpLHQpcmV0dXJuIEdjKHQpO2lmKHQ9ci5tYXRjaCh4aSksdClyZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMoK3RbMV0sK3RbMl0tMSwrdFszXSwrdFs0XSwrdFs1XSx0WzZdJiZwYXJzZUludCh0WzZdLnNsaWNlKDEpLDEwKXx8MCx0WzddJiZwYXJzZUludCgodFs3XSsiMDAwMCIpLnNsaWNlKDEsNCksMTApfHwwKSk7dmFyIG49bmV3IERhdGUoV2MmJmUuaW5kZXhPZigiVVRDIik9PS0xP2UrIiBVVEMiOmUpLGk9bmV3IERhdGUoTmFOKSxmPW4uZ2V0WWVhcigpO24uZ2V0TW9udGgoKTt2YXIgcz1uLmdldERhdGUoKTtpZihpc05hTihzKSlyZXR1cm4gaTtpZihhLm1hdGNoKC9qYW58ZmVifG1hcnxhcHJ8bWF5fGp1bnxqdWx8YXVnfHNlcHxvY3R8bm92fGRlYy8pKXtpZihhPWEucmVwbGFjZSgvW15hLXpdL2csIiIpLnJlcGxhY2UoLyhbXmEtel18XilbYXBdbT8oW15hLXpdfCQpLywiIiksYS5sZW5ndGg+MyYmWGMuaW5kZXhPZihhKT09LTEpcmV0dXJuIGl9ZWxzZSBpZihhLnJlcGxhY2UoL1thcF1tPy8sIiIpLm1hdGNoKC9bYS16XS8pKXJldHVybiBpO3JldHVybiBmPDB8fGY+ODA5OXx8ZS5tYXRjaCgvW14tMC05OixcL1xcXCBdLyk/aTpufXZhciB6Yz1mdW5jdGlvbigpe3ZhciBlPSJhYmFjYWJhIi5zcGxpdCgvKDo/YikvaSkubGVuZ3RoPT01O3JldHVybiBmdW5jdGlvbihyLHQsbil7aWYoZXx8dHlwZW9mIHQ9PSJzdHJpbmciKXJldHVybiByLnNwbGl0KHQpO2Zvcih2YXIgaT1yLnNwbGl0KHQpLGY9W2lbMF1dLHM9MTtzPGkubGVuZ3RoOysrcylmLnB1c2gobiksZi5wdXNoKGlbc10pO3JldHVybiBmfX0oKTtmdW5jdGlvbiBVYShlKXtyZXR1cm4gbmV3IERhdGUoZS5nZXRVVENGdWxsWWVhcigpLGUuZ2V0VVRDTW9udGgoKSxlLmdldFVUQ0RhdGUoKSxlLmdldFVUQ0hvdXJzKCksZS5nZXRVVENNaW51dGVzKCksZS5nZXRVVENTZWNvbmRzKCksZS5nZXRVVENNaWxsaXNlY29uZHMoKSl9ZnVuY3Rpb24gbzAoZSl7cmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKGUuZ2V0RnVsbFllYXIoKSxlLmdldE1vbnRoKCksZS5nZXREYXRlKCksZS5nZXRIb3VycygpLGUuZ2V0TWludXRlcygpLGUuZ2V0U2Vjb25kcygpLGUuZ2V0TWlsbGlzZWNvbmRzKCkpKX1mdW5jdGlvbiBaMChlKXt2YXIgYT1lLnNsaWNlKDAsMTAyNCkscj1hLmluZGV4T2YoIjwhRE9DVFlQRSIpO2lmKHI9PS0xKXJldHVybiBlO3ZhciB0PWUubWF0Y2goLzxbXHddLyk7cmV0dXJuIHQ/ZS5zbGljZSgwLHIpK2Uuc2xpY2UodC5pbmRleCk6ZX1mdW5jdGlvbiB1YShlLGEscil7Zm9yKHZhciB0PVtdLG49ZS5pbmRleE9mKGEpO24+LTE7KXt2YXIgaT1lLmluZGV4T2YocixuK2EubGVuZ3RoKTtpZihpPT0tMSlicmVhazt0LnB1c2goZS5zbGljZShuLGkrci5sZW5ndGgpKSxuPWUuaW5kZXhPZihhLGkrci5sZW5ndGgpfXJldHVybiB0Lmxlbmd0aD4wP3Q6bnVsbH1mdW5jdGlvbiBDdChlLGEscil7dmFyIHQ9W10sbj0wLGk9ZS5pbmRleE9mKGEpO2lmKGk9PS0xKXJldHVybiBlO2Zvcig7aT4tMTspe3QucHVzaChlLnNsaWNlKG4saSkpO3ZhciBmPWUuaW5kZXhPZihyLGkrYS5sZW5ndGgpO2lmKGY9PS0xKWJyZWFrOyhpPWUuaW5kZXhPZihhLG49ZityLmxlbmd0aCkpPT0tMSYmdC5wdXNoKGUuc2xpY2UobikpfXJldHVybiB0LmpvaW4oIiIpfXZhciAkYz17IiAiOjEsIgkiOjEsIlxyIjoxLCJcbiI6MSwiPiI6MX07ZnVuY3Rpb24gSGEoZSxhKXtmb3IodmFyIHI9ZS5pbmRleE9mKCI8IithKSx0PWEubGVuZ3RoKzEsbj1lLmxlbmd0aDtyPj0wJiZyPD1uLXQmJiEkY1tlLmNoYXJBdChyK3QpXTspcj1lLmluZGV4T2YoIjwiK2EscisxKTtpZihyPT09LTEpcmV0dXJuIG51bGw7dmFyIGk9ZS5pbmRleE9mKCI+IixyK2EubGVuZ3RoKTtpZihpPT09LTEpcmV0dXJuIG51bGw7dmFyIGY9IjwvIithKyI+IixzPWUuaW5kZXhPZihmLGkpO3JldHVybiBzPT0tMT9udWxsOltlLnNsaWNlKHIscytmLmxlbmd0aCksZS5zbGljZShpKzEscyldfXZhciBMZT1mdW5jdGlvbigpe3ZhciBlPXt9O3JldHVybiBmdW5jdGlvbihyLHQpe3ZhciBuPWVbdF07bnx8KGVbdF09bj1bbmV3IFJlZ0V4cCgiPCg/Olxcdys6KT8iK3QrIlxcYltePD5dKj4iLCJnIiksbmV3IFJlZ0V4cCgiPC8oPzpcXHcrOik/Iit0KyI+IiwiZyIpXSksblswXS5sYXN0SW5kZXg9blsxXS5sYXN0SW5kZXg9MDt2YXIgaT1uWzBdLmV4ZWMocik7aWYoIWkpcmV0dXJuIG51bGw7dmFyIGY9aS5pbmRleCxzPW5bMF0ubGFzdEluZGV4O2lmKG5bMV0ubGFzdEluZGV4PW5bMF0ubGFzdEluZGV4LGk9blsxXS5leGVjKHIpLCFpKXJldHVybiBudWxsO3ZhciBjPWkuaW5kZXgsbz1uWzFdLmxhc3RJbmRleDtyZXR1cm5bci5zbGljZShmLG8pLHIuc2xpY2UocyxjKV19fSgpLGRpPWZ1bmN0aW9uKCl7dmFyIGU9e307cmV0dXJuIGZ1bmN0aW9uKHIsdCl7dmFyIG49W10saT1lW3RdO2l8fChlW3RdPWk9W25ldyBSZWdFeHAoIjwoPzpcXHcrOik/Iit0KyJcXGJbXjw+XSo+IiwiZyIpLG5ldyBSZWdFeHAoIjwvKD86XFx3KzopPyIrdCsiPiIsImciKV0pLGlbMF0ubGFzdEluZGV4PWlbMV0ubGFzdEluZGV4PTA7Zm9yKHZhciBmO2Y9aVswXS5leGVjKHIpOyl7dmFyIHM9Zi5pbmRleDtpZihpWzFdLmxhc3RJbmRleD1pWzBdLmxhc3RJbmRleCxmPWlbMV0uZXhlYyhyKSwhZilyZXR1cm4gbnVsbDt2YXIgYz1pWzFdLmxhc3RJbmRleDtuLnB1c2goci5zbGljZShzLGMpKSxpWzBdLmxhc3RJbmRleD1pWzFdLmxhc3RJbmRleH1yZXR1cm4gbi5sZW5ndGg9PTA/bnVsbDpufX0oKSxLYz1mdW5jdGlvbigpe3ZhciBlPXt9O3JldHVybiBmdW5jdGlvbihyLHQpe3ZhciBuPVtdLGk9ZVt0XTtpfHwoZVt0XT1pPVtuZXcgUmVnRXhwKCI8KD86XFx3KzopPyIrdCsiXFxiW148Pl0qPiIsImciKSxuZXcgUmVnRXhwKCI8Lyg/Olxcdys6KT8iK3QrIj4iLCJnIildKSxpWzBdLmxhc3RJbmRleD1pWzFdLmxhc3RJbmRleD0wO2Zvcih2YXIgZixzPTAsYz0wO2Y9aVswXS5leGVjKHIpOyl7aWYocz1mLmluZGV4LG4ucHVzaChyLnNsaWNlKGMscykpLGM9cyxpWzFdLmxhc3RJbmRleD1pWzBdLmxhc3RJbmRleCxmPWlbMV0uZXhlYyhyKSwhZilyZXR1cm4gbnVsbDtjPWlbMV0ubGFzdEluZGV4LGlbMF0ubGFzdEluZGV4PWlbMV0ubGFzdEluZGV4fXJldHVybiBuLnB1c2goci5zbGljZShjKSksbi5sZW5ndGg9PTA/IiI6bi5qb2luKCIiKX19KCksamM9ZnVuY3Rpb24oKXt2YXIgZT17fTtyZXR1cm4gZnVuY3Rpb24ocix0KXt2YXIgbj1bXSxpPWVbdF07aXx8KGVbdF09aT1bbmV3IFJlZ0V4cCgiPCIrdCsiXFxiW148Pl0qPiIsImlnIiksbmV3IFJlZ0V4cCgiPC8iK3QrIj4iLCJpZyIpXSksaVswXS5sYXN0SW5kZXg9aVsxXS5sYXN0SW5kZXg9MDtmb3IodmFyIGY7Zj1pWzBdLmV4ZWMocik7KXt2YXIgcz1mLmluZGV4O2lmKGlbMV0ubGFzdEluZGV4PWlbMF0ubGFzdEluZGV4LGY9aVsxXS5leGVjKHIpLCFmKXJldHVybiBudWxsO3ZhciBjPWlbMV0ubGFzdEluZGV4O24ucHVzaChyLnNsaWNlKHMsYykpLGlbMF0ubGFzdEluZGV4PWlbMV0ubGFzdEluZGV4fXJldHVybiBuLmxlbmd0aD09MD9udWxsOm59fSgpO2Z1bmN0aW9uIHZpKGUpe3JldHVybiBlP2UuY29udGVudCYmZS50eXBlP0JhKGUuY29udGVudCwhMCk6ZS5kYXRhP1R0KGUuZGF0YSk6ZS5hc05vZGVCdWZmZXImJk5lP1R0KGUuYXNOb2RlQnVmZmVyKCkudG9TdHJpbmcoImJpbmFyeSIpKTplLmFzQmluYXJ5P1R0KGUuYXNCaW5hcnkoKSk6ZS5fZGF0YSYmZS5fZGF0YS5nZXRDb250ZW50P1R0KEJhKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUuX2RhdGEuZ2V0Q29udGVudCgpLDApKSk6bnVsbDpudWxsfWZ1bmN0aW9uIHBpKGUpe2lmKCFlKXJldHVybiBudWxsO2lmKGUuZGF0YSlyZXR1cm4gR24oZS5kYXRhKTtpZihlLmFzTm9kZUJ1ZmZlciYmTmUpcmV0dXJuIGUuYXNOb2RlQnVmZmVyKCk7aWYoZS5fZGF0YSYmZS5fZGF0YS5nZXRDb250ZW50KXt2YXIgYT1lLl9kYXRhLmdldENvbnRlbnQoKTtyZXR1cm4gdHlwZW9mIGE9PSJzdHJpbmciP0duKGEpOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGEpfXJldHVybiBlLmNvbnRlbnQmJmUudHlwZT9lLmNvbnRlbnQ6bnVsbH1mdW5jdGlvbiBZYyhlKXtyZXR1cm4gZSYmZS5uYW1lLnNsaWNlKC00KT09PSIuYmluIj9waShlKTp2aShlKX1mdW5jdGlvbiBHcihlLGEpe2Zvcih2YXIgcj1lLkZ1bGxQYXRoc3x8cHIoZS5maWxlcyksdD1hLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW1wvXS9nLCJcXCIpLG49dC5yZXBsYWNlKC9cXC9nLCIvIiksaT0wO2k8ci5sZW5ndGg7KytpKXt2YXIgZj1yW2ldLnJlcGxhY2UoL15Sb290IEVudHJ5W1wvXS8sIiIpLnRvTG93ZXJDYXNlKCk7aWYodD09Znx8bj09ZilyZXR1cm4gZS5maWxlcz9lLmZpbGVzW3JbaV1dOmUuRmlsZUluZGV4W2ldfXJldHVybiBudWxsfWZ1bmN0aW9uIHEwKGUsYSl7dmFyIHI9R3IoZSxhKTtpZihyPT1udWxsKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgZmlsZSAiK2ErIiBpbiB6aXAiKTtyZXR1cm4gcn1mdW5jdGlvbiB0cihlLGEscil7aWYoIXIpcmV0dXJuIFljKHEwKGUsYSkpO2lmKCFhKXJldHVybiBudWxsO3RyeXtyZXR1cm4gdHIoZSxhKX1jYXRjaHtyZXR1cm4gbnVsbH19ZnVuY3Rpb24gbHIoZSxhLHIpe2lmKCFyKXJldHVybiB2aShxMChlLGEpKTtpZighYSlyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIGxyKGUsYSl9Y2F0Y2h7cmV0dXJuIG51bGx9fWZ1bmN0aW9uIFEwKGUsYSxyKXtpZighcilyZXR1cm4gcGkocTAoZSxhKSk7aWYoIWEpcmV0dXJuIG51bGw7dHJ5e3JldHVybiBRMChlLGEpfWNhdGNoe3JldHVybiBudWxsfX1mdW5jdGlvbiBnaShlKXtmb3IodmFyIGE9ZS5GdWxsUGF0aHN8fHByKGUuZmlsZXMpLHI9W10sdD0wO3Q8YS5sZW5ndGg7Kyt0KWFbdF0uc2xpY2UoLTEpIT0iLyImJnIucHVzaChhW3RdLnJlcGxhY2UoL15Sb290IEVudHJ5W1wvXS8sIiIpKTtyZXR1cm4gci5zb3J0KCl9ZnVuY3Rpb24gSmMoZSxhLHIpe2lmKGUuRnVsbFBhdGhzKXtpZihBcnJheS5pc0FycmF5KHIpJiZ0eXBlb2YgclswXT09InN0cmluZyImJihyPXIuam9pbigiIikpLHR5cGVvZiByPT0ic3RyaW5nIil7dmFyIHQ7cmV0dXJuIE5lP3Q9RWEocik6dD1uYyhyKSxNZS51dGlscy5jZmJfYWRkKGUsYSx0KX1NZS51dGlscy5jZmJfYWRkKGUsYSxyKX1lbHNlIGUuZmlsZShhLHIpfWZ1bmN0aW9uIG1pKGUsYSl7c3dpdGNoKGEudHlwZSl7Y2FzZSJiYXNlNjQiOnJldHVybiBNZS5yZWFkKGUse3R5cGU6ImJhc2U2NCJ9KTtjYXNlImJpbmFyeSI6cmV0dXJuIE1lLnJlYWQoZSx7dHlwZToiYmluYXJ5In0pO2Nhc2UiYnVmZmVyIjpjYXNlImFycmF5IjpyZXR1cm4gTWUucmVhZChlLHt0eXBlOiJidWZmZXIifSl9dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK2EudHlwZSl9ZnVuY3Rpb24gaGEoZSxhKXtpZihlLmNoYXJBdCgwKT09Ii8iKXJldHVybiBlLnNsaWNlKDEpO3ZhciByPWEuc3BsaXQoIi8iKTthLnNsaWNlKC0xKSE9Ii8iJiZyLnBvcCgpO2Zvcih2YXIgdD1lLnNwbGl0KCIvIik7dC5sZW5ndGghPT0wOyl7dmFyIG49dC5zaGlmdCgpO249PT0iLi4iP3IucG9wKCk6biE9PSIuIiYmci5wdXNoKG4pfXJldHVybiByLmpvaW4oIi8iKX12YXIgX2k9YDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz5ccgpgLGtpPS9ccyhbXiJccz8+XC9dKylccyo9XHMqKCg/OiIpKFteIl0qKSg/OiIpfCg/OicpKFteJ10qKSg/OicpfChbXiciPlxzXSspKS9nLHdpPS88W1wvXD9dP1thLXpBLVowLTk6Xy1dKyg/OlxzK1teIlxzPzw+XC9dK1xzKj1ccyooPzoiW14iXSoifCdbXiddKid8W14nIjw+XHM9XSspKSpccypbXC9cP10/Pi9tZyxaYz0vPFtePD5dKj4vZyxucj1faS5tYXRjaCh3aSk/d2k6WmMscWM9Lzxcdyo6LyxRYz0vPChcLz8pXHcrOi87ZnVuY3Rpb24gb2UoZSxhLHIpe2Zvcih2YXIgdD17fSxuPTAsaT0wO24hPT1lLmxlbmd0aCYmISgoaT1lLmNoYXJDb2RlQXQobikpPT09MzJ8fGk9PT0xMHx8aT09PTEzKTsrK24pO2lmKGF8fCh0WzBdPWUuc2xpY2UoMCxuKSksbj09PWUubGVuZ3RoKXJldHVybiB0O3ZhciBmPWUubWF0Y2goa2kpLHM9MCxjPSIiLG89MCxsPSIiLHU9IiIseD0xO2lmKGYpZm9yKG89MDtvIT1mLmxlbmd0aDsrK28pe2Zvcih1PWZbb10uc2xpY2UoMSksaT0wO2khPXUubGVuZ3RoJiZ1LmNoYXJDb2RlQXQoaSkhPT02MTsrK2kpO2ZvcihsPXUuc2xpY2UoMCxpKS50cmltKCk7dS5jaGFyQ29kZUF0KGkrMSk9PTMyOykrK2k7Zm9yKHg9KG49dS5jaGFyQ29kZUF0KGkrMSkpPT0zNHx8bj09Mzk/MTowLGM9dS5zbGljZShpKzEreCx1Lmxlbmd0aC14KSxzPTA7cyE9bC5sZW5ndGgmJmwuY2hhckNvZGVBdChzKSE9PTU4Oysrcyk7aWYocz09PWwubGVuZ3RoKWwuaW5kZXhPZigiXyIpPjAmJihsPWwuc2xpY2UoMCxsLmluZGV4T2YoIl8iKSkpLHRbbF09YyxyfHwodFtsLnRvTG93ZXJDYXNlKCldPWMpO2Vsc2V7dmFyIGg9KHM9PT01JiZsLnNsaWNlKDAsNSk9PT0ieG1sbnMiPyJ4bWxucyI6IiIpK2wuc2xpY2UocysxKTtpZih0W2hdJiZsLnNsaWNlKHMtMyxzKT09ImV4dCIpY29udGludWU7dFtoXT1jLHJ8fCh0W2gudG9Mb3dlckNhc2UoKV09Yyl9fXJldHVybiB0fWZ1bmN0aW9uIGVvKGUsYSxyKXtmb3IodmFyIHQ9e30sbj0wLGk9MDtuIT09ZS5sZW5ndGgmJiEoKGk9ZS5jaGFyQ29kZUF0KG4pKT09PTMyfHxpPT09MTB8fGk9PT0xMyk7KytuKTtpZihhfHwodFswXT1lLnNsaWNlKDAsbikpLG49PT1lLmxlbmd0aClyZXR1cm4gdDt2YXIgZj1lLm1hdGNoKGtpKSxzPSIiLGM9MCxvPSIiLGw9IiIsdT0xO2lmKGYpZm9yKGM9MDtjIT1mLmxlbmd0aDsrK2Mpe2ZvcihsPWZbY10uc2xpY2UoMSksaT0wO2khPWwubGVuZ3RoJiZsLmNoYXJDb2RlQXQoaSkhPT02MTsrK2kpO2ZvcihvPWwuc2xpY2UoMCxpKS50cmltKCk7bC5jaGFyQ29kZUF0KGkrMSk9PTMyOykrK2k7dT0obj1sLmNoYXJDb2RlQXQoaSsxKSk9PTM0fHxuPT0zOT8xOjAscz1sLnNsaWNlKGkrMSt1LGwubGVuZ3RoLXUpLG8uaW5kZXhPZigiXyIpPjAmJihvPW8uc2xpY2UoMCxvLmluZGV4T2YoIl8iKSkpLHRbb109cyxyfHwodFtvLnRvTG93ZXJDYXNlKCldPXMpfXJldHVybiB0fWZ1bmN0aW9uIEFyKGUpe3JldHVybiBlLnJlcGxhY2UoUWMsIjwkMSIpfXZhciBGaT17IiZxdW90OyI6JyInLCImYXBvczsiOiInIiwiJmd0OyI6Ij4iLCImbHQ7IjoiPCIsIiZhbXA7IjoiJiJ9LFRpPUowKEZpKSxDZT1mdW5jdGlvbigpe3ZhciBlPS8mKD86cXVvdHxhcG9zfGd0fGx0fGFtcHwjeD8oW1xkYS1mQS1GXSspKTsvaWcsYT0vX3goW1xkYS1mQS1GXXs0fSlfL2c7ZnVuY3Rpb24gcih0KXt2YXIgbj10KyIiLGk9bi5pbmRleE9mKCI8IVtDREFUQVsiKTtpZihpPT0tMSlyZXR1cm4gbi5yZXBsYWNlKGUsZnVuY3Rpb24ocyxjKXtyZXR1cm4gRmlbc118fFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoYyxzLmluZGV4T2YoIngiKT4tMT8xNjoxMCkpfHxzfSkucmVwbGFjZShhLGZ1bmN0aW9uKHMsYyl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoYywxNikpfSk7dmFyIGY9bi5pbmRleE9mKCJdXT4iKTtyZXR1cm4gcihuLnNsaWNlKDAsaSkpK24uc2xpY2UoaSs5LGYpK3Iobi5zbGljZShmKzMpKX1yZXR1cm4gZnVuY3Rpb24obixpKXt2YXIgZj1yKG4pO3JldHVybiBpP2YucmVwbGFjZSgvXHJcbi9nLGAKYCk6Zn19KCksRWk9L1smPD4nIl0vZyxybz0vW1x1MDAwMC1cdTAwMDhcdTAwMGItXHUwMDFmXHVGRkZFLVx1RkZGRl0vZztmdW5jdGlvbiBhbyhlKXt2YXIgYT1lKyIiO3JldHVybiBhLnJlcGxhY2UoRWksZnVuY3Rpb24ocil7cmV0dXJuIFRpW3JdfSkucmVwbGFjZShybyxmdW5jdGlvbihyKXtyZXR1cm4iX3giKygiMDAwIityLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNCkrIl8ifSl9dmFyIHRvPS9bXHUwMDAwLVx1MDAxZl0vZztmdW5jdGlvbiB4YShlKXt2YXIgYT1lKyIiO3JldHVybiBhLnJlcGxhY2UoRWksZnVuY3Rpb24ocil7cmV0dXJuIFRpW3JdfSkucmVwbGFjZSgvXG4vZywiPGJyLz4iKS5yZXBsYWNlKHRvLGZ1bmN0aW9uKHIpe3JldHVybiImI3giKygiMDAwIityLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNCkrIjsifSl9dmFyIEFpPWZ1bmN0aW9uKCl7dmFyIGU9LyYjKFxkKyk7L2c7ZnVuY3Rpb24gYShyLHQpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KHQsMTApKX1yZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZShlLGEpfX0oKTtmdW5jdGlvbiBGZShlKXtzd2l0Y2goZSl7Y2FzZSAxOmNhc2UhMDpjYXNlIjEiOmNhc2UidHJ1ZSI6cmV0dXJuITA7Y2FzZSAwOmNhc2UhMTpjYXNlIjAiOmNhc2UiZmFsc2UiOnJldHVybiExfXJldHVybiExfWZ1bmN0aW9uIGVuKGUpe2Zvcih2YXIgYT0iIixyPTAsdD0wLG49MCxpPTAsZj0wLHM9MDtyPGUubGVuZ3RoOyl7aWYodD1lLmNoYXJDb2RlQXQocisrKSx0PDEyOCl7YSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0KTtjb250aW51ZX1pZihuPWUuY2hhckNvZGVBdChyKyspLHQ+MTkxJiZ0PDIyNCl7Zj0odCYzMSk8PDYsZnw9biY2MyxhKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGYpO2NvbnRpbnVlfWlmKGk9ZS5jaGFyQ29kZUF0KHIrKyksdDwyNDApe2ErPVN0cmluZy5mcm9tQ2hhckNvZGUoKHQmMTUpPDwxMnwobiY2Myk8PDZ8aSY2Myk7Y29udGludWV9Zj1lLmNoYXJDb2RlQXQocisrKSxzPSgodCY3KTw8MTh8KG4mNjMpPDwxMnwoaSY2Myk8PDZ8ZiY2MyktNjU1MzYsYSs9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5Nisocz4+PjEwJjEwMjMpKSxhKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU2MzIwKyhzJjEwMjMpKX1yZXR1cm4gYX1mdW5jdGlvbiB5aShlKXt2YXIgYT1BYSgyKmUubGVuZ3RoKSxyLHQsbj0xLGk9MCxmPTAscztmb3IodD0wO3Q8ZS5sZW5ndGg7dCs9biluPTEsKHM9ZS5jaGFyQ29kZUF0KHQpKTwxMjg/cj1zOnM8MjI0PyhyPShzJjMxKSo2NCsoZS5jaGFyQ29kZUF0KHQrMSkmNjMpLG49Mik6czwyNDA/KHI9KHMmMTUpKjQwOTYrKGUuY2hhckNvZGVBdCh0KzEpJjYzKSo2NCsoZS5jaGFyQ29kZUF0KHQrMikmNjMpLG49Myk6KG49NCxyPShzJjcpKjI2MjE0NCsoZS5jaGFyQ29kZUF0KHQrMSkmNjMpKjQwOTYrKGUuY2hhckNvZGVBdCh0KzIpJjYzKSo2NCsoZS5jaGFyQ29kZUF0KHQrMykmNjMpLHItPTY1NTM2LGY9NTUyOTYrKHI+Pj4xMCYxMDIzKSxyPTU2MzIwKyhyJjEwMjMpKSxmIT09MCYmKGFbaSsrXT1mJjI1NSxhW2krK109Zj4+PjgsZj0wKSxhW2krK109ciUyNTYsYVtpKytdPXI+Pj44O3JldHVybiBhLnNsaWNlKDAsaSkudG9TdHJpbmcoInVjczIiKX1mdW5jdGlvbiBTaShlKXtyZXR1cm4gRWEoZSwiYmluYXJ5IikudG9TdHJpbmcoInV0ZjgiKX12YXIgbDA9ImZvbyBiYXIgYmF6w6LCmMKDw7DCn8KNwqMiLFZlPWZ1bmN0aW9uKCl7aWYoTmUpe2lmKFNpKGwwKT09ZW4obDApKXJldHVybiBTaTtpZih5aShsMCk9PWVuKGwwKSlyZXR1cm4geWl9cmV0dXJuIGVufSgpLGJ0PU5lP2Z1bmN0aW9uKGUpe3JldHVybiBFYShlLCJ1dGY4IikudG9TdHJpbmcoImJpbmFyeSIpfTpmdW5jdGlvbihlKXtmb3IodmFyIGE9W10scj0wLHQ9MCxuPTA7cjxlLmxlbmd0aDspc3dpdGNoKHQ9ZS5jaGFyQ29kZUF0KHIrKyksITApe2Nhc2UgdDwxMjg6YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUodCkpO2JyZWFrO2Nhc2UgdDwyMDQ4OmEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDE5MisodD4+NikpKSxhLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxMjgrKHQmNjMpKSk7YnJlYWs7Y2FzZSh0Pj01NTI5NiYmdDw1NzM0NCk6dC09NTUyOTYsbj1lLmNoYXJDb2RlQXQocisrKS01NjMyMCsodDw8MTApLGEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDI0MCsobj4+MTgmNykpKSxhLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxNDQrKG4+PjEyJjYzKSkpLGEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCsobj4+NiY2MykpKSxhLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxMjgrKG4mNjMpKSk7YnJlYWs7ZGVmYXVsdDphLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgyMjQrKHQ+PjEyKSkpLGEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCsodD4+NiY2MykpKSxhLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxMjgrKHQmNjMpKSl9cmV0dXJuIGEuam9pbigiIil9LENpPWZ1bmN0aW9uKCl7dmFyIGU9W1sibmJzcCIsIiAiXSxbIm1pZGRvdCIsIsK3Il0sWyJxdW90IiwnIiddLFsiYXBvcyIsIiciXSxbImd0IiwiPiJdLFsibHQiLCI8Il0sWyJhbXAiLCImIl1dLm1hcChmdW5jdGlvbihhKXtyZXR1cm5bbmV3IFJlZ0V4cCgiJiIrYVswXSsiOyIsImlnIiksYVsxXV19KTtyZXR1cm4gZnVuY3Rpb24ocil7Zm9yKHZhciB0PXIucmVwbGFjZSgvXltcdFxuXHIgXSsvLCIiKS5yZXBsYWNlKC8oXnxbXlx0XG5cciBdKVtcdFxuXHIgXSskLywiJDEiKS5yZXBsYWNlKC8+XHMrL2csIj4iKS5yZXBsYWNlKC9cYlxzKzwvZywiPCIpLnJlcGxhY2UoL1tcdFxuXHIgXSsvZywiICIpLnJlcGxhY2UoLzxccypbYkJdW3JSXVxzKlwvPz4vZyxgCmApLnJlcGxhY2UoLzxbXjw+XSo+L2csIiIpLG49MDtuPGUubGVuZ3RoOysrbil0PXQucmVwbGFjZShlW25dWzBdLGVbbl1bMV0pO3JldHVybiB0fX0oKSxubz0vPFwvPyg/OnZ0Oik/dmFyaWFudD4vZyxpbz0vPCg/OnZ0OikoW148Iic+XSopPihbXHNcU10qKTwvO2Z1bmN0aW9uIGJpKGUsYSl7dmFyIHI9b2UoZSksdD1kaShlLHIuYmFzZVR5cGUpfHxbXSxuPVtdO2lmKHQubGVuZ3RoIT1yLnNpemUpe2lmKGEuV1RGKXRocm93IG5ldyBFcnJvcigidW5leHBlY3RlZCB2ZWN0b3IgbGVuZ3RoICIrdC5sZW5ndGgrIiAhPSAiK3Iuc2l6ZSk7cmV0dXJuIG59cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbihpKXt2YXIgZj1pLnJlcGxhY2Uobm8sIiIpLm1hdGNoKGlvKTtmJiZuLnB1c2goe3Y6VmUoZlsyXSksdDpmWzFdfSl9KSxufXZhciBzbz0vKF5cc3xccyR8XG4pLztmdW5jdGlvbiBmbyhlKXtyZXR1cm4gcHIoZSkubWFwKGZ1bmN0aW9uKGEpe3JldHVybiIgIithKyc9IicrZVthXSsnIid9KS5qb2luKCIiKX1mdW5jdGlvbiB1MChlLGEscil7cmV0dXJuIjwiK2UrKHIhPW51bGw/Zm8ocik6IiIpKyhhIT1udWxsPyhhLm1hdGNoKHNvKT8nIHhtbDpzcGFjZT0icHJlc2VydmUiJzoiIikrIj4iK2ErIjwvIitlOiIvIikrIj4ifWZ1bmN0aW9uIGgwKGUpe2lmKE5lJiZCdWZmZXIuaXNCdWZmZXIoZSkpcmV0dXJuIGUudG9TdHJpbmcoInV0ZjgiKTtpZih0eXBlb2YgZT09InN0cmluZyIpcmV0dXJuIGU7aWYodHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZlIGluc3RhbmNlb2YgVWludDhBcnJheSlyZXR1cm4gVmUoZmEoJDAoZSkpKTt0aHJvdyBuZXcgRXJyb3IoIkJhZCBpbnB1dCBmb3JtYXQ6IGV4cGVjdGVkIEJ1ZmZlciBvciBzdHJpbmciKX12YXIgaXI9LzwoW1wvXT8pKFteXHM/PjwhXC86Il0qOnwpKFteXHM/PD46XC8iXSspKD86XHMrW148Pj0/Iidcc10rPSJbXiJdKj8iKSpccypbXC9dPz4vbWcsY289e0NPUkVfUFJPUFM6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvbWV0YWRhdGEvY29yZS1wcm9wZXJ0aWVzIixDVVNUX1BST1BTOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9jdXN0b20tcHJvcGVydGllcyIsRVhUX1BST1BTOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9leHRlbmRlZC1wcm9wZXJ0aWVzIixDVDoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9jb250ZW50LXR5cGVzIixSRUxTOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMiLFRDTU5UOiJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTgvdGhyZWFkZWRjb21tZW50cyIsZGM6Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIixkY3Rlcm1zOiJodHRwOi8vcHVybC5vcmcvZGMvdGVybXMvIixkY21pdHlwZToiaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlLyIsbXg6Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL21hYy9leGNlbC8yMDA4L21haW4iLHI6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMiLHNqczoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9zaGVldGpzL2NvcmUtcHJvcGVydGllcyIsdnQ6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2RvY1Byb3BzVlR5cGVzIix4c2k6Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIix4c2Q6Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIn0sb289WyJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvc3ByZWFkc2hlZXRtbC8yMDA2L21haW4iLCJodHRwOi8vcHVybC5vY2xjLm9yZy9vb3htbC9zcHJlYWRzaGVldG1sL21haW4iLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9leGNlbC8yMDA2L21haW4iLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9leGNlbC8yMDA2LzIiXTtmdW5jdGlvbiBsbyhlLGEpe2Zvcih2YXIgcj0xLTIqKGVbYSs3XT4+PjcpLHQ9KChlW2ErN10mMTI3KTw8NCkrKGVbYSs2XT4+PjQmMTUpLG49ZVthKzZdJjE1LGk9NTtpPj0wOy0taSluPW4qMjU2K2VbYStpXTtyZXR1cm4gdD09MjA0Nz9uPT0wP3IqKDEvMCk6TmFOOih0PT0wP3Q9LTEwMjI6KHQtPTEwMjMsbis9TWF0aC5wb3coMiw1MikpLHIqTWF0aC5wb3coMix0LTUyKSpuKX1mdW5jdGlvbiB1byhlLGEscil7dmFyIHQ9KGE8MHx8MS9hPT0tMS8wPzE6MCk8PDcsbj0wLGk9MCxmPXQ/LWE6YTtpc0Zpbml0ZShmKT9mPT0wP249aT0wOihuPU1hdGguZmxvb3IoTWF0aC5sb2coZikvTWF0aC5MTjIpLGk9ZipNYXRoLnBvdygyLDUyLW4pLG48PS0xMDIzJiYoIWlzRmluaXRlKGkpfHxpPE1hdGgucG93KDIsNTIpKT9uPS0xMDIyOihpLT1NYXRoLnBvdygyLDUyKSxuKz0xMDIzKSk6KG49MjA0NyxpPWlzTmFOKGEpPzI2OTg1OjApO2Zvcih2YXIgcz0wO3M8PTU7KytzLGkvPTI1NillW3Irc109aSYyNTU7ZVtyKzZdPShuJjE1KTw8NHxpJjE1LGVbcis3XT1uPj40fHR9dmFyIElpPWZ1bmN0aW9uKGUpe2Zvcih2YXIgYT1bXSxyPTEwMjQwLHQ9MDt0PGVbMF0ubGVuZ3RoOysrdClpZihlWzBdW3RdKWZvcih2YXIgbj0wLGk9ZVswXVt0XS5sZW5ndGg7bjxpO24rPXIpYS5wdXNoLmFwcGx5KGEsZVswXVt0XS5zbGljZShuLG4rcikpO3JldHVybiBhfSxEaT1OZT9mdW5jdGlvbihlKXtyZXR1cm4gZVswXS5sZW5ndGg+MCYmQnVmZmVyLmlzQnVmZmVyKGVbMF1bMF0pP0J1ZmZlci5jb25jYXQoZVswXS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihhKT9hOkVhKGEpfSkpOklpKGUpfTpJaSxSaT1mdW5jdGlvbihlLGEscil7Zm9yKHZhciB0PVtdLG49YTtuPHI7bis9Mil0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShkYShlLG4pKSk7cmV0dXJuIHQuam9pbigiIikucmVwbGFjZShTciwiIil9LHJuPU5lP2Z1bmN0aW9uKGUsYSxyKXtyZXR1cm4hQnVmZmVyLmlzQnVmZmVyKGUpfHwhRXQ/UmkoZSxhLHIpOmUudG9TdHJpbmcoInV0ZjE2bGUiLGEscikucmVwbGFjZShTciwiIil9OlJpLE9pPWZ1bmN0aW9uKGUsYSxyKXtmb3IodmFyIHQ9W10sbj1hO248YStyOysrbil0LnB1c2goKCIwIitlW25dLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpKTtyZXR1cm4gdC5qb2luKCIiKX0sTmk9TmU/ZnVuY3Rpb24oZSxhLHIpe3JldHVybiBCdWZmZXIuaXNCdWZmZXIoZSk/ZS50b1N0cmluZygiaGV4IixhLGErcik6T2koZSxhLHIpfTpPaSxNaT1mdW5jdGlvbihlLGEscil7Zm9yKHZhciB0PVtdLG49YTtuPHI7bisrKXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGZ0KGUsbikpKTtyZXR1cm4gdC5qb2luKCIiKX0sSXQ9TmU/ZnVuY3Rpb24oYSxyLHQpe3JldHVybiBCdWZmZXIuaXNCdWZmZXIoYSk/YS50b1N0cmluZygidXRmOCIscix0KTpNaShhLHIsdCl9Ok1pLFBpPWZ1bmN0aW9uKGUsYSl7dmFyIHI9TnIoZSxhKTtyZXR1cm4gcj4wP0l0KGUsYSs0LGErNCtyLTEpOiIifSxMaT1QaSxCaT1mdW5jdGlvbihlLGEpe3ZhciByPU5yKGUsYSk7cmV0dXJuIHI+MD9JdChlLGErNCxhKzQrci0xKToiIn0sVWk9QmksSGk9ZnVuY3Rpb24oZSxhKXt2YXIgcj0yKk5yKGUsYSk7cmV0dXJuIHI+MD9JdChlLGErNCxhKzQrci0xKToiIn0sV2k9SGksVmk9ZnVuY3Rpb24oYSxyKXt2YXIgdD1OcihhLHIpO3JldHVybiB0PjA/cm4oYSxyKzQscis0K3QpOiIifSxHaT1WaSxYaT1mdW5jdGlvbihlLGEpe3ZhciByPU5yKGUsYSk7cmV0dXJuIHI+MD9JdChlLGErNCxhKzQrcik6IiJ9LHppPVhpLCRpPWZ1bmN0aW9uKGUsYSl7cmV0dXJuIGxvKGUsYSl9LHgwPSRpLEtpPWZ1bmN0aW9uKGEpe3JldHVybiBBcnJheS5pc0FycmF5KGEpfHx0eXBlb2YgVWludDhBcnJheTwidSImJmEgaW5zdGFuY2VvZiBVaW50OEFycmF5fTtOZSYmKExpPWZ1bmN0aW9uKGEscil7aWYoIUJ1ZmZlci5pc0J1ZmZlcihhKSlyZXR1cm4gUGkoYSxyKTt2YXIgdD1hLnJlYWRVSW50MzJMRShyKTtyZXR1cm4gdD4wP2EudG9TdHJpbmcoInV0ZjgiLHIrNCxyKzQrdC0xKToiIn0sVWk9ZnVuY3Rpb24oYSxyKXtpZighQnVmZmVyLmlzQnVmZmVyKGEpKXJldHVybiBCaShhLHIpO3ZhciB0PWEucmVhZFVJbnQzMkxFKHIpO3JldHVybiB0PjA/YS50b1N0cmluZygidXRmOCIscis0LHIrNCt0LTEpOiIifSxXaT1mdW5jdGlvbihhLHIpe2lmKCFCdWZmZXIuaXNCdWZmZXIoYSl8fCFFdClyZXR1cm4gSGkoYSxyKTt2YXIgdD0yKmEucmVhZFVJbnQzMkxFKHIpO3JldHVybiBhLnRvU3RyaW5nKCJ1dGYxNmxlIixyKzQscis0K3QtMSl9LEdpPWZ1bmN0aW9uKGEscil7aWYoIUJ1ZmZlci5pc0J1ZmZlcihhKXx8IUV0KXJldHVybiBWaShhLHIpO3ZhciB0PWEucmVhZFVJbnQzMkxFKHIpO3JldHVybiBhLnRvU3RyaW5nKCJ1dGYxNmxlIixyKzQscis0K3QpfSx6aT1mdW5jdGlvbihhLHIpe2lmKCFCdWZmZXIuaXNCdWZmZXIoYSkpcmV0dXJuIFhpKGEscik7dmFyIHQ9YS5yZWFkVUludDMyTEUocik7cmV0dXJuIGEudG9TdHJpbmcoInV0ZjgiLHIrNCxyKzQrdCl9LHgwPWZ1bmN0aW9uKGEscil7cmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihhKT9hLnJlYWREb3VibGVMRShyKTokaShhLHIpfSxLaT1mdW5jdGlvbihhKXtyZXR1cm4gQnVmZmVyLmlzQnVmZmVyKGEpfHxBcnJheS5pc0FycmF5KGEpfHx0eXBlb2YgVWludDhBcnJheTwidSImJmEgaW5zdGFuY2VvZiBVaW50OEFycmF5fSk7dmFyIGZ0PWZ1bmN0aW9uKGUsYSl7cmV0dXJuIGVbYV19LGRhPWZ1bmN0aW9uKGUsYSl7cmV0dXJuIGVbYSsxXSoyNTYrZVthXX0saG89ZnVuY3Rpb24oZSxhKXt2YXIgcj1lW2ErMV0qMjU2K2VbYV07cmV0dXJuIHI8MzI3Njg/cjooNjU1MzUtcisxKSotMX0sTnI9ZnVuY3Rpb24oZSxhKXtyZXR1cm4gZVthKzNdKigxPDwyNCkrKGVbYSsyXTw8MTYpKyhlW2ErMV08PDgpK2VbYV19LFdhPWZ1bmN0aW9uKGUsYSl7cmV0dXJuIGVbYSszXTw8MjR8ZVthKzJdPDwxNnxlW2ErMV08PDh8ZVthXX0seG89ZnVuY3Rpb24oZSxhKXtyZXR1cm4gZVthXTw8MjR8ZVthKzFdPDwxNnxlW2ErMl08PDh8ZVthKzNdfTtmdW5jdGlvbiBEdChlLGEpe3ZhciByPSIiLHQsbixpPVtdLGYscyxjLG87c3dpdGNoKGEpe2Nhc2UiZGJjcyI6aWYobz10aGlzLmwsTmUmJkJ1ZmZlci5pc0J1ZmZlcih0aGlzKSYmRXQpcj10aGlzLnNsaWNlKHRoaXMubCx0aGlzLmwrMiplKS50b1N0cmluZygidXRmMTZsZSIpO2Vsc2UgZm9yKGM9MDtjPGU7KytjKXIrPVN0cmluZy5mcm9tQ2hhckNvZGUoZGEodGhpcyxvKSksbys9MjtlKj0yO2JyZWFrO2Nhc2UidXRmOCI6cj1JdCh0aGlzLHRoaXMubCx0aGlzLmwrZSk7YnJlYWs7Y2FzZSJ1dGYxNmxlIjplKj0yLHI9cm4odGhpcyx0aGlzLmwsdGhpcy5sK2UpO2JyZWFrO2Nhc2Uid3N0ciI6cmV0dXJuIER0LmNhbGwodGhpcyxlLCJkYmNzIik7Y2FzZSJscHN0ci1hbnNpIjpyPUxpKHRoaXMsdGhpcy5sKSxlPTQrTnIodGhpcyx0aGlzLmwpO2JyZWFrO2Nhc2UibHBzdHItY3AiOnI9VWkodGhpcyx0aGlzLmwpLGU9NCtOcih0aGlzLHRoaXMubCk7YnJlYWs7Y2FzZSJscHdzdHIiOnI9V2kodGhpcyx0aGlzLmwpLGU9NCsyKk5yKHRoaXMsdGhpcy5sKTticmVhaztjYXNlImxwcDQiOmU9NCtOcih0aGlzLHRoaXMubCkscj1HaSh0aGlzLHRoaXMubCksZSYyJiYoZSs9Mik7YnJlYWs7Y2FzZSI4bHBwNCI6ZT00K05yKHRoaXMsdGhpcy5sKSxyPXppKHRoaXMsdGhpcy5sKSxlJjMmJihlKz00LShlJjMpKTticmVhaztjYXNlImNzdHIiOmZvcihlPTAscj0iIjsoZj1mdCh0aGlzLHRoaXMubCtlKyspKSE9PTA7KWkucHVzaChuMChmKSk7cj1pLmpvaW4oIiIpO2JyZWFrO2Nhc2UiX3dzdHIiOmZvcihlPTAscj0iIjsoZj1kYSh0aGlzLHRoaXMubCtlKSkhPT0wOylpLnB1c2gobjAoZikpLGUrPTI7ZSs9MixyPWkuam9pbigiIik7YnJlYWs7Y2FzZSJkYmNzLWNvbnQiOmZvcihyPSIiLG89dGhpcy5sLGM9MDtjPGU7KytjKXtpZih0aGlzLmxlbnMmJnRoaXMubGVucy5pbmRleE9mKG8pIT09LTEpcmV0dXJuIGY9ZnQodGhpcyxvKSx0aGlzLmw9bysxLHM9RHQuY2FsbCh0aGlzLGUtYyxmPyJkYmNzLWNvbnQiOiJzYmNzLWNvbnQiKSxpLmpvaW4oIiIpK3M7aS5wdXNoKG4wKGRhKHRoaXMsbykpKSxvKz0yfXI9aS5qb2luKCIiKSxlKj0yO2JyZWFrO2Nhc2UiY3BzdHIiOmNhc2Uic2Jjcy1jb250Ijpmb3Iocj0iIixvPXRoaXMubCxjPTA7YyE9ZTsrK2Mpe2lmKHRoaXMubGVucyYmdGhpcy5sZW5zLmluZGV4T2YobykhPT0tMSlyZXR1cm4gZj1mdCh0aGlzLG8pLHRoaXMubD1vKzEscz1EdC5jYWxsKHRoaXMsZS1jLGY/ImRiY3MtY29udCI6InNiY3MtY29udCIpLGkuam9pbigiIikrcztpLnB1c2gobjAoZnQodGhpcyxvKSkpLG8rPTF9cj1pLmpvaW4oIiIpO2JyZWFrO2RlZmF1bHQ6c3dpdGNoKGUpe2Nhc2UgMTpyZXR1cm4gdD1mdCh0aGlzLHRoaXMubCksdGhpcy5sKyssdDtjYXNlIDI6cmV0dXJuIHQ9KGE9PT0iaSI/aG86ZGEpKHRoaXMsdGhpcy5sKSx0aGlzLmwrPTIsdDtjYXNlIDQ6Y2FzZS00OnJldHVybiBhPT09ImkifHwhKHRoaXNbdGhpcy5sKzNdJjEyOCk/KHQ9KGU+MD9XYTp4bykodGhpcyx0aGlzLmwpLHRoaXMubCs9NCx0KToobj1Ocih0aGlzLHRoaXMubCksdGhpcy5sKz00LG4pO2Nhc2UgODpjYXNlLTg6aWYoYT09PSJmIilyZXR1cm4gZT09OD9uPXgwKHRoaXMsdGhpcy5sKTpuPXgwKFt0aGlzW3RoaXMubCs3XSx0aGlzW3RoaXMubCs2XSx0aGlzW3RoaXMubCs1XSx0aGlzW3RoaXMubCs0XSx0aGlzW3RoaXMubCszXSx0aGlzW3RoaXMubCsyXSx0aGlzW3RoaXMubCsxXSx0aGlzW3RoaXMubCswXV0sMCksdGhpcy5sKz04LG47ZT04O2Nhc2UgMTY6cj1OaSh0aGlzLHRoaXMubCxlKTticmVha319cmV0dXJuIHRoaXMubCs9ZSxyfXZhciB2bz1mdW5jdGlvbihlLGEscil7ZVtyXT1hJjI1NSxlW3IrMV09YT4+PjgmMjU1LGVbcisyXT1hPj4+MTYmMjU1LGVbciszXT1hPj4+MjQmMjU1fSxwbz1mdW5jdGlvbihlLGEscil7ZVtyXT1hJjI1NSxlW3IrMV09YT4+OCYyNTUsZVtyKzJdPWE+PjE2JjI1NSxlW3IrM109YT4+MjQmMjU1fSxnbz1mdW5jdGlvbihlLGEscil7ZVtyXT1hJjI1NSxlW3IrMV09YT4+PjgmMjU1fTtmdW5jdGlvbiBtbyhlLGEscil7dmFyIHQ9MCxuPTA7aWYocj09PSJkYmNzIil7Zm9yKG49MDtuIT1hLmxlbmd0aDsrK24pZ28odGhpcyxhLmNoYXJDb2RlQXQobiksdGhpcy5sKzIqbik7dD0yKmEubGVuZ3RofWVsc2UgaWYocj09PSJzYmNzInx8cj09ImNwc3RyIil7Zm9yKGE9YS5yZXBsYWNlKC9bXlx4MDAtXHg3Rl0vZywiXyIpLG49MDtuIT1hLmxlbmd0aDsrK24pdGhpc1t0aGlzLmwrbl09YS5jaGFyQ29kZUF0KG4pJjI1NTt0PWEubGVuZ3RofWVsc2UgaWYocj09PSJoZXgiKXtmb3IoO248ZTsrK24pdGhpc1t0aGlzLmwrK109cGFyc2VJbnQoYS5zbGljZSgyKm4sMipuKzIpLDE2KXx8MDtyZXR1cm4gdGhpc31lbHNlIGlmKHI9PT0idXRmMTZsZSIpe3ZhciBpPU1hdGgubWluKHRoaXMubCtlLHRoaXMubGVuZ3RoKTtmb3Iobj0wO248TWF0aC5taW4oYS5sZW5ndGgsZSk7KytuKXt2YXIgZj1hLmNoYXJDb2RlQXQobik7dGhpc1t0aGlzLmwrK109ZiYyNTUsdGhpc1t0aGlzLmwrK109Zj4+OH1mb3IoO3RoaXMubDxpOyl0aGlzW3RoaXMubCsrXT0wO3JldHVybiB0aGlzfWVsc2Ugc3dpdGNoKGUpe2Nhc2UgMTp0PTEsdGhpc1t0aGlzLmxdPWEmMjU1O2JyZWFrO2Nhc2UgMjp0PTIsdGhpc1t0aGlzLmxdPWEmMjU1LGE+Pj49OCx0aGlzW3RoaXMubCsxXT1hJjI1NTticmVhaztjYXNlIDM6dD0zLHRoaXNbdGhpcy5sXT1hJjI1NSxhPj4+PTgsdGhpc1t0aGlzLmwrMV09YSYyNTUsYT4+Pj04LHRoaXNbdGhpcy5sKzJdPWEmMjU1O2JyZWFrO2Nhc2UgNDp0PTQsdm8odGhpcyxhLHRoaXMubCk7YnJlYWs7Y2FzZSA4OmlmKHQ9OCxyPT09ImYiKXt1byh0aGlzLGEsdGhpcy5sKTticmVha31jYXNlIDE2OmJyZWFrO2Nhc2UtNDp0PTQscG8odGhpcyxhLHRoaXMubCk7YnJlYWt9cmV0dXJuIHRoaXMubCs9dCx0aGlzfWZ1bmN0aW9uIGppKGUsYSl7dmFyIHI9TmkodGhpcyx0aGlzLmwsZS5sZW5ndGg+PjEpO2lmKHIhPT1lKXRocm93IG5ldyBFcnJvcihhKyJFeHBlY3RlZCAiK2UrIiBzYXcgIityKTt0aGlzLmwrPWUubGVuZ3RoPj4xfWZ1bmN0aW9uIHNyKGUsYSl7ZS5sPWEsZS5yZWFkX3NoaWZ0PUR0LGUuY2hrPWppLGUud3JpdGVfc2hpZnQ9bW99ZnVuY3Rpb24geXIoZSxhKXtlLmwrPWF9ZnVuY3Rpb24gZnIoZSl7dmFyIGE9QWEoZSk7cmV0dXJuIHNyKGEsMCksYX1mdW5jdGlvbiB2YShlLGEscil7aWYoZSl7dmFyIHQsbixpO3NyKGUsZS5sfHwwKTtmb3IodmFyIGY9ZS5sZW5ndGgscz0wLGM9MDtlLmw8Zjspe3M9ZS5yZWFkX3NoaWZ0KDEpLHMmMTI4JiYocz0ocyYxMjcpKygoZS5yZWFkX3NoaWZ0KDEpJjEyNyk8PDcpKTt2YXIgbz1JMFtzXXx8STBbNjU1MzVdO2Zvcih0PWUucmVhZF9zaGlmdCgxKSxpPXQmMTI3LG49MTtuPDQmJnQmMTI4OysrbilpKz0oKHQ9ZS5yZWFkX3NoaWZ0KDEpKSYxMjcpPDw3Km47Yz1lLmwraTt2YXIgbD1vLmYmJm8uZihlLGkscik7aWYoZS5sPWMsYShsLG8scykpcmV0dXJufX19ZnVuY3Rpb24gYW4oKXt2YXIgZT1bXSxhPU5lPzE2Mzg0OjIwNDgscj1OZSYmdHlwZW9mIGZyKGEpLnN1YmFycmF5PT0iZnVuY3Rpb24iLHQ9ZnVuY3Rpb24odSl7dmFyIHg9ZnIodSk7cmV0dXJuIHNyKHgsMCkseH0sbj10KGEpLGk9ZnVuY3Rpb24oKXtuJiYobi5sJiYobi5sZW5ndGg+bi5sJiYobj1uLnNsaWNlKDAsbi5sKSxuLmw9bi5sZW5ndGgpLG4ubGVuZ3RoPjAmJmUucHVzaChuKSksbj1udWxsKX0sZj1mdW5jdGlvbih1KXtyZXR1cm4gbiYmdTxuLmxlbmd0aC1uLmw/bjooaSgpLG49dChNYXRoLm1heCh1KzEsYSkpKX0scz1mdW5jdGlvbigpe3JldHVybiBpKCkseWEoZSl9LGM9ZnVuY3Rpb24oKXtyZXR1cm4gaSgpLGV9LG89ZnVuY3Rpb24odSl7bi5sPjAmJmUucHVzaChuLnNsaWNlKDAsbi5sKSksZS5wdXNoKHUpLG49cj9uLnN1YmFycmF5KG4ubHx8MCk6bi5zbGljZShuLmx8fDApLHNyKG4sMCl9O3JldHVybntuZXh0OmYscHVzaDpvLGVuZDpzLF9idWZzOmUsZW5kMjpjfX1mdW5jdGlvbiBSdChlLGEscil7dmFyIHQ9VWUoZSk7aWYoYS5zPyh0LmNSZWwmJih0LmMrPWEucy5jKSx0LnJSZWwmJih0LnIrPWEucy5yKSk6KHQuY1JlbCYmKHQuYys9YS5jKSx0LnJSZWwmJih0LnIrPWEucikpLCFyfHxyLmJpZmY8MTIpe2Zvcig7dC5jPj0yNTY7KXQuYy09MjU2O2Zvcig7dC5yPj02NTUzNjspdC5yLT02NTUzNn1yZXR1cm4gdH1mdW5jdGlvbiBZaShlLGEscil7dmFyIHQ9VWUoZSk7cmV0dXJuIHQucz1SdCh0LnMsYS5zLHIpLHQuZT1SdCh0LmUsYS5zLHIpLHR9ZnVuY3Rpb24gT3QoZSxhKXtpZihlLmNSZWwmJmUuYzwwKWZvcihlPVVlKGUpO2UuYzwwOyllLmMrPWE+OD8xNjM4NDoyNTY7aWYoZS5yUmVsJiZlLnI8MClmb3IoZT1VZShlKTtlLnI8MDspZS5yKz1hPjg/MTA0ODU3NjphPjU/NjU1MzY6MTYzODQ7dmFyIHI9RGUoZSk7cmV0dXJuIWUuY1JlbCYmZS5jUmVsIT1udWxsJiYocj13byhyKSksIWUuclJlbCYmZS5yUmVsIT1udWxsJiYocj1fbyhyKSkscn1mdW5jdGlvbiB0bihlLGEpe3JldHVybiBlLnMucj09MCYmIWUucy5yUmVsJiZlLmUucj09KGEuYmlmZj49MTI/MTA0ODU3NTphLmJpZmY+PTg/NjU1MzY6MTYzODQpJiYhZS5lLnJSZWw/KGUucy5jUmVsPyIiOiIkIikrSGUoZS5zLmMpKyI6IisoZS5lLmNSZWw/IiI6IiQiKStIZShlLmUuYyk6ZS5zLmM9PTAmJiFlLnMuY1JlbCYmZS5lLmM9PShhLmJpZmY+PTEyPzE2MzgzOjI1NSkmJiFlLmUuY1JlbD8oZS5zLnJSZWw/IiI6IiQiKStHZShlLnMucikrIjoiKyhlLmUuclJlbD8iIjoiJCIpK0dlKGUuZS5yKTpPdChlLnMsYS5iaWZmKSsiOiIrT3QoZS5lLGEuYmlmZil9ZnVuY3Rpb24gbm4oZSl7cmV0dXJuIHBhcnNlSW50KGtvKGUpLDEwKS0xfWZ1bmN0aW9uIEdlKGUpe3JldHVybiIiKyhlKzEpfWZ1bmN0aW9uIF9vKGUpe3JldHVybiBlLnJlcGxhY2UoLyhbQS1aXXxeKShcZCspJC8sIiQxJCQkMiIpfWZ1bmN0aW9uIGtvKGUpe3JldHVybiBlLnJlcGxhY2UoL1wkKFxkKykkLywiJDEiKX1mdW5jdGlvbiBzbihlKXtmb3IodmFyIGE9Rm8oZSkscj0wLHQ9MDt0IT09YS5sZW5ndGg7Kyt0KXI9MjYqcithLmNoYXJDb2RlQXQodCktNjQ7cmV0dXJuIHItMX1mdW5jdGlvbiBIZShlKXtpZihlPDApdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNvbHVtbiAiK2UpO3ZhciBhPSIiO2ZvcigrK2U7ZTtlPU1hdGguZmxvb3IoKGUtMSkvMjYpKWE9U3RyaW5nLmZyb21DaGFyQ29kZSgoZS0xKSUyNis2NSkrYTtyZXR1cm4gYX1mdW5jdGlvbiB3byhlKXtyZXR1cm4gZS5yZXBsYWNlKC9eKFtBLVpdKS8sIiQkJDEiKX1mdW5jdGlvbiBGbyhlKXtyZXR1cm4gZS5yZXBsYWNlKC9eXCQoW0EtWl0pLywiJDEiKX1mdW5jdGlvbiBUbyhlKXtyZXR1cm4gZS5yZXBsYWNlKC8oXCQ/W0EtWl0qKShcJD9cZCopLywiJDEsJDIiKS5zcGxpdCgiLCIpfWZ1bmN0aW9uIGdyKGUpe2Zvcih2YXIgYT0wLHI9MCx0PTA7dDxlLmxlbmd0aDsrK3Qpe3ZhciBuPWUuY2hhckNvZGVBdCh0KTtuPj00OCYmbjw9NTc/YT0xMCphKyhuLTQ4KTpuPj02NSYmbjw9OTAmJihyPTI2KnIrKG4tNjQpKX1yZXR1cm57YzpyLTEscjphLTF9fWZ1bmN0aW9uIERlKGUpe2Zvcih2YXIgYT1lLmMrMSxyPSIiO2E7YT0oYS0xKS8yNnwwKXI9U3RyaW5nLmZyb21DaGFyQ29kZSgoYS0xKSUyNis2NSkrcjtyZXR1cm4gcisoZS5yKzEpfWZ1bmN0aW9uIHBhKGUpe3ZhciBhPWUuaW5kZXhPZigiOiIpO3JldHVybiBhPT0tMT97czpncihlKSxlOmdyKGUpfTp7czpncihlLnNsaWNlKDAsYSkpLGU6Z3IoZS5zbGljZShhKzEpKX19ZnVuY3Rpb24gSWUoZSxhKXtyZXR1cm4gdHlwZW9mIGE+InUifHx0eXBlb2YgYT09Im51bWJlciI/SWUoZS5zLGUuZSk6KHR5cGVvZiBlIT0ic3RyaW5nIiYmKGU9RGUoZSkpLHR5cGVvZiBhIT0ic3RyaW5nIiYmKGE9RGUoYSkpLGU9PWE/ZTplKyI6IithKX1mdW5jdGlvbiBFbyhlLGEpe2lmKCFlJiYhKGEmJmEuYmlmZjw9NSYmYS5iaWZmPj0yKSl0aHJvdyBuZXcgRXJyb3IoImVtcHR5IHNoZWV0IG5hbWUiKTtyZXR1cm4vW15cd1x1NEUwMC1cdTlGRkZcdTMwNDAtXHUzMEZGXS8udGVzdChlKT8iJyIrZS5yZXBsYWNlKC8nL2csIicnIikrIiciOmV9ZnVuY3Rpb24gWmUoZSl7dmFyIGE9e3M6e2M6MCxyOjB9LGU6e2M6MCxyOjB9fSxyPTAsdD0wLG49MCxpPWUubGVuZ3RoO2ZvcihyPTA7dDxpJiYhKChuPWUuY2hhckNvZGVBdCh0KS02NCk8MXx8bj4yNik7Kyt0KXI9MjYqcituO2ZvcihhLnMuYz0tLXIscj0wO3Q8aSYmISgobj1lLmNoYXJDb2RlQXQodCktNDgpPDB8fG4+OSk7Kyt0KXI9MTAqcituO2lmKGEucy5yPS0tcix0PT09aXx8biE9MTApcmV0dXJuIGEuZS5jPWEucy5jLGEuZS5yPWEucy5yLGE7Zm9yKCsrdCxyPTA7dCE9aSYmISgobj1lLmNoYXJDb2RlQXQodCktNjQpPDF8fG4+MjYpOysrdClyPTI2KnIrbjtmb3IoYS5lLmM9LS1yLHI9MDt0IT1pJiYhKChuPWUuY2hhckNvZGVBdCh0KS00OCk8MHx8bj45KTsrK3Qpcj0xMCpyK247cmV0dXJuIGEuZS5yPS0tcixhfWZ1bmN0aW9uIEppKGUsYSl7dmFyIHI9ZS50PT0iZCImJmEgaW5zdGFuY2VvZiBEYXRlO2lmKGUueiE9bnVsbCl0cnl7cmV0dXJuIGUudz1ScihlLnoscj9vcihhKTphKX1jYXRjaHt9dHJ5e3JldHVybiBlLnc9UnIoKGUuWEZ8fHt9KS5udW1GbXRJZHx8KHI/MTQ6MCkscj9vcihhKTphKX1jYXRjaHtyZXR1cm4iIithfX1mdW5jdGlvbiBnYShlLGEscil7cmV0dXJuIGU9PW51bGx8fGUudD09bnVsbHx8ZS50PT0ieiI/IiI6ZS53IT09dm9pZCAwP2UudzooZS50PT0iZCImJiFlLnomJnImJnIuZGF0ZU5GJiYoZS56PXIuZGF0ZU5GKSxlLnQ9PSJlIj9icltlLnZdfHxlLnY6YT09bnVsbD9KaShlLGUudik6SmkoZSxhKSl9ZnVuY3Rpb24gQ2EoZSxhKXt2YXIgcj1hJiZhLnNoZWV0P2Euc2hlZXQ6IlNoZWV0MSIsdD17fTtyZXR1cm4gdFtyXT1lLHtTaGVldE5hbWVzOltyXSxTaGVldHM6dH19ZnVuY3Rpb24gQW8oZSl7dmFyIGE9e30scj1lfHx7fTtyZXR1cm4gci5kZW5zZSYmKGFbIiFkYXRhIl09W10pLGF9ZnVuY3Rpb24gWmkoZSxhLHIpe3ZhciB0PXJ8fHt9LG49ZT9lWyIhZGF0YSJdIT1udWxsOnQuZGVuc2UsaT1lfHwobj97IiFkYXRhIjpbXX06e30pO24mJiFpWyIhZGF0YSJdJiYoaVsiIWRhdGEiXT1bXSk7dmFyIGY9MCxzPTA7aWYoaSYmdC5vcmlnaW4hPW51bGwpaWYodHlwZW9mIHQub3JpZ2luPT0ibnVtYmVyIilmPXQub3JpZ2luO2Vsc2V7dmFyIGM9dHlwZW9mIHQub3JpZ2luPT0ic3RyaW5nIj9ncih0Lm9yaWdpbik6dC5vcmlnaW47Zj1jLnIscz1jLmN9dmFyIG89e3M6e2M6MWU3LHI6MWU3fSxlOntjOjAscjowfX07aWYoaVsiIXJlZiJdKXt2YXIgbD1aZShpWyIhcmVmIl0pO28ucy5jPWwucy5jLG8ucy5yPWwucy5yLG8uZS5jPU1hdGgubWF4KG8uZS5jLGwuZS5jKSxvLmUucj1NYXRoLm1heChvLmUucixsLmUuciksZj09LTEmJihvLmUucj1mPWlbIiFyZWYiXT9sLmUucisxOjApfWVsc2Ugby5zLmM9by5lLmM9by5zLnI9by5lLnI9MDtmb3IodmFyIHU9W10seD0hMSxoPTA7aCE9YS5sZW5ndGg7KytoKWlmKGFbaF0pe2lmKCFBcnJheS5pc0FycmF5KGFbaF0pKXRocm93IG5ldyBFcnJvcigiYW9hX3RvX3NoZWV0IGV4cGVjdHMgYW4gYXJyYXkgb2YgYXJyYXlzIik7dmFyIGc9ZitoO24mJihpWyIhZGF0YSJdW2ddfHwoaVsiIWRhdGEiXVtnXT1bXSksdT1pWyIhZGF0YSJdW2ddKTtmb3IodmFyIG09YVtoXSxkPTA7ZCE9bS5sZW5ndGg7KytkKWlmKCEodHlwZW9mIG1bZF0+InUiKSl7dmFyIHA9e3Y6bVtkXSx0OiIifSx3PXMrZDtpZihvLnMucj5nJiYoby5zLnI9Zyksby5zLmM+dyYmKG8ucy5jPXcpLG8uZS5yPGcmJihvLmUucj1nKSxvLmUuYzx3JiYoby5lLmM9dykseD0hMCxtW2RdJiZ0eXBlb2YgbVtkXT09Im9iamVjdCImJiFBcnJheS5pc0FycmF5KG1bZF0pJiYhKG1bZF1pbnN0YW5jZW9mIERhdGUpKXA9bVtkXTtlbHNlIGlmKEFycmF5LmlzQXJyYXkocC52KSYmKHAuZj1tW2RdWzFdLHAudj1wLnZbMF0pLHAudj09PW51bGwpaWYocC5mKXAudD0ibiI7ZWxzZSBpZih0Lm51bGxFcnJvcilwLnQ9ImUiLHAudj0wO2Vsc2UgaWYodC5zaGVldFN0dWJzKXAudD0ieiI7ZWxzZSBjb250aW51ZTtlbHNlIHR5cGVvZiBwLnY9PSJudW1iZXIiP2lzRmluaXRlKHAudik/cC50PSJuIjppc05hTihwLnYpPyhwLnQ9ImUiLHAudj0xNSk6KHAudD0iZSIscC52PTcpOnR5cGVvZiBwLnY9PSJib29sZWFuIj9wLnQ9ImIiOnAudiBpbnN0YW5jZW9mIERhdGU/KHAuej10LmRhdGVORnx8VGVbMTRdLHQuVVRDfHwocC52PW8wKHAudikpLHQuY2VsbERhdGVzPyhwLnQ9ImQiLHAudz1ScihwLnosb3IocC52LHQuZGF0ZTE5MDQpKSk6KHAudD0ibiIscC52PW9yKHAudix0LmRhdGUxOTA0KSxwLnc9UnIocC56LHAudikpKTpwLnQ9InMiO2lmKG4pdVt3XSYmdVt3XS56JiYocC56PXVbd10ueiksdVt3XT1wO2Vsc2V7dmFyIF89SGUodykrKGcrMSk7aVtfXSYmaVtfXS56JiYocC56PWlbX10ueiksaVtfXT1wfX19cmV0dXJuIHgmJm8ucy5jPDEwNGU1JiYoaVsiIXJlZiJdPUllKG8pKSxpfWZ1bmN0aW9uIGN0KGUsYSl7cmV0dXJuIFppKG51bGwsZSxhKX1mdW5jdGlvbiB5byhlKXtyZXR1cm4gZS5yZWFkX3NoaWZ0KDQsImkiKX1mdW5jdGlvbiBtcihlKXt2YXIgYT1lLnJlYWRfc2hpZnQoNCk7cmV0dXJuIGE9PT0wPyIiOmUucmVhZF9zaGlmdChhLCJkYmNzIil9ZnVuY3Rpb24gU28oZSl7cmV0dXJue2ljaDplLnJlYWRfc2hpZnQoMiksaWZudDplLnJlYWRfc2hpZnQoMil9fWZ1bmN0aW9uIGZuKGUsYSl7dmFyIHI9ZS5sLHQ9ZS5yZWFkX3NoaWZ0KDEpLG49bXIoZSksaT1bXSxmPXt0Om4saDpufTtpZih0JjEpe2Zvcih2YXIgcz1lLnJlYWRfc2hpZnQoNCksYz0wO2MhPXM7KytjKWkucHVzaChTbyhlKSk7Zi5yPWl9ZWxzZSBmLnI9W3tpY2g6MCxpZm50OjB9XTtyZXR1cm4gZS5sPXIrYSxmfXZhciBDbz1mbjtmdW5jdGlvbiBYcihlKXt2YXIgYT1lLnJlYWRfc2hpZnQoNCkscj1lLnJlYWRfc2hpZnQoMik7cmV0dXJuIHIrPWUucmVhZF9zaGlmdCgxKTw8MTYsZS5sKysse2M6YSxpU3R5bGVSZWY6cn19ZnVuY3Rpb24gVmEoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpO3JldHVybiBhKz1lLnJlYWRfc2hpZnQoMSk8PDE2LGUubCsrLHtjOi0xLGlTdHlsZVJlZjphfX12YXIgYm89bXI7ZnVuY3Rpb24gZDAoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDQpO3JldHVybiBhPT09MHx8YT09PTQyOTQ5NjcyOTU/IiI6ZS5yZWFkX3NoaWZ0KGEsImRiY3MiKX12YXIgSW89bXIsY249ZDA7ZnVuY3Rpb24gdjAoZSl7dmFyIGE9ZS5zbGljZShlLmwsZS5sKzQpLHI9YVswXSYxLHQ9YVswXSYyO2UubCs9NDt2YXIgbj10PT09MD94MChbMCwwLDAsMCxhWzBdJjI1MixhWzFdLGFbMl0sYVszXV0sMCk6V2EoYSwwKT4+MjtyZXR1cm4gcj9uLzEwMDpufWZ1bmN0aW9uIHFpKGUpe3ZhciBhPXtzOnt9LGU6e319O3JldHVybiBhLnMucj1lLnJlYWRfc2hpZnQoNCksYS5lLnI9ZS5yZWFkX3NoaWZ0KDQpLGEucy5jPWUucmVhZF9zaGlmdCg0KSxhLmUuYz1lLnJlYWRfc2hpZnQoNCksYX12YXIgR2E9cWk7ZnVuY3Rpb24gX3IoZSl7aWYoZS5sZW5ndGgtZS5sPDgpdGhyb3ciWExTIFhudW0gQnVmZmVyIHVuZGVyZmxvdyI7cmV0dXJuIGUucmVhZF9zaGlmdCg4LCJmIil9ZnVuY3Rpb24gRG8oZSl7dmFyIGE9e30scj1lLnJlYWRfc2hpZnQoMSksdD1yPj4+MSxuPWUucmVhZF9zaGlmdCgxKSxpPWUucmVhZF9zaGlmdCgyLCJpIiksZj1lLnJlYWRfc2hpZnQoMSkscz1lLnJlYWRfc2hpZnQoMSksYz1lLnJlYWRfc2hpZnQoMSk7c3dpdGNoKGUubCsrLHQpe2Nhc2UgMDphLmF1dG89MTticmVhaztjYXNlIDE6YS5pbmRleD1uO3ZhciBvPXRhW25dO28mJihhLnJnYj1qYShvKSk7YnJlYWs7Y2FzZSAyOmEucmdiPWphKFtmLHMsY10pO2JyZWFrO2Nhc2UgMzphLnRoZW1lPW47YnJlYWt9cmV0dXJuIGkhPTAmJihhLnRpbnQ9aT4wP2kvMzI3Njc6aS8zMjc2OCksYX1mdW5jdGlvbiBSbyhlKXt2YXIgYT1lLnJlYWRfc2hpZnQoMSk7ZS5sKys7dmFyIHI9e2ZCb2xkOmEmMSxmSXRhbGljOmEmMixmVW5kZXJsaW5lOmEmNCxmU3RyaWtlb3V0OmEmOCxmT3V0bGluZTphJjE2LGZTaGFkb3c6YSYzMixmQ29uZGVuc2U6YSY2NCxmRXh0ZW5kOmEmMTI4fTtyZXR1cm4gcn1mdW5jdGlvbiBRaShlLGEpe3ZhciByPXsyOiJCSVRNQVAiLDM6Ik1FVEFGSUxFUElDVCIsODoiRElCIiwxNDoiRU5ITUVUQUZJTEUifSx0PWUucmVhZF9zaGlmdCg0KTtzd2l0Y2godCl7Y2FzZSAwOnJldHVybiIiO2Nhc2UgNDI5NDk2NzI5NTpjYXNlIDQyOTQ5NjcyOTQ6cmV0dXJuIHJbZS5yZWFkX3NoaWZ0KDQpXXx8IiJ9aWYodD40MDApdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBDbGlwYm9hcmQ6ICIrdC50b1N0cmluZygxNikpO3JldHVybiBlLmwtPTQsZS5yZWFkX3NoaWZ0KDAsYT09MT8ibHBzdHIiOiJscHdzdHIiKX1mdW5jdGlvbiBPbyhlKXtyZXR1cm4gUWkoZSwxKX1mdW5jdGlvbiBObyhlKXtyZXR1cm4gUWkoZSwyKX12YXIgb249MixDcj0zLHAwPTExLGVzPTEyLGcwPTE5LG0wPTY0LE1vPTY1LFBvPTcxLExvPTQxMDgsQm89NDEyNix1cj04MCxycz04MSxVbz1bdXIscnNdLEhvPXsxOntuOiJDb2RlUGFnZSIsdDpvbn0sMjp7bjoiQ2F0ZWdvcnkiLHQ6dXJ9LDM6e246IlByZXNlbnRhdGlvbkZvcm1hdCIsdDp1cn0sNDp7bjoiQnl0ZUNvdW50Iix0OkNyfSw1OntuOiJMaW5lQ291bnQiLHQ6Q3J9LDY6e246IlBhcmFncmFwaENvdW50Iix0OkNyfSw3OntuOiJTbGlkZUNvdW50Iix0OkNyfSw4OntuOiJOb3RlQ291bnQiLHQ6Q3J9LDk6e246IkhpZGRlbkNvdW50Iix0OkNyfSwxMDp7bjoiTXVsdGltZWRpYUNsaXBDb3VudCIsdDpDcn0sMTE6e246IlNjYWxlQ3JvcCIsdDpwMH0sMTI6e246IkhlYWRpbmdQYWlycyIsdDpMb30sMTM6e246IlRpdGxlc09mUGFydHMiLHQ6Qm99LDE0OntuOiJNYW5hZ2VyIix0OnVyfSwxNTp7bjoiQ29tcGFueSIsdDp1cn0sMTY6e246IkxpbmtzVXBUb0RhdGUiLHQ6cDB9LDE3OntuOiJDaGFyYWN0ZXJDb3VudCIsdDpDcn0sMTk6e246IlNoYXJlZERvYyIsdDpwMH0sMjI6e246Ikh5cGVybGlua3NDaGFuZ2VkIix0OnAwfSwyMzp7bjoiQXBwVmVyc2lvbiIsdDpDcixwOiJ2ZXJzaW9uIn0sMjQ6e246IkRpZ1NpZyIsdDpNb30sMjY6e246IkNvbnRlbnRUeXBlIix0OnVyfSwyNzp7bjoiQ29udGVudFN0YXR1cyIsdDp1cn0sMjg6e246Ikxhbmd1YWdlIix0OnVyfSwyOTp7bjoiVmVyc2lvbiIsdDp1cn0sMjU1Ont9LDIxNDc0ODM2NDg6e246IkxvY2FsZSIsdDpnMH0sMjE0NzQ4MzY1MTp7bjoiQmVoYXZpb3IiLHQ6ZzB9LDE5MTkwNTQ0MzQ6e319LFdvPXsxOntuOiJDb2RlUGFnZSIsdDpvbn0sMjp7bjoiVGl0bGUiLHQ6dXJ9LDM6e246IlN1YmplY3QiLHQ6dXJ9LDQ6e246IkF1dGhvciIsdDp1cn0sNTp7bjoiS2V5d29yZHMiLHQ6dXJ9LDY6e246IkNvbW1lbnRzIix0OnVyfSw3OntuOiJUZW1wbGF0ZSIsdDp1cn0sODp7bjoiTGFzdEF1dGhvciIsdDp1cn0sOTp7bjoiUmV2TnVtYmVyIix0OnVyfSwxMDp7bjoiRWRpdFRpbWUiLHQ6bTB9LDExOntuOiJMYXN0UHJpbnRlZCIsdDptMH0sMTI6e246IkNyZWF0ZWREYXRlIix0Om0wfSwxMzp7bjoiTW9kaWZpZWREYXRlIix0Om0wfSwxNDp7bjoiUGFnZUNvdW50Iix0OkNyfSwxNTp7bjoiV29yZENvdW50Iix0OkNyfSwxNjp7bjoiQ2hhckNvdW50Iix0OkNyfSwxNzp7bjoiVGh1bWJuYWlsIix0OlBvfSwxODp7bjoiQXBwbGljYXRpb24iLHQ6dXJ9LDE5OntuOiJEb2NTZWN1cml0eSIsdDpDcn0sMjU1Ont9LDIxNDc0ODM2NDg6e246IkxvY2FsZSIsdDpnMH0sMjE0NzQ4MzY1MTp7bjoiQmVoYXZpb3IiLHQ6ZzB9LDE5MTkwNTQ0MzQ6e319LGFzPXsxOiJVUyIsMjoiQ0EiLDM6IiIsNzoiUlUiLDIwOiJFRyIsMzA6IkdSIiwzMToiTkwiLDMyOiJCRSIsMzM6IkZSIiwzNDoiRVMiLDM2OiJIVSIsMzk6IklUIiw0MToiQ0giLDQzOiJBVCIsNDQ6IkdCIiw0NToiREsiLDQ2OiJTRSIsNDc6Ik5PIiw0ODoiUEwiLDQ5OiJERSIsNTI6Ik1YIiw1NToiQlIiLDYxOiJBVSIsNjQ6Ik5aIiw2NjoiVEgiLDgxOiJKUCIsODI6IktSIiw4NDoiVk4iLDg2OiJDTiIsOTA6IlRSIiwxMDU6IkpTIiwyMTM6IkRaIiwyMTY6Ik1BIiwyMTg6IkxZIiwzNTE6IlBUIiwzNTQ6IklTIiwzNTg6IkZJIiw0MjA6IkNaIiw4ODY6IlRXIiw5NjE6IkxCIiw5NjI6IkpPIiw5NjM6IlNZIiw5NjQ6IklRIiw5NjU6IktXIiw5NjY6IlNBIiw5NzE6IkFFIiw5NzI6IklMIiw5NzQ6IlFBIiw5ODE6IklSIiw2NTUzNToiVVMifSxWbz1bbnVsbCwic29saWQiLCJtZWRpdW1HcmF5IiwiZGFya0dyYXkiLCJsaWdodEdyYXkiLCJkYXJrSG9yaXpvbnRhbCIsImRhcmtWZXJ0aWNhbCIsImRhcmtEb3duIiwiZGFya1VwIiwiZGFya0dyaWQiLCJkYXJrVHJlbGxpcyIsImxpZ2h0SG9yaXpvbnRhbCIsImxpZ2h0VmVydGljYWwiLCJsaWdodERvd24iLCJsaWdodFVwIiwibGlnaHRHcmlkIiwibGlnaHRUcmVsbGlzIiwiZ3JheTEyNSIsImdyYXkwNjI1Il07ZnVuY3Rpb24gR28oZSl7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGEpe3JldHVyblthPj4xNiYyNTUsYT4+OCYyNTUsYSYyNTVdfSl9dmFyIFhvPUdvKFswLDE2Nzc3MjE1LDE2NzExNjgwLDY1MjgwLDI1NSwxNjc3Njk2MCwxNjcxMTkzNSw2NTUzNSwwLDE2Nzc3MjE1LDE2NzExNjgwLDY1MjgwLDI1NSwxNjc3Njk2MCwxNjcxMTkzNSw2NTUzNSw4Mzg4NjA4LDMyNzY4LDEyOCw4NDIxMzc2LDgzODg3MzYsMzI4OTYsMTI2MzIyNTYsODQyMTUwNCwxMDA2NjQzMSwxMDA0MDE2NiwxNjc3NzE2NCwxMzQzNDg3OSw2Njg0Nzc0LDE2NzQ0NTc2LDI2MzE2LDEzNDIxODIzLDEyOCwxNjcxMTkzNSwxNjc3Njk2MCw2NTUzNSw4Mzg4NzM2LDgzODg2MDgsMzI4OTYsMjU1LDUyNDc5LDEzNDM0ODc5LDEzNDM0ODI4LDE2Nzc3MTEzLDEwMDc5NDg3LDE2NzUxMDUyLDEzNDA4NzY3LDE2NzY0MDU3LDMzNjg3MDMsMzM5NDc2NCwxMDA3OTIzMiwxNjc2MzkwNCwxNjc1MDg0OCwxNjczNzc5Miw2NzEwOTM3LDk4Njg5NTAsMTMxNTgsMzM4MTYwNiwxMzA1NiwzMzU1MzkyLDEwMDQwMDY0LDEwMDQwMTY2LDMzNTU1NDUsMzM1NTQ0MywwLDE2Nzc3MjE1LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdKSx0YT1VZShYbyksYnI9ezA6IiNOVUxMISIsNzoiI0RJVi8wISIsMTU6IiNWQUxVRSEiLDIzOiIjUkVGISIsMjk6IiNOQU1FPyIsMzY6IiNOVU0hIiw0MjoiI04vQSIsNDM6IiNHRVRUSU5HX0RBVEEiLDI1NToiI1dURj8ifSxkcj17IiNOVUxMISI6MCwiI0RJVi8wISI6NywiI1ZBTFVFISI6MTUsIiNSRUYhIjoyMywiI05BTUU/IjoyOSwiI05VTSEiOjM2LCIjTi9BIjo0MiwiI0dFVFRJTkdfREFUQSI6NDMsIiNXVEY/IjoyNTV9LHRzPVsiX3hsbm0uQ29uc29saWRhdGVfQXJlYSIsIl94bG5tLkF1dG9fT3BlbiIsIl94bG5tLkF1dG9fQ2xvc2UiLCJfeGxubS5FeHRyYWN0IiwiX3hsbm0uRGF0YWJhc2UiLCJfeGxubS5Dcml0ZXJpYSIsIl94bG5tLlByaW50X0FyZWEiLCJfeGxubS5QcmludF9UaXRsZXMiLCJfeGxubS5SZWNvcmRlciIsIl94bG5tLkRhdGFfRm9ybSIsIl94bG5tLkF1dG9fQWN0aXZhdGUiLCJfeGxubS5BdXRvX0RlYWN0aXZhdGUiLCJfeGxubS5TaGVldF9UaXRsZSIsIl94bG5tLl9GaWx0ZXJEYXRhYmFzZSJdLG5zPXsiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQubWFpbit4bWwiOiJ3b3JrYm9va3MiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQubWFjcm9FbmFibGVkLm1haW4reG1sIjoid29ya2Jvb2tzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0LmJpbmFyeS5tYWNyb0VuYWJsZWQubWFpbiI6Indvcmtib29rcyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5hZGRpbi5tYWNyb0VuYWJsZWQubWFpbit4bWwiOiJ3b3JrYm9va3MiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50ZW1wbGF0ZS5tYWluK3htbCI6Indvcmtib29rcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLndvcmtzaGVldCt4bWwiOiJzaGVldHMiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwud29ya3NoZWV0Ijoic2hlZXRzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmJpbkluZGV4V3MiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY2hhcnRzaGVldCt4bWwiOiJjaGFydHMiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY2hhcnRzaGVldCI6ImNoYXJ0cyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5tYWNyb3NoZWV0K3htbCI6Im1hY3JvcyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5tYWNyb3NoZWV0IjoibWFjcm9zIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmludGxtYWNyb3NoZWV0IjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5iaW5JbmRleE1zIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmRpYWxvZ3NoZWV0K3htbCI6ImRpYWxvZ3MiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuZGlhbG9nc2hlZXQiOiJkaWFsb2dzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hhcmVkU3RyaW5ncyt4bWwiOiJzdHJzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoYXJlZFN0cmluZ3MiOiJzdHJzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc3R5bGVzK3htbCI6InN0eWxlcyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zdHlsZXMiOiJzdHlsZXMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5jb3JlLXByb3BlcnRpZXMreG1sIjoiY29yZXByb3BzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmN1c3RvbS1wcm9wZXJ0aWVzK3htbCI6ImN1c3Rwcm9wcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5leHRlbmRlZC1wcm9wZXJ0aWVzK3htbCI6ImV4dHByb3BzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmN1c3RvbVhtbFByb3BlcnRpZXMreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmN1c3RvbVByb3BlcnR5IjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNvbW1lbnRzK3htbCI6ImNvbW1lbnRzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNvbW1lbnRzIjoiY29tbWVudHMiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudGhyZWFkZWRjb21tZW50cyt4bWwiOiJ0aHJlYWRlZGNvbW1lbnRzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnBlcnNvbit4bWwiOiJwZW9wbGUiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldE1ldGFkYXRhK3htbCI6Im1ldGFkYXRhIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0TWV0YWRhdGEiOiJtZXRhZGF0YSIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5waXZvdFRhYmxlIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnBpdm90VGFibGUreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuY2hhcnQreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UuY2hhcnRjb2xvcnN0eWxlK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmNoYXJ0c3R5bGUreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UuY2hhcnRleCt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNhbGNDaGFpbiI6ImNhbGNjaGFpbnMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jYWxjQ2hhaW4reG1sIjoiY2FsY2NoYWlucyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnByaW50ZXJTZXR0aW5ncyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmFjdGl2ZVgiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS5hY3RpdmVYK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuYXR0YWNoZWRUb29sYmFycyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY29ubmVjdGlvbnMiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY29ubmVjdGlvbnMreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5leHRlcm5hbExpbmsiOiJsaW5rcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmV4dGVybmFsTGluayt4bWwiOiJsaW5rcyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5waXZvdENhY2hlRGVmaW5pdGlvbiI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucGl2b3RDYWNoZVJlY29yZHMiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucGl2b3RDYWNoZURlZmluaXRpb24reG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnBpdm90Q2FjaGVSZWNvcmRzK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucXVlcnlUYWJsZSI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5xdWVyeVRhYmxlK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudXNlck5hbWVzIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5yZXZpc2lvbkhlYWRlcnMiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnJldmlzaW9uTG9nIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnJldmlzaW9uSGVhZGVycyt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucmV2aXNpb25Mb2creG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnVzZXJOYW1lcyt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnRhYmxlU2luZ2xlQ2VsbHMiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGFibGVTaW5nbGVDZWxscyt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNsaWNlciI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2xpY2VyQ2FjaGUiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNsaWNlcit4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNsaWNlckNhY2hlK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwud3NTb3J0TWFwIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC50YWJsZSI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50YWJsZSt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnRoZW1lK3htbCI6InRoZW1lcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC50aGVtZU92ZXJyaWRlK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuVGltZWxpbmUreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5UaW1lbGluZUNhY2hlK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLnZiYVByb2plY3QiOiJ2YmEiLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLnZiYVByb2plY3RTaWduYXR1cmUiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS52b2xhdGlsZURlcGVuZGVuY2llcyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC52b2xhdGlsZURlcGVuZGVuY2llcyt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNvbnRyb2xwcm9wZXJ0aWVzK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQubW9kZWwrZGF0YSI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuU3VydmV5K3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZyt4bWwiOiJkcmF3aW5ncyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuY2hhcnRzaGFwZXMreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbUNvbG9ycyt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFncmFtRGF0YSt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFncmFtTGF5b3V0K3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1TdHlsZSt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnZtbERyYXdpbmciOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLXBhY2thZ2UucmVsYXRpb25zaGlwcyt4bWwiOiJyZWxzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50Lm9sZU9iamVjdCI6IlRPRE8iLCJpbWFnZS9wbmciOiJUT0RPIixzaGVldDoianMifTtmdW5jdGlvbiB6bygpe3JldHVybnt3b3JrYm9va3M6W10sc2hlZXRzOltdLGNoYXJ0czpbXSxkaWFsb2dzOltdLG1hY3JvczpbXSxyZWxzOltdLHN0cnM6W10sY29tbWVudHM6W10sdGhyZWFkZWRjb21tZW50czpbXSxsaW5rczpbXSxjb3JlcHJvcHM6W10sZXh0cHJvcHM6W10sY3VzdHByb3BzOltdLHRoZW1lczpbXSxzdHlsZXM6W10sY2FsY2NoYWluczpbXSx2YmE6W10sZHJhd2luZ3M6W10sbWV0YWRhdGE6W10scGVvcGxlOltdLFRPRE86W10seG1sbnM6IiJ9fWZ1bmN0aW9uICRvKGUpe3ZhciBhPXpvKCk7aWYoIWV8fCFlLm1hdGNoKXJldHVybiBhO3ZhciByPXt9O2lmKChlLm1hdGNoKG5yKXx8W10pLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIG49b2UodCk7c3dpdGNoKG5bMF0ucmVwbGFjZShxYywiPCIpKXtjYXNlIjw/eG1sIjpicmVhaztjYXNlIjxUeXBlcyI6YS54bWxucz1uWyJ4bWxucyIrKG5bMF0ubWF0Y2goLzwoXHcrKTovKXx8WyIiLCIiXSlbMV1dO2JyZWFrO2Nhc2UiPERlZmF1bHQiOnJbbi5FeHRlbnNpb24udG9Mb3dlckNhc2UoKV09bi5Db250ZW50VHlwZTticmVhaztjYXNlIjxPdmVycmlkZSI6YVtuc1tuLkNvbnRlbnRUeXBlXV0hPT12b2lkIDAmJmFbbnNbbi5Db250ZW50VHlwZV1dLnB1c2gobi5QYXJ0TmFtZSk7YnJlYWt9fSksYS54bWxucyE9PWNvLkNUKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBOYW1lc3BhY2U6ICIrYS54bWxucyk7cmV0dXJuIGEuY2FsY2NoYWluPWEuY2FsY2NoYWlucy5sZW5ndGg+MD9hLmNhbGNjaGFpbnNbMF06IiIsYS5zc3Q9YS5zdHJzLmxlbmd0aD4wP2Euc3Ryc1swXToiIixhLnN0eWxlPWEuc3R5bGVzLmxlbmd0aD4wP2Euc3R5bGVzWzBdOiIiLGEuZGVmYXVsdHM9cixkZWxldGUgYS5jYWxjY2hhaW5zLGF9dmFyIG90PXtXQjoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9vZmZpY2VEb2N1bWVudCIsU0hFRVQ6Imh0dHA6Ly9zaGVldGpzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvb2ZmaWNlRG9jdW1lbnQiLEhMSU5LOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2h5cGVybGluayIsVk1MOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3ZtbERyYXdpbmciLFhQQVRIOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2V4dGVybmFsTGlua1BhdGgiLFhNSVNTOiJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA2L3JlbGF0aW9uc2hpcHMveGxFeHRlcm5hbExpbmtQYXRoL3hsUGF0aE1pc3NpbmciLFhMSU5LOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2V4dGVybmFsTGluayIsQ1hNTDoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jdXN0b21YbWwiLENYTUxQOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2N1c3RvbVhtbFByb3BzIixDTU5UOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2NvbW1lbnRzIixDT1JFX1BST1BTOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMvbWV0YWRhdGEvY29yZS1wcm9wZXJ0aWVzIixFWFRfUFJPUFM6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvZXh0ZW5kZWQtcHJvcGVydGllcyIsQ1VTVF9QUk9QUzoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jdXN0b20tcHJvcGVydGllcyIsU1NUOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3NoYXJlZFN0cmluZ3MiLFNUWToiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9zdHlsZXMiLFRIRU1FOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3RoZW1lIixDSEFSVDoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jaGFydCIsQ0hBUlRFWDoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAxNC9yZWxhdGlvbnNoaXBzL2NoYXJ0RXgiLENTOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2NoYXJ0c2hlZXQiLFdTOlsiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy93b3Jrc2hlZXQiLCJodHRwOi8vcHVybC5vY2xjLm9yZy9vb3htbC9vZmZpY2VEb2N1bWVudC9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldCJdLERTOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2RpYWxvZ3NoZWV0IixNUzoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAwNi9yZWxhdGlvbnNoaXBzL3hsTWFjcm9zaGVldCIsSU1HOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2ltYWdlIixEUkFXOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2RyYXdpbmciLFhMTUVUQToiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9zaGVldE1ldGFkYXRhIixUQ01OVDoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAxNy8xMC9yZWxhdGlvbnNoaXBzL3RocmVhZGVkQ29tbWVudCIsUEVPUExFOiJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDE3LzEwL3JlbGF0aW9uc2hpcHMvcGVyc29uIixDT05OOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2Nvbm5lY3Rpb25zIixWQkE6Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMDYvcmVsYXRpb25zaGlwcy92YmFQcm9qZWN0In07ZnVuY3Rpb24gTnQoZSl7dmFyIGE9ZS5sYXN0SW5kZXhPZigiLyIpO3JldHVybiBlLnNsaWNlKDAsYSsxKSsiX3JlbHMvIitlLnNsaWNlKGErMSkrIi5yZWxzIn1mdW5jdGlvbiBYYShlLGEpe3ZhciByPXsiIWlkIjp7fX07aWYoIWUpcmV0dXJuIHI7YS5jaGFyQXQoMCkhPT0iLyImJihhPSIvIithKTt2YXIgdD17fTtyZXR1cm4oZS5tYXRjaChucil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3ZhciBpPW9lKG4pO2lmKGlbMF09PT0iPFJlbGF0aW9uc2hpcCIpe3ZhciBmPXt9O2YuVHlwZT1pLlR5cGUsZi5UYXJnZXQ9Q2UoaS5UYXJnZXQpLGYuSWQ9aS5JZCxpLlRhcmdldE1vZGUmJihmLlRhcmdldE1vZGU9aS5UYXJnZXRNb2RlKTt2YXIgcz1pLlRhcmdldE1vZGU9PT0iRXh0ZXJuYWwiP2kuVGFyZ2V0OmhhKGkuVGFyZ2V0LGEpO3Jbc109Zix0W2kuSWRdPWZ9fSksclsiIWlkIl09dCxyfXZhciBLbz0iYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldCI7ZnVuY3Rpb24gam8oZSxhKXtmb3IodmFyIHI9aDAoZSksdCxuO3Q9aXIuZXhlYyhyKTspc3dpdGNoKHRbM10pe2Nhc2UibWFuaWZlc3QiOmJyZWFrO2Nhc2UiZmlsZS1lbnRyeSI6aWYobj1vZSh0WzBdLCExKSxuLnBhdGg9PSIvIiYmbi50eXBlIT09S28pdGhyb3cgbmV3IEVycm9yKCJUaGlzIE9wZW5Eb2N1bWVudCBpcyBub3QgYSBzcHJlYWRzaGVldCIpO2JyZWFrO2Nhc2UiZW5jcnlwdGlvbi1kYXRhIjpjYXNlImFsZ29yaXRobSI6Y2FzZSJzdGFydC1rZXktZ2VuZXJhdGlvbiI6Y2FzZSJrZXktZGVyaXZhdGlvbiI6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBPRFMgRW5jcnlwdGlvbiIpO2RlZmF1bHQ6aWYoYSYmYS5XVEYpdGhyb3cgdH19dmFyIGlzPVtbImNwOmNhdGVnb3J5IiwiQ2F0ZWdvcnkiXSxbImNwOmNvbnRlbnRTdGF0dXMiLCJDb250ZW50U3RhdHVzIl0sWyJjcDprZXl3b3JkcyIsIktleXdvcmRzIl0sWyJjcDpsYXN0TW9kaWZpZWRCeSIsIkxhc3RBdXRob3IiXSxbImNwOmxhc3RQcmludGVkIiwiTGFzdFByaW50ZWQiXSxbImNwOnJldmlzaW9uIiwiUmV2TnVtYmVyIl0sWyJjcDp2ZXJzaW9uIiwiVmVyc2lvbiJdLFsiZGM6Y3JlYXRvciIsIkF1dGhvciJdLFsiZGM6ZGVzY3JpcHRpb24iLCJDb21tZW50cyJdLFsiZGM6aWRlbnRpZmllciIsIklkZW50aWZpZXIiXSxbImRjOmxhbmd1YWdlIiwiTGFuZ3VhZ2UiXSxbImRjOnN1YmplY3QiLCJTdWJqZWN0Il0sWyJkYzp0aXRsZSIsIlRpdGxlIl0sWyJkY3Rlcm1zOmNyZWF0ZWQiLCJDcmVhdGVkRGF0ZSIsImRhdGUiXSxbImRjdGVybXM6bW9kaWZpZWQiLCJNb2RpZmllZERhdGUiLCJkYXRlIl1dO2Z1bmN0aW9uIHNzKGUpe3ZhciBhPXt9O2U9VmUoZSk7Zm9yKHZhciByPTA7cjxpcy5sZW5ndGg7KytyKXt2YXIgdD1pc1tyXSxuPUhhKGUsdFswXSk7biE9bnVsbCYmbi5sZW5ndGg+MCYmKGFbdFsxXV09Q2UoblsxXSkpLHRbMl09PT0iZGF0ZSImJmFbdFsxXV0mJihhW3RbMV1dPXhyKGFbdFsxXV0pKX1yZXR1cm4gYX12YXIgWW89W1siQXBwbGljYXRpb24iLCJBcHBsaWNhdGlvbiIsInN0cmluZyJdLFsiQXBwVmVyc2lvbiIsIkFwcFZlcnNpb24iLCJzdHJpbmciXSxbIkNvbXBhbnkiLCJDb21wYW55Iiwic3RyaW5nIl0sWyJEb2NTZWN1cml0eSIsIkRvY1NlY3VyaXR5Iiwic3RyaW5nIl0sWyJNYW5hZ2VyIiwiTWFuYWdlciIsInN0cmluZyJdLFsiSHlwZXJsaW5rc0NoYW5nZWQiLCJIeXBlcmxpbmtzQ2hhbmdlZCIsImJvb2wiXSxbIlNoYXJlZERvYyIsIlNoYXJlZERvYyIsImJvb2wiXSxbIkxpbmtzVXBUb0RhdGUiLCJMaW5rc1VwVG9EYXRlIiwiYm9vbCJdLFsiU2NhbGVDcm9wIiwiU2NhbGVDcm9wIiwiYm9vbCJdLFsiSGVhZGluZ1BhaXJzIiwiSGVhZGluZ1BhaXJzIiwicmF3Il0sWyJUaXRsZXNPZlBhcnRzIiwiVGl0bGVzT2ZQYXJ0cyIsInJhdyJdXTtmdW5jdGlvbiBmcyhlLGEscix0KXt2YXIgbj1bXTtpZih0eXBlb2YgZT09InN0cmluZyIpbj1iaShlLHQpO2Vsc2UgZm9yKHZhciBpPTA7aTxlLmxlbmd0aDsrK2kpbj1uLmNvbmNhdChlW2ldLm1hcChmdW5jdGlvbihsKXtyZXR1cm57djpsfX0pKTt2YXIgZj10eXBlb2YgYT09InN0cmluZyI/YmkoYSx0KS5tYXAoZnVuY3Rpb24obCl7cmV0dXJuIGwudn0pOmEscz0wLGM9MDtpZihmLmxlbmd0aD4wKWZvcih2YXIgbz0wO28hPT1uLmxlbmd0aDtvKz0yKXtzd2l0Y2goYz0rbltvKzFdLnYsbltvXS52KXtjYXNlIldvcmtzaGVldHMiOmNhc2Ui5bel5L2c6KGoIjpjYXNlItCb0LjRgdGC0YsiOmNhc2Ui2KPZiNix2KfZgiDYp9mE2LnZhdmEIjpjYXNlIuODr+ODvOOCr+OCt+ODvOODiCI6Y2FzZSLXktec15nXldeg15XXqiDXoteR15XXk9eUIjpjYXNlIkFyYmVpdHNibMOkdHRlciI6Y2FzZSLDh2FsxLHFn21hIFNheWZhbGFyxLEiOmNhc2UiRmV1aWxsZXMgZGUgY2FsY3VsIjpjYXNlIkZvZ2xpIGRpIGxhdm9ybyI6Y2FzZSJGb2xoYXMgZGUgY8OhbGN1bG8iOmNhc2UiUGxhbmlsaGFzIjpjYXNlIlJlZ25lYXJrIjpjYXNlIkhvamFzIGRlIGPDoWxjdWxvIjpjYXNlIldlcmtibGFkZW4iOnIuV29ya3NoZWV0cz1jLHIuU2hlZXROYW1lcz1mLnNsaWNlKHMscytjKTticmVhaztjYXNlIk5hbWVkIFJhbmdlcyI6Y2FzZSJSYW5nb3MgY29uIG5vbWJyZSI6Y2FzZSLlkI3liY3ku5jjgY3kuIDopqciOmNhc2UiQmVuYW5udGUgQmVyZWljaGUiOmNhc2UiTmF2bmdpdm5lIG9tcsOlZGVyIjpyLk5hbWVkUmFuZ2VzPWMsci5EZWZpbmVkTmFtZXM9Zi5zbGljZShzLHMrYyk7YnJlYWs7Y2FzZSJDaGFydHMiOmNhc2UiRGlhZ3JhbW1lIjpyLkNoYXJ0c2hlZXRzPWMsci5DaGFydE5hbWVzPWYuc2xpY2UocyxzK2MpO2JyZWFrfXMrPWN9fWZ1bmN0aW9uIEpvKGUsYSxyKXt2YXIgdD17fTtyZXR1cm4gYXx8KGE9e30pLGU9VmUoZSksWW8uZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgaT0oTGUoZSxuWzBdKXx8W10pWzFdO3N3aXRjaChuWzJdKXtjYXNlInN0cmluZyI6aSYmKGFbblsxXV09Q2UoaSkpO2JyZWFrO2Nhc2UiYm9vbCI6YVtuWzFdXT1pPT09InRydWUiO2JyZWFrO2Nhc2UicmF3Ijp2YXIgZj1IYShlLG5bMF0pO2YmJmYubGVuZ3RoPjAmJih0W25bMV1dPWZbMV0pO2JyZWFrfX0pLHQuSGVhZGluZ1BhaXJzJiZ0LlRpdGxlc09mUGFydHMmJmZzKHQuSGVhZGluZ1BhaXJzLHQuVGl0bGVzT2ZQYXJ0cyxhLHIpLGF9dmFyIFpvPS88W148Pl0rPltePF0qL2c7ZnVuY3Rpb24gcW8oZSxhKXt2YXIgcj17fSx0PSIiLG49ZS5tYXRjaChabyk7aWYobilmb3IodmFyIGk9MDtpIT1uLmxlbmd0aDsrK2kpe3ZhciBmPW5baV0scz1vZShmKTtzd2l0Y2goQXIoc1swXSkpe2Nhc2UiPD94bWwiOmJyZWFrO2Nhc2UiPFByb3BlcnRpZXMiOmJyZWFrO2Nhc2UiPHByb3BlcnR5Ijp0PUNlKHMubmFtZSk7YnJlYWs7Y2FzZSI8L3Byb3BlcnR5PiI6dD1udWxsO2JyZWFrO2RlZmF1bHQ6aWYoZi5pbmRleE9mKCI8dnQ6Iik9PT0wKXt2YXIgYz1mLnNwbGl0KCI+Iiksbz1jWzBdLnNsaWNlKDQpLGw9Y1sxXTtzd2l0Y2gobyl7Y2FzZSJscHN0ciI6Y2FzZSJic3RyIjpjYXNlImxwd3N0ciI6clt0XT1DZShsKTticmVhaztjYXNlImJvb2wiOnJbdF09RmUobCk7YnJlYWs7Y2FzZSJpMSI6Y2FzZSJpMiI6Y2FzZSJpNCI6Y2FzZSJpOCI6Y2FzZSJpbnQiOmNhc2UidWludCI6clt0XT1wYXJzZUludChsLDEwKTticmVhaztjYXNlInI0IjpjYXNlInI4IjpjYXNlImRlY2ltYWwiOnJbdF09cGFyc2VGbG9hdChsKTticmVhaztjYXNlImZpbGV0aW1lIjpjYXNlImRhdGUiOnJbdF09eHIobCk7YnJlYWs7Y2FzZSJjeSI6Y2FzZSJlcnJvciI6clt0XT1DZShsKTticmVhaztkZWZhdWx0OmlmKG8uc2xpY2UoLTEpPT0iLyIpYnJlYWs7YS5XVEYmJnR5cGVvZiBjb25zb2xlPCJ1IiYmY29uc29sZS53YXJuKCJVbmV4cGVjdGVkIixmLG8sYyl9fWVsc2UgaWYoZi5zbGljZSgwLDIpIT09IjwvIil7aWYoYS5XVEYpdGhyb3cgbmV3IEVycm9yKGYpfX19cmV0dXJuIHJ9dmFyIFFvPXtUaXRsZToiVGl0bGUiLFN1YmplY3Q6IlN1YmplY3QiLEF1dGhvcjoiQXV0aG9yIixLZXl3b3JkczoiS2V5d29yZHMiLENvbW1lbnRzOiJEZXNjcmlwdGlvbiIsTGFzdEF1dGhvcjoiTGFzdEF1dGhvciIsUmV2TnVtYmVyOiJSZXZpc2lvbiIsQXBwbGljYXRpb246IkFwcE5hbWUiLExhc3RQcmludGVkOiJMYXN0UHJpbnRlZCIsQ3JlYXRlZERhdGU6IkNyZWF0ZWQiLE1vZGlmaWVkRGF0ZToiTGFzdFNhdmVkIixDYXRlZ29yeToiQ2F0ZWdvcnkiLE1hbmFnZXI6Ik1hbmFnZXIiLENvbXBhbnk6IkNvbXBhbnkiLEFwcFZlcnNpb246IlZlcnNpb24iLENvbnRlbnRTdGF0dXM6IkNvbnRlbnRTdGF0dXMiLElkZW50aWZpZXI6IklkZW50aWZpZXIiLExhbmd1YWdlOiJMYW5ndWFnZSJ9LGxuO2Z1bmN0aW9uIGVsKGUsYSxyKXtsbnx8KGxuPUowKFFvKSksYT1sblthXXx8YSxlW2FdPXJ9ZnVuY3Rpb24gdW4oZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDQpLHI9ZS5yZWFkX3NoaWZ0KDQpO3JldHVybiBuZXcgRGF0ZSgoci8xZTcqTWF0aC5wb3coMiwzMikrYS8xZTctMTE2NDQ0NzM2MDApKjFlMykudG9JU09TdHJpbmcoKS5yZXBsYWNlKC9cLjAwMC8sIiIpfWZ1bmN0aW9uIHJsKGUsYSxyKXt2YXIgdD1lLmwsbj1lLnJlYWRfc2hpZnQoMCwibHBzdHItY3AiKTtpZihyKWZvcig7ZS5sLXQmMzspKytlLmw7cmV0dXJuIG59ZnVuY3Rpb24gYWwoZSxhLHIpe3ZhciB0PWUucmVhZF9zaGlmdCgwLCJscHdzdHIiKTtyZXR1cm4gciYmKGUubCs9NC0odC5sZW5ndGgrMSYzKSYzKSx0fWZ1bmN0aW9uIGNzKGUsYSxyKXtyZXR1cm4gYT09PTMxP2FsKGUpOnJsKGUsYSxyKX1mdW5jdGlvbiBNdChlLGEscil7cmV0dXJuIGNzKGUsYSxyPT09ITE/MDo0KX1mdW5jdGlvbiB0bChlLGEpe2lmKCFhKXRocm93IG5ldyBFcnJvcigiVnRVbmFsaWduZWRTdHJpbmcgbXVzdCBoYXZlIHBvc2l0aXZlIGxlbmd0aCIpO3JldHVybiBjcyhlLGEsMCl9ZnVuY3Rpb24gbmwoZSl7Zm9yKHZhciBhPWUucmVhZF9zaGlmdCg0KSxyPVtdLHQ9MDt0IT1hOysrdCl7dmFyIG49ZS5sO3JbdF09ZS5yZWFkX3NoaWZ0KDAsImxwd3N0ciIpLnJlcGxhY2UoU3IsIiIpLGUubC1uJjImJihlLmwrPTIpfXJldHVybiByfWZ1bmN0aW9uIGlsKGUpe2Zvcih2YXIgYT1lLnJlYWRfc2hpZnQoNCkscj1bXSx0PTA7dCE9YTsrK3Qpclt0XT1lLnJlYWRfc2hpZnQoMCwibHBzdHItY3AiKS5yZXBsYWNlKFNyLCIiKTtyZXR1cm4gcn1mdW5jdGlvbiBzbChlKXt2YXIgYT1lLmwscj1fMChlLHJzKTtlW2UubF09PTAmJmVbZS5sKzFdPT0wJiZlLmwtYSYyJiYoZS5sKz0yKTt2YXIgdD1fMChlLENyKTtyZXR1cm5bcix0XX1mdW5jdGlvbiBmbChlKXtmb3IodmFyIGE9ZS5yZWFkX3NoaWZ0KDQpLHI9W10sdD0wO3Q8YS8yOysrdClyLnB1c2goc2woZSkpO3JldHVybiByfWZ1bmN0aW9uIG9zKGUsYSl7Zm9yKHZhciByPWUucmVhZF9zaGlmdCg0KSx0PXt9LG49MDtuIT1yOysrbil7dmFyIGk9ZS5yZWFkX3NoaWZ0KDQpLGY9ZS5yZWFkX3NoaWZ0KDQpO3RbaV09ZS5yZWFkX3NoaWZ0KGYsYT09PTEyMDA/InV0ZjE2bGUiOiJ1dGY4IikucmVwbGFjZShTciwiIikucmVwbGFjZShBdCwiISIpLGE9PT0xMjAwJiZmJTImJihlLmwrPTIpfXJldHVybiBlLmwmMyYmKGUubD1lLmw+PjIrMTw8MiksdH1mdW5jdGlvbiBscyhlKXt2YXIgYT1lLnJlYWRfc2hpZnQoNCkscj1lLnNsaWNlKGUubCxlLmwrYSk7cmV0dXJuIGUubCs9YSwoYSYzKT4wJiYoZS5sKz00LShhJjMpJjMpLHJ9ZnVuY3Rpb24gY2woZSl7dmFyIGE9e307cmV0dXJuIGEuU2l6ZT1lLnJlYWRfc2hpZnQoNCksZS5sKz1hLlNpemUrMy0oYS5TaXplLTEpJTQsYX1mdW5jdGlvbiBfMChlLGEscil7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDIpLG4saT1yfHx7fTtpZihlLmwrPTIsYSE9PWVzJiZ0IT09YSYmVW8uaW5kZXhPZihhKT09PS0xJiYhKChhJjY1NTM0KT09NDEyNiYmKHQmNjU1MzQpPT00MTI2KSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHR5cGUgIithKyIgc2F3ICIrdCk7c3dpdGNoKGE9PT1lcz90OmEpe2Nhc2UgMjpyZXR1cm4gbj1lLnJlYWRfc2hpZnQoMiwiaSIpLGkucmF3fHwoZS5sKz0yKSxuO2Nhc2UgMzpyZXR1cm4gbj1lLnJlYWRfc2hpZnQoNCwiaSIpLG47Y2FzZSAxMTpyZXR1cm4gZS5yZWFkX3NoaWZ0KDQpIT09MDtjYXNlIDE5OnJldHVybiBuPWUucmVhZF9zaGlmdCg0KSxuO2Nhc2UgMzA6ZS5sKz00LHZhbD1NdChlLGVbZS5sLTRdKS5yZXBsYWNlKC8oXnxbXlx1MDAwMF0pXHUwMDAwKyQvLCIkMSIpO2JyZWFrO2Nhc2UgMzE6ZS5sKz00LHZhbD1NdChlLGVbZS5sLTRdKS5yZXBsYWNlKC8oXnxbXlx1MDAwMF0pXHUwMDAwKyQvLCIkMSIpO2JyZWFrO2Nhc2UgNjQ6cmV0dXJuIHVuKGUpO2Nhc2UgNjU6cmV0dXJuIGxzKGUpO2Nhc2UgNzE6cmV0dXJuIGNsKGUpO2Nhc2UgODA6cmV0dXJuIE10KGUsdCwhaS5yYXcpLnJlcGxhY2UoU3IsIiIpO2Nhc2UgODE6cmV0dXJuIHRsKGUsdCkucmVwbGFjZShTciwiIik7Y2FzZSA0MTA4OnJldHVybiBmbChlKTtjYXNlIDQxMjY6Y2FzZSA0MTI3OnJldHVybiB0PT00MTI3P25sKGUpOmlsKGUpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJUeXBlZFByb3BlcnR5VmFsdWUgdW5yZWNvZ25pemVkIHR5cGUgIithKyIgIit0KX19ZnVuY3Rpb24gdXMoZSxhKXt2YXIgcj1lLmwsdD1lLnJlYWRfc2hpZnQoNCksbj1lLnJlYWRfc2hpZnQoNCksaT1bXSxmPTAscz0wLGM9LTEsbz17fTtmb3IoZj0wO2YhPW47KytmKXt2YXIgbD1lLnJlYWRfc2hpZnQoNCksdT1lLnJlYWRfc2hpZnQoNCk7aVtmXT1bbCx1K3JdfWkuc29ydChmdW5jdGlvbih3LF8pe3JldHVybiB3WzFdLV9bMV19KTt2YXIgeD17fTtmb3IoZj0wO2YhPW47KytmKXtpZihlLmwhPT1pW2ZdWzFdKXt2YXIgaD0hMDtpZihmPjAmJmEpc3dpdGNoKGFbaVtmLTFdWzBdXS50KXtjYXNlIDI6ZS5sKzI9PT1pW2ZdWzFdJiYoZS5sKz0yLGg9ITEpO2JyZWFrO2Nhc2UgODA6ZS5sPD1pW2ZdWzFdJiYoZS5sPWlbZl1bMV0saD0hMSk7YnJlYWs7Y2FzZSA0MTA4OmUubDw9aVtmXVsxXSYmKGUubD1pW2ZdWzFdLGg9ITEpO2JyZWFrfWlmKCghYXx8Zj09MCkmJmUubDw9aVtmXVsxXSYmKGg9ITEsZS5sPWlbZl1bMV0pLGgpdGhyb3cgbmV3IEVycm9yKCJSZWFkIEVycm9yOiBFeHBlY3RlZCBhZGRyZXNzICIraVtmXVsxXSsiIGF0ICIrZS5sKyIgOiIrZil9aWYoYSl7aWYoaVtmXVswXT09MCYmaS5sZW5ndGg+ZisxJiZpW2ZdWzFdPT1pW2YrMV1bMV0pY29udGludWU7dmFyIGc9YVtpW2ZdWzBdXTtpZih4W2cubl09XzAoZSxnLnQse3JhdzohMH0pLGcucD09PSJ2ZXJzaW9uIiYmKHhbZy5uXT1TdHJpbmcoeFtnLm5dPj4xNikrIi4iKygiMDAwMCIrU3RyaW5nKHhbZy5uXSY2NTUzNSkpLnNsaWNlKC00KSksZy5uPT0iQ29kZVBhZ2UiKXN3aXRjaCh4W2cubl0pe2Nhc2UgMDp4W2cubl09MTI1MjtjYXNlIDg3NDpjYXNlIDkzMjpjYXNlIDkzNjpjYXNlIDk0OTpjYXNlIDk1MDpjYXNlIDEyNTA6Y2FzZSAxMjUxOmNhc2UgMTI1MzpjYXNlIDEyNTQ6Y2FzZSAxMjU1OmNhc2UgMTI1NjpjYXNlIDEyNTc6Y2FzZSAxMjU4OmNhc2UgMWU0OmNhc2UgMTIwMDpjYXNlIDEyMDE6Y2FzZSAxMjUyOmNhc2UgNjVlMzpjYXNlLTUzNjpjYXNlIDY1MDAxOmNhc2UtNTM1OllyKHM9eFtnLm5dPj4+MCY2NTUzNSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIENvZGVQYWdlOiAiK3hbZy5uXSl9fWVsc2UgaWYoaVtmXVswXT09PTEpe2lmKHM9eC5Db2RlUGFnZT1fMChlLG9uKSxZcihzKSxjIT09LTEpe3ZhciBtPWUubDtlLmw9aVtjXVsxXSxvPW9zKGUscyksZS5sPW19fWVsc2UgaWYoaVtmXVswXT09PTApe2lmKHM9PT0wKXtjPWYsZS5sPWlbZisxXVsxXTtjb250aW51ZX1vPW9zKGUscyl9ZWxzZXt2YXIgZD1vW2lbZl1bMF1dLHA7c3dpdGNoKGVbZS5sXSl7Y2FzZSA2NTplLmwrPTQscD1scyhlKTticmVhaztjYXNlIDMwOmUubCs9NCxwPU10KGUsZVtlLmwtNF0pLnJlcGxhY2UoLyhefFteXHUwMDAwXSlcdTAwMDArJC8sIiQxIik7YnJlYWs7Y2FzZSAzMTplLmwrPTQscD1NdChlLGVbZS5sLTRdKS5yZXBsYWNlKC8oXnxbXlx1MDAwMF0pXHUwMDAwKyQvLCIkMSIpO2JyZWFrO2Nhc2UgMzplLmwrPTQscD1lLnJlYWRfc2hpZnQoNCwiaSIpO2JyZWFrO2Nhc2UgMTk6ZS5sKz00LHA9ZS5yZWFkX3NoaWZ0KDQpO2JyZWFrO2Nhc2UgNTplLmwrPTQscD1lLnJlYWRfc2hpZnQoOCwiZiIpO2JyZWFrO2Nhc2UgMTE6ZS5sKz00LHA9YXIoZSw0KTticmVhaztjYXNlIDY0OmUubCs9NCxwPXhyKHVuKGUpKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5wYXJzZWQgdmFsdWU6ICIrZVtlLmxdKX14W2RdPXB9fXJldHVybiBlLmw9cit0LHh9ZnVuY3Rpb24gaHMoZSxhLHIpe3ZhciB0PWUuY29udGVudDtpZighdClyZXR1cm57fTtzcih0LDApO3ZhciBuLGksZixzLGM9MDt0LmNoaygiZmVmZiIsIkJ5dGUgT3JkZXI6ICIpLHQucmVhZF9zaGlmdCgyKTt2YXIgbz10LnJlYWRfc2hpZnQoNCksbD10LnJlYWRfc2hpZnQoMTYpO2lmKGwhPT1NZS51dGlscy5jb25zdHMuSEVBREVSX0NMU0lEJiZsIT09cil0aHJvdyBuZXcgRXJyb3IoIkJhZCBQcm9wZXJ0eVNldCBDTFNJRCAiK2wpO2lmKG49dC5yZWFkX3NoaWZ0KDQpLG4hPT0xJiZuIT09Mil0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCAjU2V0czogIituKTtpZihpPXQucmVhZF9zaGlmdCgxNikscz10LnJlYWRfc2hpZnQoNCksbj09PTEmJnMhPT10LmwpdGhyb3cgbmV3IEVycm9yKCJMZW5ndGggbWlzbWF0Y2g6ICIrcysiICE9PSAiK3QubCk7bj09PTImJihmPXQucmVhZF9zaGlmdCgxNiksYz10LnJlYWRfc2hpZnQoNCkpO3ZhciB1PXVzKHQsYSkseD17U3lzdGVtSWRlbnRpZmllcjpvfTtmb3IodmFyIGggaW4gdSl4W2hdPXVbaF07aWYoeC5GTVRJRD1pLG49PT0xKXJldHVybiB4O2lmKGMtdC5sPT0yJiYodC5sKz0yKSx0LmwhPT1jKXRocm93IG5ldyBFcnJvcigiTGVuZ3RoIG1pc21hdGNoIDI6ICIrdC5sKyIgIT09ICIrYyk7dmFyIGc7dHJ5e2c9dXModCxudWxsKX1jYXRjaHt9Zm9yKGggaW4gZyl4W2hdPWdbaF07cmV0dXJuIHguRk1USUQ9W2ksZl0seH1mdW5jdGlvbiBiYShlLGEpe3JldHVybiBlLnJlYWRfc2hpZnQoYSksbnVsbH1mdW5jdGlvbiBvbChlLGEscil7Zm9yKHZhciB0PVtdLG49ZS5sK2E7ZS5sPG47KXQucHVzaChyKGUsbi1lLmwpKTtpZihuIT09ZS5sKXRocm93IG5ldyBFcnJvcigiU2x1cnAgZXJyb3IiKTtyZXR1cm4gdH1mdW5jdGlvbiBhcihlLGEpe3JldHVybiBlLnJlYWRfc2hpZnQoYSk9PT0xfWZ1bmN0aW9uIGVyKGUpe3JldHVybiBlLnJlYWRfc2hpZnQoMiwidSIpfWZ1bmN0aW9uIHhzKGUsYSl7cmV0dXJuIG9sKGUsYSxlcil9ZnVuY3Rpb24gZHMoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDEpLHI9ZS5yZWFkX3NoaWZ0KDEpO3JldHVybiByPT09MT9hOmE9PT0xfWZ1bmN0aW9uIHphKGUsYSxyKXt2YXIgdD1lLnJlYWRfc2hpZnQociYmci5iaWZmPj0xMj8yOjEpLG49InNiY3MtY29udCIsaT1IcjtpZihyJiZyLmJpZmY+PTgmJihIcj0xMjAwKSwhcnx8ci5iaWZmPT04KXt2YXIgZj1lLnJlYWRfc2hpZnQoMSk7ZiYmKG49ImRiY3MtY29udCIpfWVsc2Ugci5iaWZmPT0xMiYmKG49IndzdHIiKTtyLmJpZmY+PTImJnIuYmlmZjw9NSYmKG49ImNwc3RyIik7dmFyIHM9dD9lLnJlYWRfc2hpZnQodCxuKToiIjtyZXR1cm4gSHI9aSxzfWZ1bmN0aW9uIGxsKGUpe3ZhciBhPUhyO0hyPTEyMDA7dmFyIHI9ZS5yZWFkX3NoaWZ0KDIpLHQ9ZS5yZWFkX3NoaWZ0KDEpLG49dCY0LGk9dCY4LGY9MSsodCYxKSxzPTAsYyxvPXt9O2kmJihzPWUucmVhZF9zaGlmdCgyKSksbiYmKGM9ZS5yZWFkX3NoaWZ0KDQpKTt2YXIgbD1mPT0yPyJkYmNzLWNvbnQiOiJzYmNzLWNvbnQiLHU9cj09PTA/IiI6ZS5yZWFkX3NoaWZ0KHIsbCk7cmV0dXJuIGkmJihlLmwrPTQqcyksbiYmKGUubCs9Yyksby50PXUsaXx8KG8ucmF3PSI8dD4iK28udCsiPC90PiIsby5yPW8udCksSHI9YSxvfWZ1bmN0aW9uICRhKGUsYSxyKXt2YXIgdDtpZihyKXtpZihyLmJpZmY+PTImJnIuYmlmZjw9NSlyZXR1cm4gZS5yZWFkX3NoaWZ0KGEsImNwc3RyIik7aWYoci5iaWZmPj0xMilyZXR1cm4gZS5yZWFkX3NoaWZ0KGEsImRiY3MtY29udCIpfXZhciBuPWUucmVhZF9zaGlmdCgxKTtyZXR1cm4gbj09PTA/dD1lLnJlYWRfc2hpZnQoYSwic2Jjcy1jb250Iik6dD1lLnJlYWRfc2hpZnQoYSwiZGJjcy1jb250IiksdH1mdW5jdGlvbiBQdChlLGEscil7dmFyIHQ9ZS5yZWFkX3NoaWZ0KHImJnIuYmlmZj09Mj8xOjIpO3JldHVybiB0PT09MD8oci5iaWZmPD04JiZlLmwrKywiIik6JGEoZSx0LHIpfWZ1bmN0aW9uIEthKGUsYSxyKXtpZihyLmJpZmY+NSlyZXR1cm4gUHQoZSxhLHIpO3ZhciB0PWUucmVhZF9zaGlmdCgxKTtyZXR1cm4gdD09PTA/KGUubCsrLCIiKTplLnJlYWRfc2hpZnQodCxyLmJpZmY8PTR8fCFlLmxlbnM/ImNwc3RyIjoic2Jjcy1jb250Iil9ZnVuY3Rpb24gdWwoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDEpO2UubCsrO3ZhciByPWUucmVhZF9zaGlmdCgyKTtyZXR1cm4gZS5sKz0yLFthLHJdfWZ1bmN0aW9uIGhsKGUpe3ZhciBhPWUucmVhZF9zaGlmdCg0KSxyPWUubCx0PSExO2E+MjQmJihlLmwrPWEtMjQsZS5yZWFkX3NoaWZ0KDE2KT09PSI3OTU4ODFmNDNiMWQ3ZjQ4YWYyYzgyNWRjNDg1Mjc2MyImJih0PSEwKSxlLmw9cik7dmFyIG49ZS5yZWFkX3NoaWZ0KCh0P2EtMjQ6YSk+PjEsInV0ZjE2bGUiKS5yZXBsYWNlKFNyLCIiKTtyZXR1cm4gdCYmKGUubCs9MjQpLG59ZnVuY3Rpb24geGwoZSl7Zm9yKHZhciBhPWUucmVhZF9zaGlmdCgyKSxyPSIiO2EtLSA+MDspcis9Ii4uLyI7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDAsImxwc3RyLWFuc2kiKTtpZihlLmwrPTIsZS5yZWFkX3NoaWZ0KDIpIT01NzAwNSl0aHJvdyBuZXcgRXJyb3IoIkJhZCBGaWxlTW9uaWtlciIpO3ZhciBuPWUucmVhZF9zaGlmdCg0KTtpZihuPT09MClyZXR1cm4gcit0LnJlcGxhY2UoL1xcL2csIi8iKTt2YXIgaT1lLnJlYWRfc2hpZnQoNCk7aWYoZS5yZWFkX3NoaWZ0KDIpIT0zKXRocm93IG5ldyBFcnJvcigiQmFkIEZpbGVNb25pa2VyIik7dmFyIGY9ZS5yZWFkX3NoaWZ0KGk+PjEsInV0ZjE2bGUiKS5yZXBsYWNlKFNyLCIiKTtyZXR1cm4gcitmfWZ1bmN0aW9uIGRsKGUsYSl7dmFyIHI9ZS5yZWFkX3NoaWZ0KDE2KTtzd2l0Y2gocil7Y2FzZSJlMGM5ZWE3OWY5YmFjZTExOGM4MjAwYWEwMDRiYTkwYiI6cmV0dXJuIGhsKGUpO2Nhc2UiMDMwMzAwMDAwMDAwMDAwMGMwMDAwMDAwMDAwMDAwNDYiOnJldHVybiB4bChlKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgTW9uaWtlciAiK3IpfX1mdW5jdGlvbiBrMChlKXt2YXIgYT1lLnJlYWRfc2hpZnQoNCkscj1hPjA/ZS5yZWFkX3NoaWZ0KGEsInV0ZjE2bGUiKS5yZXBsYWNlKFNyLCIiKToiIjtyZXR1cm4gcn1mdW5jdGlvbiB2bChlLGEpe3ZhciByPWUubCthLHQ9ZS5yZWFkX3NoaWZ0KDQpO2lmKHQhPT0yKXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHN0cmVhbVZlcnNpb246ICIrdCk7dmFyIG49ZS5yZWFkX3NoaWZ0KDIpO2UubCs9Mjt2YXIgaSxmLHMsYyxvPSIiLGwsdTtuJjE2JiYoaT1rMChlLHItZS5sKSksbiYxMjgmJihmPWswKGUsci1lLmwpKSwobiYyNTcpPT09MjU3JiYocz1rMChlLHItZS5sKSksKG4mMjU3KT09PTEmJihjPWRsKGUsci1lLmwpKSxuJjgmJihvPWswKGUsci1lLmwpKSxuJjMyJiYobD1lLnJlYWRfc2hpZnQoMTYpKSxuJjY0JiYodT11bihlKSksZS5sPXI7dmFyIHg9Znx8c3x8Y3x8IiI7eCYmbyYmKHgrPSIjIitvKSx4fHwoeD0iIyIrbyksbiYyJiZ4LmNoYXJBdCgwKT09Ii8iJiZ4LmNoYXJBdCgxKSE9Ii8iJiYoeD0iZmlsZTovLyIreCk7dmFyIGg9e1RhcmdldDp4fTtyZXR1cm4gbCYmKGguZ3VpZD1sKSx1JiYoaC50aW1lPXUpLGkmJihoLlRvb2x0aXA9aSksaH1mdW5jdGlvbiB2cyhlKXt2YXIgYT1lLnJlYWRfc2hpZnQoMSkscj1lLnJlYWRfc2hpZnQoMSksdD1lLnJlYWRfc2hpZnQoMSksbj1lLnJlYWRfc2hpZnQoMSk7cmV0dXJuW2Escix0LG5dfWZ1bmN0aW9uIHBzKGUsYSl7dmFyIHI9dnMoZSk7cmV0dXJuIHJbM109MCxyfWZ1bmN0aW9uIHFyKGUsYSxyKXt2YXIgdD1lLnJlYWRfc2hpZnQoMiksbj1lLnJlYWRfc2hpZnQoMiksaT17cjp0LGM6bixpeGZlOjB9O2lmKHImJnIuYmlmZj09Mnx8YT09Nyl7dmFyIGY9ZS5yZWFkX3NoaWZ0KDEpO2kuaXhmZT1mJjYzLGUubCs9Mn1lbHNlIGkuaXhmZT1lLnJlYWRfc2hpZnQoMik7cmV0dXJuIGl9ZnVuY3Rpb24gcGwoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDIpO3JldHVybiBlLmwrPTgse3R5cGU6YSxmbGFnczpyfX1mdW5jdGlvbiBnbChlLGEscil7cmV0dXJuIGE9PT0wPyIiOkthKGUsYSxyKX1mdW5jdGlvbiBtbChlLGEscil7dmFyIHQ9ci5iaWZmPjg/NDoyLG49ZS5yZWFkX3NoaWZ0KHQpLGk9ZS5yZWFkX3NoaWZ0KHQsImkiKSxmPWUucmVhZF9zaGlmdCh0LCJpIik7cmV0dXJuW24saSxmXX1mdW5jdGlvbiBncyhlKXt2YXIgYT1lLnJlYWRfc2hpZnQoMikscj12MChlKTtyZXR1cm5bYSxyXX1mdW5jdGlvbiBfbChlLGEscil7ZS5sKz00LGEtPTQ7dmFyIHQ9ZS5sK2Esbj16YShlLGEsciksaT1lLnJlYWRfc2hpZnQoMik7aWYodC09ZS5sLGkhPT10KXRocm93IG5ldyBFcnJvcigiTWFsZm9ybWVkIEFkZGluVWRmOiBwYWRkaW5nID0gIit0KyIgIT0gIitpKTtyZXR1cm4gZS5sKz1pLG59ZnVuY3Rpb24gdzAoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDIpLHQ9ZS5yZWFkX3NoaWZ0KDIpLG49ZS5yZWFkX3NoaWZ0KDIpO3JldHVybntzOntjOnQscjphfSxlOntjOm4scn19fWZ1bmN0aW9uIG1zKGUpe3ZhciBhPWUucmVhZF9zaGlmdCgyKSxyPWUucmVhZF9zaGlmdCgyKSx0PWUucmVhZF9zaGlmdCgxKSxuPWUucmVhZF9zaGlmdCgxKTtyZXR1cm57czp7Yzp0LHI6YX0sZTp7YzpuLHJ9fX12YXIga2w9bXM7ZnVuY3Rpb24gX3MoZSl7ZS5sKz00O3ZhciBhPWUucmVhZF9zaGlmdCgyKSxyPWUucmVhZF9zaGlmdCgyKSx0PWUucmVhZF9zaGlmdCgyKTtyZXR1cm4gZS5sKz0xMixbcixhLHRdfWZ1bmN0aW9uIHdsKGUpe3ZhciBhPXt9O3JldHVybiBlLmwrPTQsZS5sKz0xNixhLmZTaGFyZWROb3RlPWUucmVhZF9zaGlmdCgyKSxlLmwrPTQsYX1mdW5jdGlvbiBGbChlKXt2YXIgYT17fTtyZXR1cm4gZS5sKz00LGUuY2Y9ZS5yZWFkX3NoaWZ0KDIpLGF9ZnVuY3Rpb24ga3IoZSl7ZS5sKz0yLGUubCs9ZS5yZWFkX3NoaWZ0KDIpfXZhciBUbD17MDprciw0OmtyLDU6a3IsNjprciw3OkZsLDg6a3IsOTprciwxMDprciwxMTprciwxMjprciwxMzp3bCwxNDprciwxNTprciwxNjprciwxNzprciwxODprciwxOTprciwyMDprciwyMTpfc307ZnVuY3Rpb24gRWwoZSxhKXtmb3IodmFyIHI9ZS5sK2EsdD1bXTtlLmw8cjspe3ZhciBuPWUucmVhZF9zaGlmdCgyKTtlLmwtPTI7dHJ5e3Rbbl09VGxbbl0oZSxyLWUubCl9Y2F0Y2h7cmV0dXJuIGUubD1yLHR9fXJldHVybiBlLmwhPXImJihlLmw9ciksdH1mdW5jdGlvbiBGMChlLGEpe3ZhciByPXtCSUZGVmVyOjAsZHQ6MH07c3dpdGNoKHIuQklGRlZlcj1lLnJlYWRfc2hpZnQoMiksYS09MixhPj0yJiYoci5kdD1lLnJlYWRfc2hpZnQoMiksZS5sLT0yKSxyLkJJRkZWZXIpe2Nhc2UgMTUzNjpjYXNlIDEyODA6Y2FzZSAxMDI0OmNhc2UgNzY4OmNhc2UgNTEyOmNhc2UgMjpjYXNlIDc6YnJlYWs7ZGVmYXVsdDppZihhPjYpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIEJJRkYgVmVyICIrci5CSUZGVmVyKX1yZXR1cm4gZS5yZWFkX3NoaWZ0KGEpLHJ9ZnVuY3Rpb24gQWwoZSxhKXtyZXR1cm4gYT09PTB8fGUucmVhZF9zaGlmdCgyKSwxMjAwfWZ1bmN0aW9uIHlsKGUsYSxyKXtpZihyLmVuYylyZXR1cm4gZS5sKz1hLCIiO3ZhciB0PWUubCxuPUthKGUsMCxyKTtyZXR1cm4gZS5yZWFkX3NoaWZ0KGErdC1lLmwpLG59ZnVuY3Rpb24gU2woZSxhLHIpe3ZhciB0PXImJnIuYmlmZj09OHx8YT09Mj9lLnJlYWRfc2hpZnQoMik6KGUubCs9YSwwKTtyZXR1cm57ZkRpYWxvZzp0JjE2LGZCZWxvdzp0JjY0LGZSaWdodDp0JjEyOH19ZnVuY3Rpb24gQ2woZSxhLHIpe3ZhciB0PSIiO2lmKHIuYmlmZj09NClyZXR1cm4gdD16YShlLDAsciksdC5sZW5ndGg9PT0wJiYodD0iU2hlZXQxIikse25hbWU6dH07dmFyIG49ZS5yZWFkX3NoaWZ0KDQpLGk9ZS5yZWFkX3NoaWZ0KDEpJjMsZj1lLnJlYWRfc2hpZnQoMSk7c3dpdGNoKGYpe2Nhc2UgMDpmPSJXb3Jrc2hlZXQiO2JyZWFrO2Nhc2UgMTpmPSJNYWNyb3NoZWV0IjticmVhaztjYXNlIDI6Zj0iQ2hhcnRzaGVldCI7YnJlYWs7Y2FzZSA2OmY9IlZCQU1vZHVsZSI7YnJlYWt9cmV0dXJuIHQ9emEoZSwwLHIpLHQubGVuZ3RoPT09MCYmKHQ9IlNoZWV0MSIpLHtwb3M6bixoczppLGR0OmYsbmFtZTp0fX1mdW5jdGlvbiBibChlLGEpe2Zvcih2YXIgcj1lLmwrYSx0PWUucmVhZF9zaGlmdCg0KSxuPWUucmVhZF9zaGlmdCg0KSxpPVtdLGY9MDtmIT1uJiZlLmw8cjsrK2YpaS5wdXNoKGxsKGUpKTtyZXR1cm4gaS5Db3VudD10LGkuVW5pcXVlPW4saX1mdW5jdGlvbiBJbChlLGEpe3ZhciByPXt9O3JldHVybiByLmRzc3Q9ZS5yZWFkX3NoaWZ0KDIpLGUubCs9YS0yLHJ9ZnVuY3Rpb24gRGwoZSl7dmFyIGE9e307YS5yPWUucmVhZF9zaGlmdCgyKSxhLmM9ZS5yZWFkX3NoaWZ0KDIpLGEuY250PWUucmVhZF9zaGlmdCgyKS1hLmM7dmFyIHI9ZS5yZWFkX3NoaWZ0KDIpO2UubCs9NDt2YXIgdD1lLnJlYWRfc2hpZnQoMSk7ZS5sKz0xO3ZhciBuPWUucmVhZF9zaGlmdCgyKTtyZXR1cm4gYS5peGZlPW4mNDA5NSxhLmZsYWdzPW4+PjEyJjE1LHQmNyYmKGEubGV2ZWw9dCY3KSx0JjMyJiYoYS5oaWRkZW49ITApLHQmNjQmJihhLmhwdD1yLzIwKSxhfWZ1bmN0aW9uIFJsKGUpe3ZhciBhPXBsKGUpO2lmKGEudHlwZSE9MjIxMSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgRnV0dXJlIFJlY29yZCAiK2EudHlwZSk7dmFyIHI9ZS5yZWFkX3NoaWZ0KDQpO3JldHVybiByIT09MH1mdW5jdGlvbiBPbChlKXtyZXR1cm4gZS5yZWFkX3NoaWZ0KDIpLGUucmVhZF9zaGlmdCg0KX1mdW5jdGlvbiBrcyhlLGEscil7dmFyIHQ9MDtyJiZyLmJpZmY9PTJ8fCh0PWUucmVhZF9zaGlmdCgyKSk7dmFyIG49ZS5yZWFkX3NoaWZ0KDIpO3ImJnIuYmlmZj09MiYmKHQ9MS0obj4+MTUpLG4mPTMyNzY3KTt2YXIgaT17VW5zeW5jZWQ6dCYxLER5WmVybzoodCYyKT4+MSxFeEFzYzoodCY0KT4+MixFeERzYzoodCY4KT4+M307cmV0dXJuW2ksbl19ZnVuY3Rpb24gTmwoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDIpLHQ9ZS5yZWFkX3NoaWZ0KDIpLG49ZS5yZWFkX3NoaWZ0KDIpLGk9ZS5yZWFkX3NoaWZ0KDIpLGY9ZS5yZWFkX3NoaWZ0KDIpLHM9ZS5yZWFkX3NoaWZ0KDIpLGM9ZS5yZWFkX3NoaWZ0KDIpLG89ZS5yZWFkX3NoaWZ0KDIpO3JldHVybntQb3M6W2Escl0sRGltOlt0LG5dLEZsYWdzOmksQ3VyVGFiOmYsRmlyc3RUYWI6cyxTZWxlY3RlZDpjLFRhYlJhdGlvOm99fWZ1bmN0aW9uIE1sKGUsYSxyKXtpZihyJiZyLmJpZmY+PTImJnIuYmlmZjw1KXJldHVybnt9O3ZhciB0PWUucmVhZF9zaGlmdCgyKTtyZXR1cm57UlRMOnQmNjR9fWZ1bmN0aW9uIFBsKCl7fWZ1bmN0aW9uIExsKGUsYSxyKXt2YXIgdD1lLmwrYSxuPXtkeUhlaWdodDplLnJlYWRfc2hpZnQoMiksZmw6ZS5yZWFkX3NoaWZ0KDIpfTtzd2l0Y2gobi5zej1uLmR5SGVpZ2h0LzIwLG4uaXRhbGljPSEhKG4uZmwmMiksbi5zdHJpa2U9ISEobi5mbCY4KSxuLm91dGxpbmU9ISEobi5mbCYxNiksbi5zaGFkb3c9ISEobi5mbCYzMiksbi5jb25kZW5zZT0hIShuLmZsJjY0KSxuLmV4dGVuZD0hIShuLmZsJjEyOCksciYmci5iaWZmfHw4KXtjYXNlIDI6YnJlYWs7Y2FzZSAzOmNhc2UgNDpuLmljdj1lLnJlYWRfc2hpZnQoMik7YnJlYWs7ZGVmYXVsdDpuLmljdj1lLnJlYWRfc2hpZnQoMiksbi5ibHM9ZS5yZWFkX3NoaWZ0KDIpLG4uYm9sZD1uLmJscz49NzAwLG4udmVydEFsaWduPWUucmVhZF9zaGlmdCgyKSxuLnVuZGVybGluZT1lLnJlYWRfc2hpZnQoMSksbi5mYW1pbHk9ZS5yZWFkX3NoaWZ0KDEpLG4uY2hhcnNldD1lLnJlYWRfc2hpZnQoMSksZS5sKys7YnJlYWt9cmV0dXJuIG4ubmFtZT1lLmw8dD96YShlLHQtZS5sLHIpOiIiLG59ZnVuY3Rpb24gQmwoZSxhLHIpe3ZhciB0PXFyKGUsYSxyKTtyZXR1cm4gdC5pc3N0PWUucmVhZF9zaGlmdCg0KSx0fWZ1bmN0aW9uIFVsKGUsYSxyKXtyLmJpZmZndWVzcyYmci5iaWZmPT0yJiYoci5iaWZmPTUpO3ZhciB0PWUubCthLG49cXIoZSxhLHIpLGk9UHQoZSx0LWUubCxyKTtyZXR1cm4gbi52YWw9aSxufWZ1bmN0aW9uIEhsKGUsYSxyKXt2YXIgdD1lLnJlYWRfc2hpZnQoMiksbj1LYShlLDAscik7cmV0dXJuW3Qsbl19dmFyIFdsPUthO2Z1bmN0aW9uIHdzKGUsYSxyKXt2YXIgdD1lLmwrYSxuPXIuYmlmZj09OHx8IXIuYmlmZj80OjIsaT1lLnJlYWRfc2hpZnQobiksZj1lLnJlYWRfc2hpZnQobikscz1lLnJlYWRfc2hpZnQoMiksYz1lLnJlYWRfc2hpZnQoMik7cmV0dXJuIGUubD10LHtzOntyOmksYzpzfSxlOntyOmYsY319fWZ1bmN0aW9uIFZsKGUpe3ZhciBhPWUucmVhZF9zaGlmdCgyKSxyPWUucmVhZF9zaGlmdCgyKSx0PWdzKGUpO3JldHVybntyOmEsYzpyLGl4ZmU6dFswXSxya251bTp0WzFdfX1mdW5jdGlvbiBHbChlLGEpe2Zvcih2YXIgcj1lLmwrYS0yLHQ9ZS5yZWFkX3NoaWZ0KDIpLG49ZS5yZWFkX3NoaWZ0KDIpLGk9W107ZS5sPHI7KWkucHVzaChncyhlKSk7aWYoZS5sIT09cil0aHJvdyBuZXcgRXJyb3IoIk11bFJLIHJlYWQgZXJyb3IiKTt2YXIgZj1lLnJlYWRfc2hpZnQoMik7aWYoaS5sZW5ndGghPWYtbisxKXRocm93IG5ldyBFcnJvcigiTXVsUksgbGVuZ3RoIG1pc21hdGNoIik7cmV0dXJue3I6dCxjOm4sQzpmLHJrcmVjOml9fWZ1bmN0aW9uIFhsKGUsYSl7Zm9yKHZhciByPWUubCthLTIsdD1lLnJlYWRfc2hpZnQoMiksbj1lLnJlYWRfc2hpZnQoMiksaT1bXTtlLmw8cjspaS5wdXNoKGUucmVhZF9zaGlmdCgyKSk7aWYoZS5sIT09cil0aHJvdyBuZXcgRXJyb3IoIk11bEJsYW5rIHJlYWQgZXJyb3IiKTt2YXIgZj1lLnJlYWRfc2hpZnQoMik7aWYoaS5sZW5ndGghPWYtbisxKXRocm93IG5ldyBFcnJvcigiTXVsQmxhbmsgbGVuZ3RoIG1pc21hdGNoIik7cmV0dXJue3I6dCxjOm4sQzpmLGl4ZmU6aX19ZnVuY3Rpb24gemwoZSxhLHIsdCl7dmFyIG49e30saT1lLnJlYWRfc2hpZnQoNCksZj1lLnJlYWRfc2hpZnQoNCkscz1lLnJlYWRfc2hpZnQoNCksYz1lLnJlYWRfc2hpZnQoMik7cmV0dXJuIG4ucGF0dGVyblR5cGU9Vm9bcz4+MjZdLG4uYWxjPWkmNyxuLmZXcmFwPWk+PjMmMSxuLmFsY1Y9aT4+NCY3LG4uZkp1c3RMYXN0PWk+PjcmMSxuLnRyb3Q9aT4+OCYyNTUsbi5jSW5kZW50PWk+PjE2JjE1LG4uZlNocmlua1RvRml0PWk+PjIwJjEsbi5pUmVhZE9yZGVyPWk+PjIyJjIsbi5mQXRyTnVtPWk+PjI2JjEsbi5mQXRyRm50PWk+PjI3JjEsbi5mQXRyQWxjPWk+PjI4JjEsbi5mQXRyQmRyPWk+PjI5JjEsbi5mQXRyUGF0PWk+PjMwJjEsbi5mQXRyUHJvdD1pPj4zMSYxLG4uZGdMZWZ0PWYmMTUsbi5kZ1JpZ2h0PWY+PjQmMTUsbi5kZ1RvcD1mPj44JjE1LG4uZGdCb3R0b209Zj4+MTImMTUsbi5pY3ZMZWZ0PWY+PjE2JjEyNyxuLmljdlJpZ2h0PWY+PjIzJjEyNyxuLmdyYml0RGlhZz1mPj4zMCYzLG4uaWN2VG9wPXMmMTI3LG4uaWN2Qm90dG9tPXM+PjcmMTI3LG4uaWN2RGlhZz1zPj4xNCYxMjcsbi5kZ0RpYWc9cz4+MjEmMTUsbi5pY3ZGb3JlPWMmMTI3LG4uaWN2QmFjaz1jPj43JjEyNyxuLmZzeEJ1dHRvbj1jPj4xNCYxLG59ZnVuY3Rpb24gJGwoZSxhLHIpe3ZhciB0PXt9O3JldHVybiB0LmlmbnQ9ZS5yZWFkX3NoaWZ0KDIpLHQubnVtRm10SWQ9ZS5yZWFkX3NoaWZ0KDIpLHQuZmxhZ3M9ZS5yZWFkX3NoaWZ0KDIpLHQubG9ja2VkPSEhKHQuZmxhZ3MmMSksdC5oaWRkZW49ISEodC5mbGFncyYyKSx0LmZTdHlsZT10LmZsYWdzPj4yJjEsdC54ZklkPXQuaXhmZVBhcmVudD10LmZsYWdzPj40JjQwOTUsYS09Nix0LmRhdGE9emwoZSxhLHQuZlN0eWxlKSx0fWZ1bmN0aW9uIEtsKGUpe3ZhciBhPXt9O3JldHVybiBhLmlmbnQ9ZS5yZWFkX3NoaWZ0KDEpLGUubCsrLGEuZmxhZ3M9ZS5yZWFkX3NoaWZ0KDEpLGEubnVtRm10SWQ9YS5mbGFncyY2MyxhLmZsYWdzPj49NixhLmZTdHlsZT0wLGEuZGF0YT17fSxhfWZ1bmN0aW9uIGpsKGUpe3ZhciBhPXt9O3JldHVybiBhLmlmbnQ9ZS5yZWFkX3NoaWZ0KDEpLGEubnVtRm10SWQ9ZS5yZWFkX3NoaWZ0KDEpLGEuZmxhZ3M9ZS5yZWFkX3NoaWZ0KDIpLGEuZlN0eWxlPWEuZmxhZ3M+PjImMSxhLmRhdGE9e30sYX1mdW5jdGlvbiBZbChlKXt2YXIgYT17fTtyZXR1cm4gYS5pZm50PWUucmVhZF9zaGlmdCgxKSxhLm51bUZtdElkPWUucmVhZF9zaGlmdCgxKSxhLmZsYWdzPWUucmVhZF9zaGlmdCgyKSxhLmZTdHlsZT1hLmZsYWdzPj4yJjEsYS5kYXRhPXt9LGF9ZnVuY3Rpb24gSmwoZSl7ZS5sKz00O3ZhciBhPVtlLnJlYWRfc2hpZnQoMiksZS5yZWFkX3NoaWZ0KDIpXTtpZihhWzBdIT09MCYmYVswXS0tLGFbMV0hPT0wJiZhWzFdLS0sYVswXT43fHxhWzFdPjcpdGhyb3cgbmV3IEVycm9yKCJCYWQgR3V0dGVyczogIithLmpvaW4oInwiKSk7cmV0dXJuIGF9ZnVuY3Rpb24gWmwoZSxhLHIpe3ZhciB0PXFyKGUsNixyKSxuPWRzKGUpO3JldHVybiB0LnZhbD1uLHQudD1uPT09ITB8fG49PT0hMT8iYiI6ImUiLHR9ZnVuY3Rpb24gcWwoZSxhLHIpe3IuYmlmZmd1ZXNzJiZyLmJpZmY9PTImJihyLmJpZmY9NSk7dmFyIHQ9cXIoZSw2LHIpLG49X3IoZSk7cmV0dXJuIHQudmFsPW4sdH12YXIgRnM9Z2w7ZnVuY3Rpb24gUWwoZSxhLHIpe3ZhciB0PWUubCthLG49ZS5yZWFkX3NoaWZ0KDIpLGk9ZS5yZWFkX3NoaWZ0KDIpO2lmKHIuc2JjY2g9aSxpPT0xMDI1fHxpPT0xNDg0OSlyZXR1cm5baSxuXTtpZihpPDF8fGk+MjU1KXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBTdXBCb29rIHR5cGU6ICIraSk7Zm9yKHZhciBmPSRhKGUsaSkscz1bXTt0PmUubDspcy5wdXNoKFB0KGUsdC1lLmwscikpO3JldHVybltpLG4sZixzXX1mdW5jdGlvbiBUcyhlLGEscil7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDIpLG4saT17ZkJ1aWx0SW46dCYxLGZXYW50QWR2aXNlOnQ+Pj4xJjEsZldhbnRQaWN0OnQ+Pj4yJjEsZk9sZTp0Pj4+MyYxLGZPbGVMaW5rOnQ+Pj40JjEsY2Y6dD4+PjUmMTAyMyxmSWNvbjp0Pj4+MTUmMX07cmV0dXJuIHIuc2JjY2g9PT0xNDg0OSYmKG49X2woZSxhLTIscikpLGkuYm9keT1ufHxlLnJlYWRfc2hpZnQoYS0yKSx0eXBlb2Ygbj09InN0cmluZyImJihpLk5hbWU9biksaX1mdW5jdGlvbiBFcyhlLGEscil7dmFyIHQ9ZS5sK2Esbj1lLnJlYWRfc2hpZnQoMiksaT1lLnJlYWRfc2hpZnQoMSksZj1lLnJlYWRfc2hpZnQoMSkscz1lLnJlYWRfc2hpZnQociYmci5iaWZmPT0yPzE6MiksYz0wOyghcnx8ci5iaWZmPj01KSYmKHIuYmlmZiE9NSYmKGUubCs9MiksYz1lLnJlYWRfc2hpZnQoMiksci5iaWZmPT01JiYoZS5sKz0yKSxlLmwrPTQpO3ZhciBvPSRhKGUsZixyKTtuJjMyJiYobz10c1tvLmNoYXJDb2RlQXQoMCldKTt2YXIgbD10LWUubDtyJiZyLmJpZmY9PTImJi0tbDt2YXIgdT10PT1lLmx8fHM9PT0wfHwhKGw+MCk/W106WngoZSxsLHIscyk7cmV0dXJue2NoS2V5OmksTmFtZTpvLGl0YWI6YyxyZ2NlOnV9fWZ1bmN0aW9uIEFzKGUsYSxyKXtpZihyLmJpZmY8OHx8IShyLmJpZmY+OCkmJmE9PWVbZS5sXSsoZVtlLmwrMV09PTM/MTowKSsxKXJldHVybiB5cyhlLGEscik7Zm9yKHZhciB0PVtdLG49ZS5sK2EsaT1lLnJlYWRfc2hpZnQoci5iaWZmPjg/NDoyKTtpLS0hPT0wOyl0LnB1c2gobWwoZSxyLmJpZmY+OD8xMjo2LHIpKTtpZihlLmwhPW4pdGhyb3cgbmV3IEVycm9yKCJCYWQgRXh0ZXJuU2hlZXQ6ICIrZS5sKyIgIT0gIituKTtyZXR1cm4gdH1mdW5jdGlvbiB5cyhlLGEscil7ZVtlLmwrMV09PTMmJmVbZS5sXSsrO3ZhciB0PXphKGUsYSxyKTtyZXR1cm4gdC5jaGFyQ29kZUF0KDApPT0zP3Quc2xpY2UoMSk6dH1mdW5jdGlvbiBldShlLGEscil7aWYoci5iaWZmPDgpe2UubCs9YTtyZXR1cm59dmFyIHQ9ZS5yZWFkX3NoaWZ0KDIpLG49ZS5yZWFkX3NoaWZ0KDIpLGk9JGEoZSx0LHIpLGY9JGEoZSxuLHIpO3JldHVybltpLGZdfWZ1bmN0aW9uIHJ1KGUsYSxyKXt2YXIgdD1tcyhlKTtlLmwrKzt2YXIgbj1lLnJlYWRfc2hpZnQoMSk7cmV0dXJuIGEtPTgsW3F4KGUsYSxyKSxuLHRdfWZ1bmN0aW9uIFNzKGUsYSxyKXt2YXIgdD1rbChlKTtzd2l0Y2goci5iaWZmKXtjYXNlIDI6ZS5sKyssYS09NzticmVhaztjYXNlIDM6Y2FzZSA0OmUubCs9MixhLT04O2JyZWFrO2RlZmF1bHQ6ZS5sKz02LGEtPTEyfXJldHVyblt0LFl4KGUsYSxyKV19ZnVuY3Rpb24gYXUoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDQpIT09MCxyPWUucmVhZF9zaGlmdCg0KSE9PTAsdD1lLnJlYWRfc2hpZnQoNCk7cmV0dXJuW2Escix0XX1mdW5jdGlvbiB0dShlLGEscil7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDIpLG49ZS5yZWFkX3NoaWZ0KDIpLGk9ZS5yZWFkX3NoaWZ0KDIpLGY9ZS5yZWFkX3NoaWZ0KDIpLHM9S2EoZSwwLHIpO3JldHVyblt7cjp0LGM6bn0scyxmLGldfWZ1bmN0aW9uIG51KGUsYSxyKXtpZihyJiZyLmJpZmY8OCl7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDIpLG49ZS5yZWFkX3NoaWZ0KDIpO2lmKHQ9PTY1NTM1fHx0PT0tMSlyZXR1cm47dmFyIGk9ZS5yZWFkX3NoaWZ0KDIpLGY9ZS5yZWFkX3NoaWZ0KE1hdGgubWluKGksMjA0OCksImNwc3RyIik7cmV0dXJuW3tyOnQsYzpufSxmXX1yZXR1cm4gdHUoZSxhLHIpfWZ1bmN0aW9uIGl1KGUsYSl7Zm9yKHZhciByPVtdLHQ9ZS5yZWFkX3NoaWZ0KDIpO3QtLTspci5wdXNoKHcwKGUpKTtyZXR1cm4gcn1mdW5jdGlvbiBzdShlLGEscil7aWYociYmci5iaWZmPDgpcmV0dXJuIGN1KGUsYSxyKTt2YXIgdD1fcyhlKSxuPUVsKGUsYS0yMix0WzFdKTtyZXR1cm57Y21vOnQsZnQ6bn19dmFyIGZ1PXs4OmZ1bmN0aW9uKGUsYSl7dmFyIHI9ZS5sK2E7ZS5sKz0xMDt2YXIgdD1lLnJlYWRfc2hpZnQoMik7ZS5sKz00LGUubCs9MixlLmwrPTIsZS5sKz0yLGUubCs9NDt2YXIgbj1lLnJlYWRfc2hpZnQoMSk7cmV0dXJuIGUubCs9bixlLmw9cix7Zm10OnR9fX07ZnVuY3Rpb24gY3UoZSxhLHIpe2UubCs9NDt2YXIgdD1lLnJlYWRfc2hpZnQoMiksbj1lLnJlYWRfc2hpZnQoMiksaT1lLnJlYWRfc2hpZnQoMik7ZS5sKz0yLGUubCs9MixlLmwrPTIsZS5sKz0yLGUubCs9MixlLmwrPTIsZS5sKz0yLGUubCs9MixlLmwrPTIsZS5sKz02LGEtPTM2O3ZhciBmPVtdO3JldHVybiBmLnB1c2goKGZ1W3RdfHx5cikoZSxhLHIpKSx7Y21vOltuLHQsaV0sZnQ6Zn19ZnVuY3Rpb24gb3UoZSxhLHIpe3ZhciB0PWUubCxuPSIiO3RyeXtlLmwrPTQ7dmFyIGk9KHIubGFzdG9ianx8e2NtbzpbMCwwXX0pLmNtb1sxXSxmO1swLDUsNywxMSwxMiwxNF0uaW5kZXhPZihpKT09LTE/ZS5sKz02OmY9dWwoZSw2LHIpO3ZhciBzPWUucmVhZF9zaGlmdCgyKTtlLnJlYWRfc2hpZnQoMiksZXIoZSwyKTt2YXIgYz1lLnJlYWRfc2hpZnQoMik7ZS5sKz1jO2Zvcih2YXIgbz0xO288ZS5sZW5zLmxlbmd0aC0xOysrbyl7aWYoZS5sLXQhPWUubGVuc1tvXSl0aHJvdyBuZXcgRXJyb3IoIlR4TzogYmFkIGNvbnRpbnVlIHJlY29yZCIpO3ZhciBsPWVbZS5sXSx1PSRhKGUsZS5sZW5zW28rMV0tZS5sZW5zW29dLTEpO2lmKG4rPXUsbi5sZW5ndGg+PShsP3M6MipzKSlicmVha31pZihuLmxlbmd0aCE9PXMmJm4ubGVuZ3RoIT09cyoyKXRocm93IG5ldyBFcnJvcigiY2NoVGV4dDogIitzKyIgIT0gIituLmxlbmd0aCk7cmV0dXJuIGUubD10K2Ese3Q6bn19Y2F0Y2h7cmV0dXJuIGUubD10K2Ese3Q6bn19fWZ1bmN0aW9uIGx1KGUsYSl7dmFyIHI9dzAoZSk7ZS5sKz0xNjt2YXIgdD12bChlLGEtMjQpO3JldHVybltyLHRdfWZ1bmN0aW9uIHV1KGUsYSl7ZS5yZWFkX3NoaWZ0KDIpO3ZhciByPXcwKGUpLHQ9ZS5yZWFkX3NoaWZ0KChhLTEwKS8yLCJkYmNzLWNvbnQiKTtyZXR1cm4gdD10LnJlcGxhY2UoU3IsIiIpLFtyLHRdfWZ1bmN0aW9uIGh1KGUpe3ZhciBhPVswLDBdLHI7cmV0dXJuIHI9ZS5yZWFkX3NoaWZ0KDIpLGFbMF09YXNbcl18fHIscj1lLnJlYWRfc2hpZnQoMiksYVsxXT1hc1tyXXx8cixhfWZ1bmN0aW9uIHh1KGUpe2Zvcih2YXIgYT1lLnJlYWRfc2hpZnQoMikscj1bXTthLS0gPjA7KXIucHVzaChwcyhlKSk7cmV0dXJuIHJ9ZnVuY3Rpb24gZHUoZSl7Zm9yKHZhciBhPWUucmVhZF9zaGlmdCgyKSxyPVtdO2EtLSA+MDspci5wdXNoKHBzKGUpKTtyZXR1cm4gcn1mdW5jdGlvbiB2dShlKXtlLmwrPTI7dmFyIGE9e2N4ZnM6MCxjcmM6MH07cmV0dXJuIGEuY3hmcz1lLnJlYWRfc2hpZnQoMiksYS5jcmM9ZS5yZWFkX3NoaWZ0KDQpLGF9ZnVuY3Rpb24gQ3MoZSxhLHIpe2lmKCFyLmNlbGxTdHlsZXMpcmV0dXJuIHlyKGUsYSk7dmFyIHQ9ciYmci5iaWZmPj0xMj80OjIsbj1lLnJlYWRfc2hpZnQodCksaT1lLnJlYWRfc2hpZnQodCksZj1lLnJlYWRfc2hpZnQodCkscz1lLnJlYWRfc2hpZnQodCksYz1lLnJlYWRfc2hpZnQoMik7dD09MiYmKGUubCs9Mik7dmFyIG89e3M6bixlOmksdzpmLGl4ZmU6cyxmbGFnczpjfTtyZXR1cm4oci5iaWZmPj01fHwhci5iaWZmKSYmKG8ubGV2ZWw9Yz4+OCY3KSxvfWZ1bmN0aW9uIHB1KGUsYSl7dmFyIHI9e307cmV0dXJuIGE8MzJ8fChlLmwrPTE2LHIuaGVhZGVyPV9yKGUpLHIuZm9vdGVyPV9yKGUpLGUubCs9Mikscn1mdW5jdGlvbiBndShlLGEscil7dmFyIHQ9e2FyZWE6ITF9O2lmKHIuYmlmZiE9NSlyZXR1cm4gZS5sKz1hLHQ7dmFyIG49ZS5yZWFkX3NoaWZ0KDEpO3JldHVybiBlLmwrPTMsbiYxNiYmKHQuYXJlYT0hMCksdH12YXIgbXU9cXIsX3U9eHMsa3U9UHQ7ZnVuY3Rpb24gd3UoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDIpLHQ9ZS5yZWFkX3NoaWZ0KDQpLG49e2ZtdDphLGVudjpyLGxlbjp0LGRhdGE6ZS5zbGljZShlLmwsZS5sK3QpfTtyZXR1cm4gZS5sKz10LG59ZnVuY3Rpb24gRnUoZSxhLHIpe3IuYmlmZmd1ZXNzJiZyLmJpZmY9PTUmJihyLmJpZmY9Mik7dmFyIHQ9cXIoZSw3LHIpLG49S2EoZSxhLTcscik7cmV0dXJuIHQudD0ic3RyIix0LnZhbD1uLHR9ZnVuY3Rpb24gVHUoZSxhLHIpe3ZhciB0PXFyKGUsNyxyKSxuPV9yKGUpO3JldHVybiB0LnQ9Im4iLHQudmFsPW4sdH1mdW5jdGlvbiBFdShlLGEscil7dmFyIHQ9cXIoZSw3LHIpLG49ZS5yZWFkX3NoaWZ0KDIpO3JldHVybiB0LnQ9Im4iLHQudmFsPW4sdH1mdW5jdGlvbiBBdShlKXt2YXIgYT1lLnJlYWRfc2hpZnQoMSk7cmV0dXJuIGE9PT0wPyhlLmwrKywiIik6ZS5yZWFkX3NoaWZ0KGEsInNiY3MtY29udCIpfWZ1bmN0aW9uIHl1KGUsYSxyKXt2YXIgdD1lLmwrNyxuPXFyKGUsNixyKTtlLmw9dDt2YXIgaT1kcyhlKTtyZXR1cm4gbi52YWw9aSxuLnQ9aT09PSEwfHxpPT09ITE/ImIiOiJlIixufWZ1bmN0aW9uIFN1KGUsYSl7ZS5sKz02LGUubCs9MixlLmwrPTEsZS5sKz0zLGUubCs9MSxlLmwrPWEtMTN9ZnVuY3Rpb24gQ3UoZSxhLHIpe3ZhciB0PWUubCthLG49cXIoZSw2LHIpLGk9ZS5yZWFkX3NoaWZ0KDIpLGY9JGEoZSxpLHIpO3JldHVybiBlLmw9dCxuLnQ9InN0ciIsbi52YWw9ZixufWZ1bmN0aW9uIGJ1KGUpe3ZhciBhPWUucmVhZF9zaGlmdCg0KSxyPWUucmVhZF9zaGlmdCgxKSx0PWUucmVhZF9zaGlmdChyLCJzYmNzIik7cmV0dXJuIHQubGVuZ3RoPT09MCYmKHQ9IlNoZWV0MSIpLHtmbGFnczphLG5hbWU6dH19dmFyIEl1PVsyLDMsNDgsNDksMTMxLDEzOSwxNDAsMjQ1XSxicz1mdW5jdGlvbigpe3ZhciBlPXsxOjQzNywyOjg1MCwzOjEyNTIsNDoxZTQsMTAwOjg1MiwxMDE6ODY2LDEwMjo4NjUsMTAzOjg2MSwxMDQ6ODk1LDEwNTo2MjAsMTA2OjczNywxMDc6ODU3LDEyMDo5NTAsMTIxOjk0OSwxMjI6OTM2LDEyMzo5MzIsMTI0Ojg3NCwxMjU6MTI1NSwxMjY6MTI1NiwxNTA6MTAwMDcsMTUxOjEwMDI5LDE1MjoxMDAwNiwyMDA6MTI1MCwyMDE6MTI1MSwyMDI6MTI1NCwyMDM6MTI1MywwOjIwMTI3LDg6ODY1LDk6NDM3LDEwOjg1MCwxMTo0MzcsMTM6NDM3LDE0Ojg1MCwxNTo0MzcsMTY6ODUwLDE3OjQzNywxODo4NTAsMTk6OTMyLDIwOjg1MCwyMTo0MzcsMjI6ODUwLDIzOjg2NSwyNDo0MzcsMjU6NDM3LDI2Ojg1MCwyNzo0MzcsMjg6ODYzLDI5Ojg1MCwzMTo4NTIsMzQ6ODUyLDM1Ojg1MiwzNjo4NjAsMzc6ODUwLDM4Ojg2Niw1NTo4NTAsNjQ6ODUyLDc3OjkzNiw3ODo5NDksNzk6OTUwLDgwOjg3NCw4NzoxMjUyLDg4OjEyNTIsODk6MTI1MiwxMDg6ODYzLDEzNDo3MzcsMTM1Ojg1MiwxMzY6ODU3LDIwNDoxMjU3LDI1NToxNjk2OX0sYT1KMCh7MTo0MzcsMjo4NTAsMzoxMjUyLDQ6MWU0LDEwMDo4NTIsMTAxOjg2NiwxMDI6ODY1LDEwMzo4NjEsMTA0Ojg5NSwxMDU6NjIwLDEwNjo3MzcsMTA3Ojg1NywxMjA6OTUwLDEyMTo5NDksMTIyOjkzNiwxMjM6OTMyLDEyNDo4NzQsMTI1OjEyNTUsMTI2OjEyNTYsMTUwOjEwMDA3LDE1MToxMDAyOSwxNTI6MTAwMDYsMjAwOjEyNTAsMjAxOjEyNTEsMjAyOjEyNTQsMjAzOjEyNTMsMDoyMDEyN30pO2Z1bmN0aW9uIHIocyxjKXt2YXIgbz1bXSxsPUFhKDEpO3N3aXRjaChjLnR5cGUpe2Nhc2UiYmFzZTY0IjpsPURyKElyKHMpKTticmVhaztjYXNlImJpbmFyeSI6bD1EcihzKTticmVhaztjYXNlImJ1ZmZlciI6Y2FzZSJhcnJheSI6bD1zO2JyZWFrfXNyKGwsMCk7dmFyIHU9bC5yZWFkX3NoaWZ0KDEpLHg9ISEodSYxMzYpLGg9ITEsZz0hMTtzd2l0Y2godSl7Y2FzZSAyOmJyZWFrO2Nhc2UgMzpicmVhaztjYXNlIDQ4Omg9ITAseD0hMDticmVhaztjYXNlIDQ5Omg9ITAseD0hMDticmVhaztjYXNlIDEzMTpicmVhaztjYXNlIDEzOTpicmVhaztjYXNlIDE0MDpnPSEwO2JyZWFrO2Nhc2UgMjQ1OmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJEQkYgVW5zdXBwb3J0ZWQgVmVyc2lvbjogIit1LnRvU3RyaW5nKDE2KSl9dmFyIG09MCxkPTUyMTt1PT0yJiYobT1sLnJlYWRfc2hpZnQoMikpLGwubCs9Myx1IT0yJiYobT1sLnJlYWRfc2hpZnQoNCkpLG0+MTA0ODU3NiYmKG09MWU2KSx1IT0yJiYoZD1sLnJlYWRfc2hpZnQoMikpO3ZhciBwPWwucmVhZF9zaGlmdCgyKTtjLmNvZGVwYWdlLHUhPTImJihsLmwrPTE2LGwucmVhZF9zaGlmdCgxKSxsW2wubF0hPT0wJiZlW2xbbC5sXV0sbC5sKz0xLGwubCs9MiksZyYmKGwubCs9MzYpO2Zvcih2YXIgdz1bXSxfPXt9LHk9TWF0aC5taW4obC5sZW5ndGgsdT09Mj81MjE6ZC0xMC0oaD8yNjQ6MCkpLFI9Zz8zMjoxMTtsLmw8eSYmbFtsLmxdIT0xMzspc3dpdGNoKF89e30sXy5uYW1lPWZhKGwuc2xpY2UobC5sLGwubCtSKSkucmVwbGFjZSgvW1x1MDAwMFxyXG5dW1xTXHNdKiQvZywiIiksbC5sKz1SLF8udHlwZT1TdHJpbmcuZnJvbUNoYXJDb2RlKGwucmVhZF9zaGlmdCgxKSksdSE9MiYmIWcmJihfLm9mZnNldD1sLnJlYWRfc2hpZnQoNCkpLF8ubGVuPWwucmVhZF9zaGlmdCgxKSx1PT0yJiYoXy5vZmZzZXQ9bC5yZWFkX3NoaWZ0KDIpKSxfLmRlYz1sLnJlYWRfc2hpZnQoMSksXy5uYW1lLmxlbmd0aCYmdy5wdXNoKF8pLHUhPTImJihsLmwrPWc/MTM6MTQpLF8udHlwZSl7Y2FzZSJCIjooIWh8fF8ubGVuIT04KSYmYy5XVEYmJmNvbnNvbGUubG9nKCJTa2lwcGluZyAiK18ubmFtZSsiOiIrXy50eXBlKTticmVhaztjYXNlIkciOmNhc2UiUCI6Yy5XVEYmJmNvbnNvbGUubG9nKCJTa2lwcGluZyAiK18ubmFtZSsiOiIrXy50eXBlKTticmVhaztjYXNlIisiOmNhc2UiMCI6Y2FzZSJAIjpjYXNlIkMiOmNhc2UiRCI6Y2FzZSJGIjpjYXNlIkkiOmNhc2UiTCI6Y2FzZSJNIjpjYXNlIk4iOmNhc2UiTyI6Y2FzZSJUIjpjYXNlIlkiOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIEZpZWxkIFR5cGU6ICIrXy50eXBlKX1pZihsW2wubF0hPT0xMyYmKGwubD1kLTEpLGwucmVhZF9zaGlmdCgxKSE9PTEzKXRocm93IG5ldyBFcnJvcigiREJGIFRlcm1pbmF0b3Igbm90IGZvdW5kICIrbC5sKyIgIitsW2wubF0pO2wubD1kO3ZhciBQPTAsYj0wO2ZvcihvWzBdPVtdLGI9MDtiIT13Lmxlbmd0aDsrK2Ipb1swXVtiXT13W2JdLm5hbWU7Zm9yKDttLS0gPjA7KXtpZihsW2wubF09PT00Mil7bC5sKz1wO2NvbnRpbnVlfWZvcigrK2wubCxvWysrUF09W10sYj0wLGI9MDtiIT13Lmxlbmd0aDsrK2Ipe3ZhciBOPWwuc2xpY2UobC5sLGwubCt3W2JdLmxlbik7bC5sKz13W2JdLmxlbixzcihOLDApO3ZhciBJPWZhKE4pO3N3aXRjaCh3W2JdLnR5cGUpe2Nhc2UiQyI6SS50cmltKCkubGVuZ3RoJiYob1tQXVtiXT1JLnJlcGxhY2UoLyhbXlxzXSlccyskLywiJDEiKSk7YnJlYWs7Y2FzZSJEIjpJLmxlbmd0aD09PTg/KG9bUF1bYl09bmV3IERhdGUoRGF0ZS5VVEMoK0kuc2xpY2UoMCw0KSwrSS5zbGljZSg0LDYpLTEsK0kuc2xpY2UoNiw4KSwwLDAsMCwwKSksYyYmYy5VVEN8fChvW1BdW2JdPVVhKG9bUF1bYl0pKSk6b1tQXVtiXT1JO2JyZWFrO2Nhc2UiRiI6b1tQXVtiXT1wYXJzZUZsb2F0KEkudHJpbSgpKTticmVhaztjYXNlIisiOmNhc2UiSSI6b1tQXVtiXT1nP04ucmVhZF9zaGlmdCgtNCwiaSIpXjIxNDc0ODM2NDg6Ti5yZWFkX3NoaWZ0KDQsImkiKTticmVhaztjYXNlIkwiOnN3aXRjaChJLnRyaW0oKS50b1VwcGVyQ2FzZSgpKXtjYXNlIlkiOmNhc2UiVCI6b1tQXVtiXT0hMDticmVhaztjYXNlIk4iOmNhc2UiRiI6b1tQXVtiXT0hMTticmVhaztjYXNlIiI6Y2FzZSJcMCI6Y2FzZSI/IjpicmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiREJGIFVucmVjb2duaXplZCBMOnwiK0krInwiKX1icmVhaztjYXNlIk0iOmlmKCF4KXRocm93IG5ldyBFcnJvcigiREJGIFVuZXhwZWN0ZWQgTUVNTyBmb3IgdHlwZSAiK3UudG9TdHJpbmcoMTYpKTtvW1BdW2JdPSIjI01FTU8jIyIrKGc/cGFyc2VJbnQoSS50cmltKCksMTApOk4ucmVhZF9zaGlmdCg0KSk7YnJlYWs7Y2FzZSJOIjpJPUkucmVwbGFjZSgvXHUwMDAwL2csIiIpLnRyaW0oKSxJJiZJIT0iLiImJihvW1BdW2JdPStJfHwwKTticmVhaztjYXNlIkAiOm9bUF1bYl09bmV3IERhdGUoTi5yZWFkX3NoaWZ0KC04LCJmIiktNjIxMzU2ODMyZTUpO2JyZWFrO2Nhc2UiVCI6e3ZhciBCPU4ucmVhZF9zaGlmdCg0KSxMPU4ucmVhZF9zaGlmdCg0KTtpZihCPT0wJiZMPT0wKWJyZWFrO29bUF1bYl09bmV3IERhdGUoKEItMjQ0MDU4OCkqODY0ZTUrTCksYyYmYy5VVEN8fChvW1BdW2JdPVVhKG9bUF1bYl0pKX1icmVhaztjYXNlIlkiOm9bUF1bYl09Ti5yZWFkX3NoaWZ0KDQsImkiKS8xZTQrTi5yZWFkX3NoaWZ0KDQsImkiKS8xZTQqTWF0aC5wb3coMiwzMik7YnJlYWs7Y2FzZSJPIjpvW1BdW2JdPS1OLnJlYWRfc2hpZnQoLTgsImYiKTticmVhaztjYXNlIkIiOmlmKGgmJndbYl0ubGVuPT04KXtvW1BdW2JdPU4ucmVhZF9zaGlmdCg4LCJmIik7YnJlYWt9Y2FzZSJHIjpjYXNlIlAiOk4ubCs9d1tiXS5sZW47YnJlYWs7Y2FzZSIwIjppZih3W2JdLm5hbWU9PT0iX051bGxGbGFncyIpYnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkRCRiBVbnN1cHBvcnRlZCBkYXRhIHR5cGUgIit3W2JdLnR5cGUpfX19aWYodSE9MiYmbC5sPGwubGVuZ3RoJiZsW2wubCsrXSE9MjYpdGhyb3cgbmV3IEVycm9yKCJEQkYgRU9GIE1hcmtlciBtaXNzaW5nICIrKGwubC0xKSsiIG9mICIrbC5sZW5ndGgrIiAiK2xbbC5sLTFdLnRvU3RyaW5nKDE2KSk7cmV0dXJuIGMmJmMuc2hlZXRSb3dzJiYobz1vLnNsaWNlKDAsYy5zaGVldFJvd3MpKSxjLkRCRj13LG99ZnVuY3Rpb24gdChzLGMpe3ZhciBvPWN8fHt9O28uZGF0ZU5GfHwoby5kYXRlTkY9Inl5eXltbWRkIik7dmFyIGw9Y3QocihzLG8pLG8pO3JldHVybiBsWyIhY29scyJdPW8uREJGLm1hcChmdW5jdGlvbih1KXtyZXR1cm57d2NoOnUubGVuLERCRjp1fX0pLGRlbGV0ZSBvLkRCRixsfWZ1bmN0aW9uIG4ocyxjKXt0cnl7dmFyIG89Q2EodChzLGMpLGMpO3JldHVybiBvLmJvb2tUeXBlPSJkYmYiLG99Y2F0Y2gobCl7aWYoYyYmYy5XVEYpdGhyb3cgbH1yZXR1cm57U2hlZXROYW1lczpbXSxTaGVldHM6e319fXZhciBpPXtCOjgsQzoyNTAsTDoxLEQ6OCwiPyI6MCwiIjowfTtmdW5jdGlvbiBmKHMsYyl7aWYoIXNbIiFyZWYiXSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBleHBvcnQgZW1wdHkgc2hlZXQgdG8gREJGIik7dmFyIG89Y3x8e30sbD1IcjtpZigrby5jb2RlcGFnZT49MCYmWXIoK28uY29kZXBhZ2UpLG8udHlwZT09InN0cmluZyIpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgd3JpdGUgREJGIHRvIEpTIHN0cmluZyIpO3ZhciB1PWFuKCkseD1ObihzLHtoZWFkZXI6MSxyYXc6ITAsY2VsbERhdGVzOiEwfSksaD14WzBdLGc9eC5zbGljZSgxKSxtPXNbIiFjb2xzIl18fFtdLGQ9MCxwPTAsdz0wLF89MTtmb3IoZD0wO2Q8aC5sZW5ndGg7KytkKXtpZigoKG1bZF18fHt9KS5EQkZ8fHt9KS5uYW1lKXtoW2RdPW1bZF0uREJGLm5hbWUsKyt3O2NvbnRpbnVlfWlmKGhbZF0hPW51bGwpe2lmKCsrdyx0eXBlb2YgaFtkXT09Im51bWJlciImJihoW2RdPWhbZF0udG9TdHJpbmcoMTApKSx0eXBlb2YgaFtkXSE9InN0cmluZyIpdGhyb3cgbmV3IEVycm9yKCJEQkYgSW52YWxpZCBjb2x1bW4gbmFtZSAiK2hbZF0rIiB8Iit0eXBlb2YgaFtkXSsifCIpO2lmKGguaW5kZXhPZihoW2RdKSE9PWQpe2ZvcihwPTA7cDwxMDI0OysrcClpZihoLmluZGV4T2YoaFtkXSsiXyIrcCk9PS0xKXtoW2RdKz0iXyIrcDticmVha319fX12YXIgeT1aZShzWyIhcmVmIl0pLFI9W10sUD1bXSxiPVtdO2ZvcihkPTA7ZDw9eS5lLmMteS5zLmM7KytkKXt2YXIgTj0iIixJPSIiLEI9MCxMPVtdO2ZvcihwPTA7cDxnLmxlbmd0aDsrK3ApZ1twXVtkXSE9bnVsbCYmTC5wdXNoKGdbcF1bZF0pO2lmKEwubGVuZ3RoPT0wfHxoW2RdPT1udWxsKXtSW2RdPSI/Ijtjb250aW51ZX1mb3IocD0wO3A8TC5sZW5ndGg7KytwKXtzd2l0Y2godHlwZW9mIExbcF0pe2Nhc2UibnVtYmVyIjpJPSJCIjticmVhaztjYXNlInN0cmluZyI6ST0iQyI7YnJlYWs7Y2FzZSJib29sZWFuIjpJPSJMIjticmVhaztjYXNlIm9iamVjdCI6ST1MW3BdaW5zdGFuY2VvZiBEYXRlPyJEIjoiQyI7YnJlYWs7ZGVmYXVsdDpJPSJDIn1CPU1hdGgubWF4KEIsU3RyaW5nKExbcF0pLmxlbmd0aCksTj1OJiZOIT1JPyJDIjpJfUI+MjUwJiYoQj0yNTApLEk9KChtW2RdfHx7fSkuREJGfHx7fSkudHlwZSxJPT0iQyImJm1bZF0uREJGLmxlbj5CJiYoQj1tW2RdLkRCRi5sZW4pLE49PSJCIiYmST09Ik4iJiYoTj0iTiIsYltkXT1tW2RdLkRCRi5kZWMsQj1tW2RdLkRCRi5sZW4pLFBbZF09Tj09IkMifHxJPT0iTiI/QjppW05dfHwwLF8rPVBbZF0sUltkXT1OfXZhciBHPXUubmV4dCgzMik7Zm9yKEcud3JpdGVfc2hpZnQoNCwzMTg5MDI1NzYpLEcud3JpdGVfc2hpZnQoNCxnLmxlbmd0aCksRy53cml0ZV9zaGlmdCgyLDI5NiszMip3KSxHLndyaXRlX3NoaWZ0KDIsXyksZD0wO2Q8NDsrK2QpRy53cml0ZV9zaGlmdCg0LDApO3ZhciBpZT0rYVtIcl18fDM7Zm9yKEcud3JpdGVfc2hpZnQoNCwwfGllPDw4KSxlW2llXSE9K28uY29kZXBhZ2UmJihvLmNvZGVwYWdlJiZjb25zb2xlLmVycm9yKCJEQkYgVW5zdXBwb3J0ZWQgY29kZXBhZ2UgIitIcisiLCB1c2luZyAxMjUyIiksSHI9MTI1MiksZD0wLHA9MDtkPGgubGVuZ3RoOysrZClpZihoW2RdIT1udWxsKXt2YXIgbmU9dS5uZXh0KDMyKSxxPShoW2RdLnNsaWNlKC0xMCkrIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiKS5zbGljZSgwLDExKTtuZS53cml0ZV9zaGlmdCgxLHEsInNiY3MiKSxuZS53cml0ZV9zaGlmdCgxLFJbZF09PSI/Ij8iQyI6UltkXSwic2JjcyIpLG5lLndyaXRlX3NoaWZ0KDQscCksbmUud3JpdGVfc2hpZnQoMSxQW2RdfHxpW1JbZF1dfHwwKSxuZS53cml0ZV9zaGlmdCgxLGJbZF18fDApLG5lLndyaXRlX3NoaWZ0KDEsMiksbmUud3JpdGVfc2hpZnQoNCwwKSxuZS53cml0ZV9zaGlmdCgxLDApLG5lLndyaXRlX3NoaWZ0KDQsMCksbmUud3JpdGVfc2hpZnQoNCwwKSxwKz1QW2RdfHxpW1JbZF1dfHwwfXZhciBsZT11Lm5leHQoMjY0KTtmb3IobGUud3JpdGVfc2hpZnQoNCwxMyksZD0wO2Q8NjU7KytkKWxlLndyaXRlX3NoaWZ0KDQsMCk7Zm9yKGQ9MDtkPGcubGVuZ3RoOysrZCl7dmFyIFE9dS5uZXh0KF8pO2ZvcihRLndyaXRlX3NoaWZ0KDEsMCkscD0wO3A8aC5sZW5ndGg7KytwKWlmKGhbcF0hPW51bGwpc3dpdGNoKFJbcF0pe2Nhc2UiTCI6US53cml0ZV9zaGlmdCgxLGdbZF1bcF09PW51bGw/NjM6Z1tkXVtwXT84NDo3MCk7YnJlYWs7Y2FzZSJCIjpRLndyaXRlX3NoaWZ0KDgsZ1tkXVtwXXx8MCwiZiIpO2JyZWFrO2Nhc2UiTiI6dmFyIGdlPSIwIjtmb3IodHlwZW9mIGdbZF1bcF09PSJudW1iZXIiJiYoZ2U9Z1tkXVtwXS50b0ZpeGVkKGJbcF18fDApKSxnZS5sZW5ndGg+UFtwXSYmKGdlPWdlLnNsaWNlKDAsUFtwXSkpLHc9MDt3PFBbcF0tZ2UubGVuZ3RoOysrdylRLndyaXRlX3NoaWZ0KDEsMzIpO1Eud3JpdGVfc2hpZnQoMSxnZSwic2JjcyIpO2JyZWFrO2Nhc2UiRCI6Z1tkXVtwXT8oUS53cml0ZV9zaGlmdCg0LCgiMDAwMCIrZ1tkXVtwXS5nZXRGdWxsWWVhcigpKS5zbGljZSgtNCksInNiY3MiKSxRLndyaXRlX3NoaWZ0KDIsKCIwMCIrKGdbZF1bcF0uZ2V0TW9udGgoKSsxKSkuc2xpY2UoLTIpLCJzYmNzIiksUS53cml0ZV9zaGlmdCgyLCgiMDAiK2dbZF1bcF0uZ2V0RGF0ZSgpKS5zbGljZSgtMiksInNiY3MiKSk6US53cml0ZV9zaGlmdCg4LCIwMDAwMDAwMCIsInNiY3MiKTticmVhaztjYXNlIkMiOnZhciB1ZT1RLmwsaj1TdHJpbmcoZ1tkXVtwXSE9bnVsbD9nW2RdW3BdOiIiKS5zbGljZSgwLFBbcF0pO2ZvcihRLndyaXRlX3NoaWZ0KDEsaiwiY3BzdHIiKSx1ZSs9UFtwXS1RLmwsdz0wO3c8dWU7Kyt3KVEud3JpdGVfc2hpZnQoMSwzMik7YnJlYWt9fXJldHVybiBIcj1sLHUubmV4dCgxKS53cml0ZV9zaGlmdCgxLDI2KSx1LmVuZCgpfXJldHVybnt0b193b3JrYm9vazpuLHRvX3NoZWV0OnQsZnJvbV9zaGVldDpmfX0oKSxEdT1mdW5jdGlvbigpe3ZhciBlPXtBQToiw4AiLEJBOiLDgSIsQ0E6IsOCIixEQToxOTUsSEE6IsOEIixKQToxOTcsQUU6IsOIIixCRToiw4kiLENFOiLDiiIsSEU6IsOLIixBSToiw4wiLEJJOiLDjSIsQ0k6IsOOIixISToiw48iLEFPOiLDkiIsQk86IsOTIixDTzoiw5QiLERPOjIxMyxITzoiw5YiLEFVOiLDmSIsQlU6IsOaIixDVToiw5siLEhVOiLDnCIsQWE6IsOgIixCYToiw6EiLENhOiLDoiIsRGE6MjI3LEhhOiLDpCIsSmE6MjI5LEFlOiLDqCIsQmU6IsOpIixDZToiw6oiLEhlOiLDqyIsQWk6IsOsIixCaToiw60iLENpOiLDriIsSGk6IsOvIixBbzoiw7IiLEJvOiLDsyIsQ286IsO0IixEbzoyNDUsSG86IsO2IixBdToiw7kiLEJ1OiLDuiIsQ3U6IsO7IixIdToiw7wiLEtDOiLDhyIsS2M6IsOnIixxOiLDpiIsejoixZMiLGE6IsOGIixqOiLFkiIsRE46MjA5LERuOjI0MSxIeToyNTUsUzoxNjksYzoxNzAsUjoxNzQsIkIgIjoxODAsMDoxNzYsMToxNzcsMjoxNzgsMzoxNzksNToxODEsNjoxODIsNzoxODMsUToxODUsazoxODYsYjoyMDgsaToyMTYsbDoyMjIsczoyNDAseToyNDgsIiEiOjE2MSwnIic6MTYyLCIjIjoxNjMsIigiOjE2NCwiJSI6MTY1LCInIjoxNjcsIkggIjoxNjgsIisiOjE3MSwiOyI6MTg3LCI8IjoxODgsIj0iOjE4OSwiPiI6MTkwLCI/IjoxOTEsInsiOjIyM30sYT1uZXcgUmVnRXhwKCJceDFCTigiK3ByKGUpLmpvaW4oInwiKS5yZXBsYWNlKC9cfFx8XHwvLCJ8XFx8fCIpLnJlcGxhY2UoLyhbPygpK10pL2csIlxcJDEiKS5yZXBsYWNlKCJ7IiwiXFx7IikrInxcXHwpIiwiZ20iKTt0cnl7YT1uZXcgUmVnRXhwKCJceDFCTigiK3ByKGUpLmpvaW4oInwiKS5yZXBsYWNlKC9cfFx8XHwvLCJ8XFx8fCIpLnJlcGxhY2UoLyhbPygpK10pL2csIlxcJDEiKSsifFxcfCkiLCJnbSIpfWNhdGNoe312YXIgcj1mdW5jdGlvbihoLGcpe3ZhciBtPWVbZ107cmV0dXJuIHR5cGVvZiBtPT0ibnVtYmVyIj8kbihtKTptfSx0PWZ1bmN0aW9uKGgsZyxtKXt2YXIgZD1nLmNoYXJDb2RlQXQoMCktMzI8PDR8bS5jaGFyQ29kZUF0KDApLTQ4O3JldHVybiBkPT01OT9oOiRuKGQpfTtlWyJ8Il09MjU0O3ZhciBuPWZ1bmN0aW9uKGgpe3JldHVybiBoLnJlcGxhY2UoL1xuL2csIlx4MUIgOiIpLnJlcGxhY2UoL1xyL2csIlx4MUIgPSIpfTtmdW5jdGlvbiBpKGgsZyl7c3dpdGNoKGcudHlwZSl7Y2FzZSJiYXNlNjQiOnJldHVybiBmKElyKGgpLGcpO2Nhc2UiYmluYXJ5IjpyZXR1cm4gZihoLGcpO2Nhc2UiYnVmZmVyIjpyZXR1cm4gZihOZSYmQnVmZmVyLmlzQnVmZmVyKGgpP2gudG9TdHJpbmcoImJpbmFyeSIpOmZhKGgpLGcpO2Nhc2UiYXJyYXkiOnJldHVybiBmKEJhKGgpLGcpfXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHR5cGUgIitnLnR5cGUpfWZ1bmN0aW9uIGYoaCxnKXt2YXIgbT1oLnNwbGl0KC9bXG5ccl0rLyksZD0tMSxwPS0xLHc9MCxfPTAseT1bXSxSPVtdLFA9bnVsbCxiPXt9LE49W10sST1bXSxCPVtdLEw9MCxHLGllPXtXb3JrYm9vazp7V0JQcm9wczp7fSxOYW1lczpbXX19O2ZvcigrZy5jb2RlcGFnZT49MCYmWXIoK2cuY29kZXBhZ2UpO3chPT1tLmxlbmd0aDsrK3cpe0w9MDt2YXIgbmU9bVt3XS50cmltKCkucmVwbGFjZSgvXHgxQihbXHgyMC1ceDJGXSkoW1x4MzAtXHgzRl0pL2csdCkucmVwbGFjZShhLHIpLHE9bmUucmVwbGFjZSgvOzsvZywiXDAiKS5zcGxpdCgiOyIpLm1hcChmdW5jdGlvbihEKXtyZXR1cm4gRC5yZXBsYWNlKC9cdTAwMDAvZywiOyIpfSksbGU9cVswXSxRO2lmKG5lLmxlbmd0aD4wKXN3aXRjaChsZSl7Y2FzZSJJRCI6YnJlYWs7Y2FzZSJFIjpicmVhaztjYXNlIkIiOmJyZWFrO2Nhc2UiTyI6Zm9yKF89MTtfPHEubGVuZ3RoOysrXylzd2l0Y2gocVtfXS5jaGFyQXQoMCkpe2Nhc2UiViI6e3ZhciBnZT1wYXJzZUludChxW19dLnNsaWNlKDEpLDEwKTtnZT49MSYmZ2U8PTQmJihpZS5Xb3JrYm9vay5XQlByb3BzLmRhdGUxOTA0PSEwKX1icmVha31icmVhaztjYXNlIlciOmJyZWFrO2Nhc2UiUCI6c3dpdGNoKHFbMV0uY2hhckF0KDApKXtjYXNlIlAiOlIucHVzaChuZS5zbGljZSgzKS5yZXBsYWNlKC87Oy9nLCI7IikpO2JyZWFrfWJyZWFrO2Nhc2UiTk4iOnt2YXIgdWU9e1NoZWV0OjB9O2ZvcihfPTE7XzxxLmxlbmd0aDsrK18pc3dpdGNoKHFbX10uY2hhckF0KDApKXtjYXNlIk4iOnVlLk5hbWU9cVtfXS5zbGljZSgxKTticmVhaztjYXNlIkUiOnVlLlJlZj0oZyYmZy5zaGVldHx8IlNoZWV0MSIpKyIhIitxYShxW19dLnNsaWNlKDEpKTticmVha31pZS5Xb3JrYm9vay5OYW1lcy5wdXNoKHVlKX1icmVhaztjYXNlIkMiOnZhciBqPSExLHllPSExLGJlPSExLG1lPSExLFo9LTEsT2U9LTEsd2U9IiIsQWU9InoiLEE9IiI7Zm9yKF89MTtfPHEubGVuZ3RoOysrXylzd2l0Y2gocVtfXS5jaGFyQXQoMCkpe2Nhc2UiQSI6QT1xW19dLnNsaWNlKDEpO2JyZWFrO2Nhc2UiWCI6cD1wYXJzZUludChxW19dLnNsaWNlKDEpLDEwKS0xLHllPSEwO2JyZWFrO2Nhc2UiWSI6Zm9yKGQ9cGFyc2VJbnQocVtfXS5zbGljZSgxKSwxMCktMSx5ZXx8KHA9MCksRz15Lmxlbmd0aDtHPD1kOysrRyl5W0ddPVtdO2JyZWFrO2Nhc2UiSyI6UT1xW19dLnNsaWNlKDEpLFEuY2hhckF0KDApPT09JyInPyhRPVEuc2xpY2UoMSxRLmxlbmd0aC0xKSxBZT0icyIpOlE9PT0iVFJVRSJ8fFE9PT0iRkFMU0UiPyhRPVE9PT0iVFJVRSIsQWU9ImIiKTpRLmNoYXJBdCgwKT09IiMiJiZkcltRXSE9bnVsbD8oQWU9ImUiLFE9ZHJbUV0pOmlzTmFOKE9yKFEpKXx8KFE9T3IoUSksQWU9Im4iLFAhPT1udWxsJiZacihQKSYmZy5jZWxsRGF0ZXMmJihRPVNhKGllLldvcmtib29rLldCUHJvcHMuZGF0ZTE5MDQ/USsxNDYyOlEpLEFlPXR5cGVvZiBRPT0ibnVtYmVyIj8ibiI6ImQiKSksaj0hMDticmVhaztjYXNlIkUiOm1lPSEwLHdlPXFhKHFbX10uc2xpY2UoMSkse3I6ZCxjOnB9KTticmVhaztjYXNlIlMiOmJlPSEwO2JyZWFrO2Nhc2UiRyI6YnJlYWs7Y2FzZSJSIjpaPXBhcnNlSW50KHFbX10uc2xpY2UoMSksMTApLTE7YnJlYWs7Y2FzZSJDIjpPZT1wYXJzZUludChxW19dLnNsaWNlKDEpLDEwKS0xO2JyZWFrO2RlZmF1bHQ6aWYoZyYmZy5XVEYpdGhyb3cgbmV3IEVycm9yKCJTWUxLIGJhZCByZWNvcmQgIituZSl9aWYoaiYmKHlbZF1bcF0/KHlbZF1bcF0udD1BZSx5W2RdW3BdLnY9USk6eVtkXVtwXT17dDpBZSx2OlF9LFAmJih5W2RdW3BdLno9UCksZy5jZWxsVGV4dCE9PSExJiZQJiYoeVtkXVtwXS53PVJyKHlbZF1bcF0ueix5W2RdW3BdLnYse2RhdGUxOTA0OmllLldvcmtib29rLldCUHJvcHMuZGF0ZTE5MDR9KSksUD1udWxsKSxiZSl7aWYobWUpdGhyb3cgbmV3IEVycm9yKCJTWUxLIHNoYXJlZCBmb3JtdWxhIGNhbm5vdCBoYXZlIG93biBmb3JtdWxhIik7dmFyIFU9Wj4tMSYmeVtaXVtPZV07aWYoIVV8fCFVWzFdKXRocm93IG5ldyBFcnJvcigiU1lMSyBzaGFyZWQgZm9ybXVsYSBjYW5ub3QgZmluZCBiYXNlIik7d2U9WXMoVVsxXSx7cjpkLVosYzpwLU9lfSl9d2UmJih5W2RdW3BdP3lbZF1bcF0uZj13ZTp5W2RdW3BdPXt0OiJuIixmOndlfSksQSYmKHlbZF1bcF18fCh5W2RdW3BdPXt0OiJ6In0pLHlbZF1bcF0uYz1be2E6IlNoZWV0SlNZTEsiLHQ6QX1dKTticmVhaztjYXNlIkYiOnZhciBPPTA7Zm9yKF89MTtfPHEubGVuZ3RoOysrXylzd2l0Y2gocVtfXS5jaGFyQXQoMCkpe2Nhc2UiWCI6cD1wYXJzZUludChxW19dLnNsaWNlKDEpLDEwKS0xLCsrTzticmVhaztjYXNlIlkiOmZvcihkPXBhcnNlSW50KHFbX10uc2xpY2UoMSksMTApLTEsRz15Lmxlbmd0aDtHPD1kOysrRyl5W0ddPVtdO2JyZWFrO2Nhc2UiTSI6TD1wYXJzZUludChxW19dLnNsaWNlKDEpLDEwKS8yMDticmVhaztjYXNlIkYiOmJyZWFrO2Nhc2UiRyI6YnJlYWs7Y2FzZSJQIjpQPVJbcGFyc2VJbnQocVtfXS5zbGljZSgxKSwxMCldO2JyZWFrO2Nhc2UiUyI6YnJlYWs7Y2FzZSJEIjpicmVhaztjYXNlIk4iOmJyZWFrO2Nhc2UiVyI6Zm9yKEI9cVtfXS5zbGljZSgxKS5zcGxpdCgiICIpLEc9cGFyc2VJbnQoQlswXSwxMCk7Rzw9cGFyc2VJbnQoQlsxXSwxMCk7KytHKUw9cGFyc2VJbnQoQlsyXSwxMCksSVtHLTFdPUw9PT0wP3toaWRkZW46ITB9Ont3Y2g6TH07YnJlYWs7Y2FzZSJDIjpwPXBhcnNlSW50KHFbX10uc2xpY2UoMSksMTApLTEsSVtwXXx8KElbcF09e30pO2JyZWFrO2Nhc2UiUiI6ZD1wYXJzZUludChxW19dLnNsaWNlKDEpLDEwKS0xLE5bZF18fChOW2RdPXt9KSxMPjA/KE5bZF0uaHB0PUwsTltkXS5ocHg9VXQoTCkpOkw9PT0wJiYoTltkXS5oaWRkZW49ITApO2JyZWFrO2RlZmF1bHQ6aWYoZyYmZy5XVEYpdGhyb3cgbmV3IEVycm9yKCJTWUxLIGJhZCByZWNvcmQgIituZSl9TzwxJiYoUD1udWxsKTticmVhaztkZWZhdWx0OmlmKGcmJmcuV1RGKXRocm93IG5ldyBFcnJvcigiU1lMSyBiYWQgcmVjb3JkICIrbmUpfX1yZXR1cm4gTi5sZW5ndGg+MCYmKGJbIiFyb3dzIl09TiksSS5sZW5ndGg+MCYmKGJbIiFjb2xzIl09SSksSS5mb3JFYWNoKGZ1bmN0aW9uKEQpe3V0KEQpfSksZyYmZy5zaGVldFJvd3MmJih5PXkuc2xpY2UoMCxnLnNoZWV0Um93cykpLFt5LGIsaWVdfWZ1bmN0aW9uIHMoaCxnKXt2YXIgbT1pKGgsZyksZD1tWzBdLHA9bVsxXSx3PW1bMl0sXz1VZShnKTtfLmRhdGUxOTA0PSgoKHd8fHt9KS5Xb3JrYm9va3x8e30pLldCUHJvcHN8fHt9KS5kYXRlMTkwNDt2YXIgeT1jdChkLF8pO3ByKHApLmZvckVhY2goZnVuY3Rpb24oUCl7eVtQXT1wW1BdfSk7dmFyIFI9Q2EoeSxnKTtyZXR1cm4gcHIodykuZm9yRWFjaChmdW5jdGlvbihQKXtSW1BdPXdbUF19KSxSLmJvb2tUeXBlPSJzeWxrIixSfWZ1bmN0aW9uIGMoaCxnLG0sZCxwLHcpe3ZhciBfPSJDO1kiKyhtKzEpKyI7WCIrKGQrMSkrIjtLIjtzd2l0Y2goaC50KXtjYXNlIm4iOl8rPWlzRmluaXRlKGgudik/aC52fHwwOmJyW2lzTmFOKGgudik/MzY6N10saC5mJiYhaC5GJiYoXys9IjtFIitOMShoLmYse3I6bSxjOmR9KSk7YnJlYWs7Y2FzZSJiIjpfKz1oLnY/IlRSVUUiOiJGQUxTRSI7YnJlYWs7Y2FzZSJlIjpfKz1oLnd8fGJyW2gudl18fGgudjticmVhaztjYXNlImQiOl8rPW9yKHhyKGgudix3KSx3KTticmVhaztjYXNlInMiOl8rPSciJysoaC52PT1udWxsPyIiOlN0cmluZyhoLnYpKS5yZXBsYWNlKC8iL2csIiIpLnJlcGxhY2UoLzsvZywiOzsiKSsnIic7YnJlYWt9cmV0dXJuIF99ZnVuY3Rpb24gbyhoLGcsbSl7dmFyIGQ9IkM7WSIrKGcrMSkrIjtYIisobSsxKSsiO0EiO3JldHVybiBkKz1uKGgubWFwKGZ1bmN0aW9uKHApe3JldHVybiBwLnR9KS5qb2luKCIiKSksZH1mdW5jdGlvbiBsKGgsZyl7Zy5mb3JFYWNoKGZ1bmN0aW9uKG0sZCl7dmFyIHA9IkY7VyIrKGQrMSkrIiAiKyhkKzEpKyIgIjttLmhpZGRlbj9wKz0iMCI6KHR5cGVvZiBtLndpZHRoPT0ibnVtYmVyIiYmIW0ud3B4JiYobS53cHg9X2EobS53aWR0aCkpLHR5cGVvZiBtLndweD09Im51bWJlciImJiFtLndjaCYmKG0ud2NoPUphKG0ud3B4KSksdHlwZW9mIG0ud2NoPT0ibnVtYmVyIiYmKHArPU1hdGgucm91bmQobS53Y2gpKSkscC5jaGFyQXQocC5sZW5ndGgtMSkhPSIgIiYmaC5wdXNoKHApfSl9ZnVuY3Rpb24gdShoLGcpe2cuZm9yRWFjaChmdW5jdGlvbihtLGQpe3ZhciBwPSJGOyI7bS5oaWRkZW4/cCs9Ik0wOyI6bS5ocHQ/cCs9Ik0iKzIwKm0uaHB0KyI7IjptLmhweCYmKHArPSJNIisyMCpXcyhtLmhweCkrIjsiKSxwLmxlbmd0aD4yJiZoLnB1c2gocCsiUiIrKGQrMSkpfSl9ZnVuY3Rpb24geChoLGcsbSl7Z3x8KGc9e30pLGcuX2Zvcm1hdHM9WyJHZW5lcmFsIl07dmFyIGQ9WyJJRDtQU2hlZXRKUztOO0UiXSxwPVtdLHc9WmUoaFsiIXJlZiJdfHwiQTEiKSxfLHk9aFsiIWRhdGEiXSE9bnVsbCxSPWBccgpgLFA9KCgobXx8e30pLldvcmtib29rfHx7fSkuV0JQcm9wc3x8e30pLmRhdGUxOTA0LGI9IkdlbmVyYWwiO2QucHVzaCgiUDtQR2VuZXJhbCIpO3ZhciBOPXcucy5yLEk9dy5zLmMsQj1bXTtpZihoWyIhcmVmIl0pe2ZvcihOPXcucy5yO048PXcuZS5yOysrTilpZighKHkmJiFoWyIhZGF0YSJdW05dKSl7Zm9yKEI9W10sST13LnMuYztJPD13LmUuYzsrK0kpXz15P2hbIiFkYXRhIl1bTl1bSV06aFtIZShJKStHZShOKV0sISghX3x8IV8uYykmJkIucHVzaChvKF8uYyxOLEkpKTtCLmxlbmd0aCYmcC5wdXNoKEIuam9pbihSKSl9fWlmKGhbIiFyZWYiXSl7Zm9yKE49dy5zLnI7Tjw9dy5lLnI7KytOKWlmKCEoeSYmIWhbIiFkYXRhIl1bTl0pKXtmb3IoQj1bXSxJPXcucy5jO0k8PXcuZS5jOysrSSlpZihfPXk/aFsiIWRhdGEiXVtOXVtJXTpoW0hlKEkpK0dlKE4pXSwhKCFffHxfLnY9PW51bGwmJighXy5mfHxfLkYpKSl7aWYoKF8uenx8KF8udD09ImQiP1RlWzE0XToiR2VuZXJhbCIpKSE9Yil7dmFyIEw9Zy5fZm9ybWF0cy5pbmRleE9mKF8ueik7TD09LTEmJihnLl9mb3JtYXRzLnB1c2goXy56KSxMPWcuX2Zvcm1hdHMubGVuZ3RoLTEsZC5wdXNoKCJQO1AiK18uei5yZXBsYWNlKC87L2csIjs7IikpKSxCLnB1c2goIkY7UCIrTCsiO1kiKyhOKzEpKyI7WCIrKEkrMSkpfUIucHVzaChjKF8saCxOLEksZyxQKSl9cC5wdXNoKEIuam9pbihSKSl9fXJldHVybiBkLnB1c2goIkY7UDA7REcwRzg7TTI1NSIpLGhbIiFjb2xzIl0mJmwoZCxoWyIhY29scyJdKSxoWyIhcm93cyJdJiZ1KGQsaFsiIXJvd3MiXSksaFsiIXJlZiJdJiZkLnB1c2goIkI7WSIrKHcuZS5yLXcucy5yKzEpKyI7WCIrKHcuZS5jLXcucy5jKzEpKyI7RCIrW3cucy5jLHcucy5yLHcuZS5jLHcuZS5yXS5qb2luKCIgIikpLGQucHVzaCgiTztMO0Q7QiIrKFA/IjtWNCI6IiIpKyI7SzQ3O0cxMDAgMC4wMDEiKSxkZWxldGUgZy5fZm9ybWF0cyxkLmpvaW4oUikrUitwLmpvaW4oUikrUisiRSIrUn1yZXR1cm57dG9fd29ya2Jvb2s6cyxmcm9tX3NoZWV0Onh9fSgpLFJ1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShzLGMpe3N3aXRjaChjLnR5cGUpe2Nhc2UiYmFzZTY0IjpyZXR1cm4gYShJcihzKSxjKTtjYXNlImJpbmFyeSI6cmV0dXJuIGEocyxjKTtjYXNlImJ1ZmZlciI6cmV0dXJuIGEoTmUmJkJ1ZmZlci5pc0J1ZmZlcihzKT9zLnRvU3RyaW5nKCJiaW5hcnkiKTpmYShzKSxjKTtjYXNlImFycmF5IjpyZXR1cm4gYShCYShzKSxjKX10aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIrYy50eXBlKX1mdW5jdGlvbiBhKHMsYyl7Zm9yKHZhciBvPXMuc3BsaXQoYApgKSxsPS0xLHU9LTEseD0wLGg9W107eCE9PW8ubGVuZ3RoOysreCl7aWYob1t4XS50cmltKCk9PT0iQk9UIil7aFsrK2xdPVtdLHU9MDtjb250aW51ZX1pZighKGw8MCkpe3ZhciBnPW9beF0udHJpbSgpLnNwbGl0KCIsIiksbT1nWzBdLGQ9Z1sxXTsrK3g7Zm9yKHZhciBwPW9beF18fCIiOyhwLm1hdGNoKC9bIl0vZyl8fFtdKS5sZW5ndGgmMSYmeDxvLmxlbmd0aC0xOylwKz1gCmArb1srK3hdO3N3aXRjaChwPXAudHJpbSgpLCttKXtjYXNlLTE6aWYocD09PSJCT1QiKXtoWysrbF09W10sdT0wO2NvbnRpbnVlfWVsc2UgaWYocCE9PSJFT0QiKXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIERJRiBzcGVjaWFsIGNvbW1hbmQgIitwKTticmVhaztjYXNlIDA6cD09PSJUUlVFIj9oW2xdW3VdPSEwOnA9PT0iRkFMU0UiP2hbbF1bdV09ITE6aXNOYU4oT3IoZCkpP2lzTmFOKFN0KGQpLmdldERhdGUoKSk/aFtsXVt1XT1kOihoW2xdW3VdPXhyKGQpLGMmJmMuVVRDfHwoaFtsXVt1XT1VYShoW2xdW3VdKSkpOmhbbF1bdV09T3IoZCksKyt1O2JyZWFrO2Nhc2UgMTpwPXAuc2xpY2UoMSxwLmxlbmd0aC0xKSxwPXAucmVwbGFjZSgvIiIvZywnIicpLHAmJnAubWF0Y2goL149Ii4qIiQvKSYmKHA9cC5zbGljZSgyLC0xKSksaFtsXVt1KytdPXAhPT0iIj9wOm51bGw7YnJlYWt9aWYocD09PSJFT0QiKWJyZWFrfX1yZXR1cm4gYyYmYy5zaGVldFJvd3MmJihoPWguc2xpY2UoMCxjLnNoZWV0Um93cykpLGh9ZnVuY3Rpb24gcihzLGMpe3JldHVybiBjdChlKHMsYyksYyl9ZnVuY3Rpb24gdChzLGMpe3ZhciBvPUNhKHIocyxjKSxjKTtyZXR1cm4gby5ib29rVHlwZT0iZGlmIixvfWZ1bmN0aW9uIG4ocyxjKXtyZXR1cm4iMCwiK1N0cmluZyhzKStgXHIKYCtjfWZ1bmN0aW9uIGkocyl7cmV0dXJuYDEsMFxyCiJgK3MucmVwbGFjZSgvIi9nLCciIicpKyciJ31mdW5jdGlvbiBmKHMpe2lmKCFzWyIhcmVmIl0pdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZXhwb3J0IGVtcHR5IHNoZWV0IHRvIERJRiIpO2Zvcih2YXIgYz1aZShzWyIhcmVmIl0pLG89c1siIWRhdGEiXSE9bnVsbCxsPVtgVEFCTEVccgowLDFccgoic2hlZXRqcyJccgpgLGBWRUNUT1JTXHIKMCxgKyhjLmUuci1jLnMucisxKStgXHIKIiJccgpgLGBUVVBMRVNccgowLGArKGMuZS5jLWMucy5jKzEpK2BccgoiIlxyCmAsYERBVEFccgowLDBccgoiIlxyCmBdLHU9Yy5zLnI7dTw9Yy5lLnI7Kyt1KXtmb3IodmFyIHg9bz9zWyIhZGF0YSJdW3VdOltdLGg9YC0xLDBccgpCT1RccgpgLGc9Yy5zLmM7Zzw9Yy5lLmM7KytnKXt2YXIgbT1vP3gmJnhbZ106c1tEZSh7cjp1LGM6Z30pXTtpZihtPT1udWxsKXtoKz1gMSwwXHIKIiJccgpgO2NvbnRpbnVlfXN3aXRjaChtLnQpe2Nhc2UibiI6bS53IT1udWxsP2grPSIwLCIrbS53K2BccgpWYDptLnYhPW51bGw/aCs9bihtLnYsIlYiKTptLmYhPW51bGwmJiFtLkY/aCs9aSgiPSIrbS5mKTpoKz1gMSwwXHIKIiJgO2JyZWFrO2Nhc2UiYiI6aCs9bS52P24oMSwiVFJVRSIpOm4oMCwiRkFMU0UiKTticmVhaztjYXNlInMiOmgrPWkoaXNOYU4oK20udik/bS52Oic9IicrbS52KyciJyk7YnJlYWs7Y2FzZSJkIjptLnd8fChtLnc9UnIobS56fHxUZVsxNF0sb3IoeHIobS52KSkpKSxoKz1uKG0udywiViIpO2JyZWFrO2RlZmF1bHQ6aCs9YDEsMFxyCiIiYH1oKz1gXHIKYH1sLnB1c2goaCl9cmV0dXJuIGwuam9pbigiIikrYC0xLDBccgpFT0RgfXJldHVybnt0b193b3JrYm9vazp0LHRvX3NoZWV0OnIsZnJvbV9zaGVldDpmfX0oKSxPdT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodSl7cmV0dXJuIHUucmVwbGFjZSgvXFxiL2csIlxcIikucmVwbGFjZSgvXFxjL2csIjoiKS5yZXBsYWNlKC9cXG4vZyxgCmApfWZ1bmN0aW9uIGEodSl7cmV0dXJuIHUucmVwbGFjZSgvXFwvZywiXFxiIikucmVwbGFjZSgvOi9nLCJcXGMiKS5yZXBsYWNlKC9cbi9nLCJcXG4iKX1mdW5jdGlvbiByKHUseCl7Zm9yKHZhciBoPXUuc3BsaXQoYApgKSxnPS0xLG09LTEsZD0wLHA9W107ZCE9PWgubGVuZ3RoOysrZCl7dmFyIHc9aFtkXS50cmltKCkuc3BsaXQoIjoiKTtpZih3WzBdPT09ImNlbGwiKXt2YXIgXz1ncih3WzFdKTtpZihwLmxlbmd0aDw9Xy5yKWZvcihnPXAubGVuZ3RoO2c8PV8ucjsrK2cpcFtnXXx8KHBbZ109W10pO3N3aXRjaChnPV8ucixtPV8uYyx3WzJdKXtjYXNlInQiOnBbZ11bbV09ZSh3WzNdKTticmVhaztjYXNlInYiOnBbZ11bbV09K3dbM107YnJlYWs7Y2FzZSJ2dGYiOnZhciB5PXdbdy5sZW5ndGgtMV07Y2FzZSJ2dGMiOnN3aXRjaCh3WzNdKXtjYXNlIm5sIjpwW2ddW21dPSEhK3dbNF07YnJlYWs7ZGVmYXVsdDpwW2ddW21dPXdbdy5sZW5ndGgtMV0uY2hhckF0KDApPT0iIyI/e3Q6ImUiLHY6ZHJbd1t3Lmxlbmd0aC0xXV19Oit3WzRdO2JyZWFrfXdbMl09PSJ2dGYiJiYocFtnXVttXT1bcFtnXVttXSx5XSl9fX1yZXR1cm4geCYmeC5zaGVldFJvd3MmJihwPXAuc2xpY2UoMCx4LnNoZWV0Um93cykpLHB9ZnVuY3Rpb24gdCh1LHgpe3JldHVybiBjdChyKHUseCkseCl9ZnVuY3Rpb24gbih1LHgpe3JldHVybiBDYSh0KHUseCkseCl9dmFyIGk9WyJzb2NpYWxjYWxjOnZlcnNpb246MS41IiwiTUlNRS1WZXJzaW9uOiAxLjAiLCJDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDsgYm91bmRhcnk9U29jaWFsQ2FsY1NwcmVhZHNoZWV0Q29udHJvbFNhdmUiXS5qb2luKGAKYCksZj1bIi0tU29jaWFsQ2FsY1NwcmVhZHNoZWV0Q29udHJvbFNhdmUiLCJDb250ZW50LXR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgiXS5qb2luKGAKYCkrYApgLHM9WyIjIFNvY2lhbENhbGMgU3ByZWFkc2hlZXQgQ29udHJvbCBTYXZlIiwicGFydDpzaGVldCJdLmpvaW4oYApgKSxjPSItLVNvY2lhbENhbGNTcHJlYWRzaGVldENvbnRyb2xTYXZlLS0iO2Z1bmN0aW9uIG8odSl7aWYoIXV8fCF1WyIhcmVmIl0pcmV0dXJuIiI7Zm9yKHZhciB4PVtdLGg9W10sZyxtPSIiLGQ9cGEodVsiIXJlZiJdKSxwPXVbIiFkYXRhIl0hPW51bGwsdz1kLnMucjt3PD1kLmUucjsrK3cpZm9yKHZhciBfPWQucy5jO188PWQuZS5jOysrXylpZihtPURlKHtyOncsYzpffSksZz1wPyh1WyIhZGF0YSJdW3ddfHxbXSlbX106dVttXSwhKCFnfHxnLnY9PW51bGx8fGcudD09PSJ6Iikpe3N3aXRjaChoPVsiY2VsbCIsbSwidCJdLGcudCl7Y2FzZSJzIjpoLnB1c2goYShnLnYpKTticmVhaztjYXNlImIiOmhbMl09InZ0IisoZy5mPyJmIjoiYyIpLGhbM109Im5sIixoWzRdPWcudj8iMSI6IjAiLGhbNV09YShnLmZ8fChnLnY/IlRSVUUiOiJGQUxTRSIpKTticmVhaztjYXNlImQiOnZhciB5PW9yKHhyKGcudikpO2hbMl09InZ0YyIsaFszXT0ibmQiLGhbNF09IiIreSxoWzVdPWcud3x8UnIoZy56fHxUZVsxNF0seSk7YnJlYWs7Y2FzZSJuIjppc0Zpbml0ZShnLnYpP2cuZj8oaFsyXT0idnRmIixoWzNdPSJuIixoWzRdPWcudixoWzVdPWEoZy5mKSk6KGhbMl09InYiLGhbM109Zy52KTooaFsyXT0idnQiKyhnLmY/ImYiOiJjIiksaFszXT0iZSIrYnJbaXNOYU4oZy52KT8zNjo3XSxoWzRdPSIwIixoWzVdPWcuZnx8aFszXS5zbGljZSgxKSxoWzZdPSJlIixoWzddPWhbM10uc2xpY2UoMSkpO2JyZWFrO2Nhc2UiZSI6Y29udGludWV9eC5wdXNoKGguam9pbigiOiIpKX1yZXR1cm4geC5wdXNoKCJzaGVldDpjOiIrKGQuZS5jLWQucy5jKzEpKyI6cjoiKyhkLmUuci1kLnMucisxKSsiOnR2ZjoxIikseC5wdXNoKCJ2YWx1ZWZvcm1hdDoxOnRleHQtd2lraSIpLHguam9pbihgCmApfWZ1bmN0aW9uIGwodSl7cmV0dXJuW2ksZixzLGYsbyh1KSxjXS5qb2luKGAKYCl9cmV0dXJue3RvX3dvcmtib29rOm4sdG9fc2hlZXQ6dCxmcm9tX3NoZWV0Omx9fSgpLGx0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShsLHUseCxoLGcpe2cucmF3P3VbeF1baF09bDpsPT09IiJ8fChsPT09IlRSVUUiP3VbeF1baF09ITA6bD09PSJGQUxTRSI/dVt4XVtoXT0hMTppc05hTihPcihsKSk/aXNOYU4oU3QobCkuZ2V0RGF0ZSgpKT9sLmNoYXJDb2RlQXQoMCk9PTM1JiZkcltsXSE9bnVsbD91W3hdW2hdPXt0OiJlIix2OmRyW2xdLHc6bH06dVt4XVtoXT1sOnVbeF1baF09eHIobCk6dVt4XVtoXT1PcihsKSl9ZnVuY3Rpb24gYShsLHUpe3ZhciB4PXV8fHt9LGg9W107aWYoIWx8fGwubGVuZ3RoPT09MClyZXR1cm4gaDtmb3IodmFyIGc9bC5zcGxpdCgvW1xyXG5dLyksbT1nLmxlbmd0aC0xO20+PTAmJmdbbV0ubGVuZ3RoPT09MDspLS1tO2Zvcih2YXIgZD0xMCxwPTAsdz0wO3c8PW07Kyt3KXA9Z1t3XS5pbmRleE9mKCIgIikscD09LTE/cD1nW3ddLmxlbmd0aDpwKyssZD1NYXRoLm1heChkLHApO2Zvcih3PTA7dzw9bTsrK3cpe2hbd109W107dmFyIF89MDtmb3IoZShnW3ddLnNsaWNlKDAsZCkudHJpbSgpLGgsdyxfLHgpLF89MTtfPD0oZ1t3XS5sZW5ndGgtZCkvMTArMTsrK18pZShnW3ddLnNsaWNlKGQrKF8tMSkqMTAsZCtfKjEwKS50cmltKCksaCx3LF8seCl9cmV0dXJuIHguc2hlZXRSb3dzJiYoaD1oLnNsaWNlKDAseC5zaGVldFJvd3MpKSxofXZhciByPXs0NDoiLCIsOToiCSIsNTk6IjsiLDEyNDoifCJ9LHQ9ezQ0OjMsOToyLDU5OjEsMTI0OjB9O2Z1bmN0aW9uIG4obCl7Zm9yKHZhciB1PXt9LHg9ITEsaD0wLGc9MDtoPGwubGVuZ3RoOysraCkoZz1sLmNoYXJDb2RlQXQoaCkpPT0zND94PSF4OiF4JiZnIGluIHImJih1W2ddPSh1W2ddfHwwKSsxKTtnPVtdO2ZvcihoIGluIHUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHUsaCkmJmcucHVzaChbdVtoXSxoXSk7aWYoIWcubGVuZ3RoKXt1PXQ7Zm9yKGggaW4gdSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodSxoKSYmZy5wdXNoKFt1W2hdLGhdKX1yZXR1cm4gZy5zb3J0KGZ1bmN0aW9uKG0sZCl7cmV0dXJuIG1bMF0tZFswXXx8dFttWzFdXS10W2RbMV1dfSkscltnLnBvcCgpWzFdXXx8NDR9ZnVuY3Rpb24gaShsLHUpe3ZhciB4PXV8fHt9LGg9IiIsZz17fTt4LmRlbnNlJiYoZ1siIWRhdGEiXT1bXSk7dmFyIG09e3M6e2M6MCxyOjB9LGU6e2M6MCxyOjB9fTtsLnNsaWNlKDAsNCk9PSJzZXA9Ij9sLmNoYXJDb2RlQXQoNSk9PTEzJiZsLmNoYXJDb2RlQXQoNik9PTEwPyhoPWwuY2hhckF0KDQpLGw9bC5zbGljZSg3KSk6bC5jaGFyQ29kZUF0KDUpPT0xM3x8bC5jaGFyQ29kZUF0KDUpPT0xMD8oaD1sLmNoYXJBdCg0KSxsPWwuc2xpY2UoNikpOmg9bihsLnNsaWNlKDAsMTAyNCkpOngmJnguRlM/aD14LkZTOmg9bihsLnNsaWNlKDAsMTAyNCkpO3ZhciBkPTAscD0wLHc9MCxfPTAseT0wLFI9aC5jaGFyQ29kZUF0KDApLFA9ITEsYj0wLE49bC5jaGFyQ29kZUF0KDApLEk9eC5kYXRlTkYhPW51bGw/Q2MoeC5kYXRlTkYpOm51bGw7ZnVuY3Rpb24gQigpe3ZhciBMPWwuc2xpY2UoXyx5KTtMLnNsaWNlKC0xKT09IlxyIiYmKEw9TC5zbGljZSgwLC0xKSk7dmFyIEc9e307aWYoTC5jaGFyQXQoMCk9PSciJyYmTC5jaGFyQXQoTC5sZW5ndGgtMSk9PSciJyYmKEw9TC5zbGljZSgxLC0xKS5yZXBsYWNlKC8iIi9nLCciJykpLHguY2VsbFRleHQhPT0hMSYmKEcudz1MKSxMLmxlbmd0aD09PTApRy50PSJ6IjtlbHNlIGlmKHgucmF3KUcudD0icyIsRy52PUw7ZWxzZSBpZihMLnRyaW0oKS5sZW5ndGg9PT0wKUcudD0icyIsRy52PUw7ZWxzZSBpZihMLmNoYXJDb2RlQXQoMCk9PTYxKUwuY2hhckNvZGVBdCgxKT09MzQmJkwuY2hhckNvZGVBdChMLmxlbmd0aC0xKT09MzQ/KEcudD0icyIsRy52PUwuc2xpY2UoMiwtMSkucmVwbGFjZSgvIiIvZywnIicpKTpNMShMKT8oRy50PSJzIixHLmY9TC5zbGljZSgxKSxHLnY9TCk6KEcudD0icyIsRy52PUwpO2Vsc2UgaWYoTD09IlRSVUUiKUcudD0iYiIsRy52PSEwO2Vsc2UgaWYoTD09IkZBTFNFIilHLnQ9ImIiLEcudj0hMTtlbHNlIGlmKCFpc05hTih3PU9yKEwpKSlHLnQ9Im4iLEcudj13O2Vsc2UgaWYoIWlzTmFOKCh3PVN0KEwpKS5nZXREYXRlKCkpfHxJJiZMLm1hdGNoKEkpKXtpZihHLno9eC5kYXRlTkZ8fFRlWzE0XSxJJiZMLm1hdGNoKEkpKXt2YXIgaWU9YmMoTCx4LmRhdGVORixMLm1hdGNoKEkpfHxbXSk7dz14cihpZSkseCYmeC5VVEM9PT0hMSYmKHc9VWEodykpfWVsc2UgeCYmeC5VVEM9PT0hMT93PVVhKHcpOnguY2VsbFRleHQhPT0hMSYmeC5kYXRlTkYmJihHLnc9UnIoRy56LHcpKTt4LmNlbGxEYXRlcz8oRy50PSJkIixHLnY9dyk6KEcudD0ibiIsRy52PW9yKHcpKSx4LmNlbGxORnx8ZGVsZXRlIEcuen1lbHNlIEwuY2hhckNvZGVBdCgwKT09MzUmJmRyW0xdIT1udWxsPyhHLnQ9ImUiLEcudz1MLEcudj1kcltMXSk6KEcudD0icyIsRy52PUwpO2lmKEcudD09InoifHwoeC5kZW5zZT8oZ1siIWRhdGEiXVtkXXx8KGdbIiFkYXRhIl1bZF09W10pLGdbIiFkYXRhIl1bZF1bcF09Ryk6Z1tEZSh7YzpwLHI6ZH0pXT1HKSxfPXkrMSxOPWwuY2hhckNvZGVBdChfKSxtLmUuYzxwJiYobS5lLmM9cCksbS5lLnI8ZCYmKG0uZS5yPWQpLGI9PVIpKytwO2Vsc2UgaWYocD0wLCsrZCx4LnNoZWV0Um93cyYmeC5zaGVldFJvd3M8PWQpcmV0dXJuITB9ZTpmb3IoO3k8bC5sZW5ndGg7Kyt5KXN3aXRjaChiPWwuY2hhckNvZGVBdCh5KSl7Y2FzZSAzNDpOPT09MzQmJihQPSFQKTticmVhaztjYXNlIDEzOmlmKFApYnJlYWs7bC5jaGFyQ29kZUF0KHkrMSk9PTEwJiYrK3k7Y2FzZSBSOmNhc2UgMTA6aWYoIVAmJkIoKSlicmVhayBlO2JyZWFrfXJldHVybiB5LV8+MCYmQigpLGdbIiFyZWYiXT1JZShtKSxnfWZ1bmN0aW9uIGYobCx1KXtyZXR1cm4hKHUmJnUuUFJOKXx8dS5GU3x8bC5zbGljZSgwLDQpPT0ic2VwPSJ8fGwuaW5kZXhPZigiCSIpPj0wfHxsLmluZGV4T2YoIiwiKT49MHx8bC5pbmRleE9mKCI7Iik+PTA/aShsLHUpOmN0KGEobCx1KSx1KX1mdW5jdGlvbiBzKGwsdSl7dmFyIHg9IiIsaD11LnR5cGU9PSJzdHJpbmciP1swLDAsMCwwXTpSbihsLHUpO3N3aXRjaCh1LnR5cGUpe2Nhc2UiYmFzZTY0Ijp4PUlyKGwpO2JyZWFrO2Nhc2UiYmluYXJ5Ijp4PWw7YnJlYWs7Y2FzZSJidWZmZXIiOnUuY29kZXBhZ2U9PTY1MDAxP3g9bC50b1N0cmluZygidXRmOCIpOnUuY29kZXBhZ2UmJnR5cGVvZiBudDwidSI/eD1udC51dGlscy5kZWNvZGUodS5jb2RlcGFnZSxsKTp4PU5lJiZCdWZmZXIuaXNCdWZmZXIobCk/bC50b1N0cmluZygiYmluYXJ5Iik6ZmEobCk7YnJlYWs7Y2FzZSJhcnJheSI6eD1CYShsKTticmVhaztjYXNlInN0cmluZyI6eD1sO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK3UudHlwZSl9cmV0dXJuIGhbMF09PTIzOSYmaFsxXT09MTg3JiZoWzJdPT0xOTE/eD1WZSh4LnNsaWNlKDMpKTp1LnR5cGUhPSJzdHJpbmciJiZ1LnR5cGUhPSJidWZmZXIiJiZ1LmNvZGVwYWdlPT02NTAwMT94PVZlKHgpOnUudHlwZT09ImJpbmFyeSImJnR5cGVvZiBudDwidSImJnUuY29kZXBhZ2UmJih4PW50LnV0aWxzLmRlY29kZSh1LmNvZGVwYWdlLG50LnV0aWxzLmVuY29kZSgyODU5MSx4KSkpLHguc2xpY2UoMCwxOSk9PSJzb2NpYWxjYWxjOnZlcnNpb246Ij9PdS50b19zaGVldCh1LnR5cGU9PSJzdHJpbmciP3g6VmUoeCksdSk6Zih4LHUpfWZ1bmN0aW9uIGMobCx1KXtyZXR1cm4gQ2EocyhsLHUpLHUpfWZ1bmN0aW9uIG8obCl7dmFyIHU9W107aWYoIWxbIiFyZWYiXSlyZXR1cm4iIjtmb3IodmFyIHg9WmUobFsiIXJlZiJdKSxoLGc9bFsiIWRhdGEiXSE9bnVsbCxtPXgucy5yO208PXguZS5yOysrbSl7Zm9yKHZhciBkPVtdLHA9eC5zLmM7cDw9eC5lLmM7KytwKXt2YXIgdz1EZSh7cjptLGM6cH0pO2lmKGg9Zz8obFsiIWRhdGEiXVttXXx8W10pW3BdOmxbd10sIWh8fGgudj09bnVsbCl7ZC5wdXNoKCIgICAgICAgICAgIik7Y29udGludWV9Zm9yKHZhciBfPShoLnd8fChnYShoKSxoLncpfHwiIikuc2xpY2UoMCwxMCk7Xy5sZW5ndGg8MTA7KV8rPSIgIjtkLnB1c2goXysocD09PTA/IiAiOiIiKSl9dS5wdXNoKGQuam9pbigiIikpfXJldHVybiB1LmpvaW4oYApgKX1yZXR1cm57dG9fd29ya2Jvb2s6Yyx0b19zaGVldDpzLGZyb21fc2hlZXQ6b319KCk7ZnVuY3Rpb24gTnUoZSxhKXt2YXIgcj1hfHx7fSx0PSEhci5XVEY7ci5XVEY9ITA7dHJ5e3ZhciBuPUR1LnRvX3dvcmtib29rKGUscik7cmV0dXJuIHIuV1RGPXQsbn1jYXRjaChpKXtpZihyLldURj10LGkubWVzc2FnZS5pbmRleE9mKCJTWUxLIGJhZCByZWNvcmQgSUQiKT09LTEmJnQpdGhyb3cgaTtyZXR1cm4gbHQudG9fd29ya2Jvb2soZSxhKX19ZnVuY3Rpb24gTXUoZSxhKXt2YXIgcj1hfHx7fSx0PSEhci5XVEY7ci5XVEY9ITA7dHJ5e3ZhciBuPVJ1LnRvX3dvcmtib29rKGUscik7aWYoIW58fCFuLlNoZWV0cyl0aHJvdyJESUYgYmFkIHdvcmtib29rIjt2YXIgaT1uLlNoZWV0c1tuLlNoZWV0TmFtZXNbMF1dO2lmKCFpfHwhaVsiIXJlZiJdKXRocm93IkRJRiBlbXB0eSB3b3Jrc2hlZXQiO3JldHVybiByLldURj10LG59Y2F0Y2h7cmV0dXJuIHIuV1RGPXQsbHQudG9fd29ya2Jvb2soZSxhKX19dmFyIEx0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShBLFUsTyl7aWYoQSl7c3IoQSxBLmx8fDApO2Zvcih2YXIgRD1PLkVudW18fG1lO0EubDxBLmxlbmd0aDspe3ZhciB6PUEucmVhZF9zaGlmdCgyKSxwZT1EW3pdfHxEWzY1NTM1XSxKPUEucmVhZF9zaGlmdCgyKSxyZT1BLmwrSixlZT1wZS5mJiZwZS5mKEEsSixPKTtpZihBLmw9cmUsVShlZSxwZSx6KSlyZXR1cm59fX1mdW5jdGlvbiBhKEEsVSl7c3dpdGNoKFUudHlwZSl7Y2FzZSJiYXNlNjQiOnJldHVybiB0KERyKElyKEEpKSxVKTtjYXNlImJpbmFyeSI6cmV0dXJuIHQoRHIoQSksVSk7Y2FzZSJidWZmZXIiOmNhc2UiYXJyYXkiOnJldHVybiB0KEEsVSl9dGhyb3ciVW5zdXBwb3J0ZWQgdHlwZSAiK1UudHlwZX12YXIgcj1bIm1tbW0iLCJkZC1tbW0teXl5eSIsImRkLW1tbSIsIm1tbS15eXl5IiwiQCIsIm1tL2RkIiwiaGg6bW06c3MgQU0vUE0iLCJoaDptbSBBTS9QTSIsIm1tL2RkL3l5eXkiLCJtbS9kZCIsImhoOm1tOnNzIiwiaGg6bW0iXTtmdW5jdGlvbiB0KEEsVSl7aWYoIUEpcmV0dXJuIEE7dmFyIE89VXx8e30sRD17fSx6PSJTaGVldDEiLHBlPSIiLEo9MCxyZT17fSxlZT1bXSxrZT1bXSxoZT1bXTtPLmRlbnNlJiYoaGU9RFsiIWRhdGEiXT1bXSk7dmFyIHhlPXtzOntyOjAsYzowfSxlOntyOjAsYzowfX0sWGU9Ty5zaGVldFJvd3N8fDAsemU9e307aWYoQVs0XT09ODEmJkFbNV09PTgwJiZBWzZdPT04NylyZXR1cm4gQWUoQSxVKTtpZihBWzJdPT0wJiYoQVszXT09OHx8QVszXT09OSkmJkEubGVuZ3RoPj0xNiYmQVsxNF09PTUmJkFbMTVdPT09MTA4KXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgV29ya3MgMyBmb3IgTWFjIGZpbGUiKTtpZihBWzJdPT0yKU8uRW51bT1tZSxlKEEsZnVuY3Rpb24oZmUsc2EsanIpe3N3aXRjaChqcil7Y2FzZSAwOk8udmVycz1mZSxmZT49NDA5NiYmKE8ucXBybz0hMCk7YnJlYWs7Y2FzZSAyNTU6Ty52ZXJzPWZlLE8ud29ya3M9ITA7YnJlYWs7Y2FzZSA2OnhlPWZlO2JyZWFrO2Nhc2UgMjA0OmZlJiYocGU9ZmUpO2JyZWFrO2Nhc2UgMjIyOnBlPWZlO2JyZWFrO2Nhc2UgMTU6Y2FzZSA1MTooIU8ucXBybyYmIU8ud29ya3N8fGpyPT01MSkmJmZlWzFdLnYuY2hhckNvZGVBdCgwKTw0OCYmKGZlWzFdLnY9ZmVbMV0udi5zbGljZSgxKSksKE8ud29ya3N8fE8ud29ya3MyKSYmKGZlWzFdLnY9ZmVbMV0udi5yZXBsYWNlKC9cclxuL2csYApgKSk7Y2FzZSAxMzpjYXNlIDE0OmNhc2UgMTY6KGZlWzJdJjExMik9PTExMiYmKGZlWzJdJjE1KT4xJiYoZmVbMl0mMTUpPDE1JiYoZmVbMV0uej1PLmRhdGVORnx8clsoZmVbMl0mMTUpLTFdfHxUZVsxNF0sTy5jZWxsRGF0ZXMmJihmZVsxXS52PVNhKGZlWzFdLnYpLGZlWzFdLnQ9dHlwZW9mIGZlWzFdLnY9PSJudW1iZXIiPyJuIjoiZCIpKSxPLnFwcm8mJmZlWzNdPkomJihEWyIhcmVmIl09SWUoeGUpLHJlW3pdPUQsZWUucHVzaCh6KSxEPXt9LE8uZGVuc2UmJihoZT1EWyIhZGF0YSJdPVtdKSx4ZT17czp7cjowLGM6MH0sZTp7cjowLGM6MH19LEo9ZmVbM10sej1wZXx8IlNoZWV0IisoSisxKSxwZT0iIik7dmFyIFllPU8uZGVuc2U/KGhlW2ZlWzBdLnJdfHxbXSlbZmVbMF0uY106RFtEZShmZVswXSldO2lmKFllKXtZZS50PWZlWzFdLnQsWWUudj1mZVsxXS52LGZlWzFdLnohPW51bGwmJihZZS56PWZlWzFdLnopLGZlWzFdLmYhPW51bGwmJihZZS5mPWZlWzFdLmYpLHplPVllO2JyZWFrfU8uZGVuc2U/KGhlW2ZlWzBdLnJdfHwoaGVbZmVbMF0ucl09W10pLGhlW2ZlWzBdLnJdW2ZlWzBdLmNdPWZlWzFdKTpEW0RlKGZlWzBdKV09ZmVbMV0semU9ZmVbMV07YnJlYWs7Y2FzZSAyMTUwOTpPLndvcmtzMj0hMDticmVhaztjYXNlIDIxNTA2OmZlPT01MjgxJiYoemUuej0iaGg6bW06c3MiLE8uY2VsbERhdGVzJiZ6ZS50PT0ibiImJih6ZS52PVNhKHplLnYpLHplLnQ9dHlwZW9mIHplLnY9PSJudW1iZXIiPyJuIjoiZCIpKTticmVha319LE8pO2Vsc2UgaWYoQVsyXT09MjZ8fEFbMl09PTE0KU8uRW51bT1aLEFbMl09PTE0JiYoTy5xcHJvPSEwLEEubD0wKSxlKEEsZnVuY3Rpb24oZmUsc2EsanIpe3N3aXRjaChqcil7Y2FzZSAyMDQ6ej1mZTticmVhaztjYXNlIDIyOmZlWzFdLnYuY2hhckNvZGVBdCgwKTw0OCYmKGZlWzFdLnY9ZmVbMV0udi5zbGljZSgxKSksZmVbMV0udj1mZVsxXS52LnJlcGxhY2UoL1x4MEYuL2csZnVuY3Rpb24oWWUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKFllLmNoYXJDb2RlQXQoMSktMzIpfSkucmVwbGFjZSgvXHJcbi9nLGAKYCk7Y2FzZSAyMzpjYXNlIDI0OmNhc2UgMjU6Y2FzZSAzNzpjYXNlIDM5OmNhc2UgNDA6aWYoZmVbM10+SiYmKERbIiFyZWYiXT1JZSh4ZSkscmVbel09RCxlZS5wdXNoKHopLEQ9e30sTy5kZW5zZSYmKGhlPURbIiFkYXRhIl09W10pLHhlPXtzOntyOjAsYzowfSxlOntyOjAsYzowfX0sSj1mZVszXSx6PSJTaGVldCIrKEorMSkpLFhlPjAmJmZlWzBdLnI+PVhlKWJyZWFrO08uZGVuc2U/KGhlW2ZlWzBdLnJdfHwoaGVbZmVbMF0ucl09W10pLGhlW2ZlWzBdLnJdW2ZlWzBdLmNdPWZlWzFdKTpEW0RlKGZlWzBdKV09ZmVbMV0seGUuZS5jPGZlWzBdLmMmJih4ZS5lLmM9ZmVbMF0uYykseGUuZS5yPGZlWzBdLnImJih4ZS5lLnI9ZmVbMF0ucik7YnJlYWs7Y2FzZSAyNzpmZVsxNGUzXSYmKGtlW2ZlWzE0ZTNdWzBdXT1mZVsxNGUzXVsxXSk7YnJlYWs7Y2FzZSAxNTM3OmtlW2ZlWzBdXT1mZVsxXSxmZVswXT09SiYmKHo9ZmVbMV0pO2JyZWFrfX0sTyk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCBMT1RVUyBCT0YgIitBWzJdKTtpZihEWyIhcmVmIl09SWUoeGUpLHJlW3BlfHx6XT1ELGVlLnB1c2gocGV8fHopLCFrZS5sZW5ndGgpcmV0dXJue1NoZWV0TmFtZXM6ZWUsU2hlZXRzOnJlfTtmb3IodmFyIGplPXt9LGRlPVtdLFdlPTA7V2U8a2UubGVuZ3RoOysrV2UpcmVbZWVbV2VdXT8oZGUucHVzaChrZVtXZV18fGVlW1dlXSksamVba2VbV2VdXT1yZVtrZVtXZV1dfHxyZVtlZVtXZV1dKTooZGUucHVzaChrZVtXZV0pLGplW2tlW1dlXV09eyIhcmVmIjoiQTEifSk7cmV0dXJue1NoZWV0TmFtZXM6ZGUsU2hlZXRzOmplfX1mdW5jdGlvbiBuKEEsVSl7dmFyIE89VXx8e307aWYoK08uY29kZXBhZ2U+PTAmJllyKCtPLmNvZGVwYWdlKSxPLnR5cGU9PSJzdHJpbmciKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHdyaXRlIFdLMSB0byBKUyBzdHJpbmciKTt2YXIgRD1hbigpO2lmKCFBWyIhcmVmIl0pdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZXhwb3J0IGVtcHR5IHNoZWV0IHRvIFdLMSIpO3ZhciB6PVplKEFbIiFyZWYiXSkscGU9QVsiIWRhdGEiXSE9bnVsbCxKPVtdO1ByKEQsMCxmKDEwMzApKSxQcihELDYsbyh6KSk7Zm9yKHZhciByZT1NYXRoLm1pbih6LmUuciw4MTkxKSxlZT16LnMuYztlZTw9ei5lLmM7KytlZSlKW2VlXT1IZShlZSk7Zm9yKHZhciBrZT16LnMucjtrZTw9cmU7KytrZSl7dmFyIGhlPUdlKGtlKTtmb3IoZWU9ei5zLmM7ZWU8PXouZS5jOysrZWUpe3ZhciB4ZT1wZT8oQVsiIWRhdGEiXVtrZV18fFtdKVtlZV06QVtKW2VlXStoZV07aWYoISgheGV8fHhlLnQ9PSJ6Iikpc3dpdGNoKHhlLnQpe2Nhc2UibiI6KHhlLnZ8MCk9PXhlLnYmJnhlLnY+PS0zMjc2OCYmeGUudjw9MzI3Njc/UHIoRCwxMyxkKGtlLGVlLHhlKSk6UHIoRCwxNCx3KGtlLGVlLHhlKSk7YnJlYWs7Y2FzZSJkIjp2YXIgWGU9b3IoeGUudik7KFhlfDApPT1YZSYmWGU+PS0zMjc2OCYmWGU8PTMyNzY3P1ByKEQsMTMsZChrZSxlZSx7dDoibiIsdjpYZSx6OnhlLnp8fFRlWzE0XX0pKTpQcihELDE0LHcoa2UsZWUse3Q6Im4iLHY6WGUsejp4ZS56fHxUZVsxNF19KSk7YnJlYWs7ZGVmYXVsdDp2YXIgemU9Z2EoeGUpO1ByKEQsMTUsaChrZSxlZSx6ZS5zbGljZSgwLDIzOSkpKX19fXJldHVybiBQcihELDEpLEQuZW5kKCl9ZnVuY3Rpb24gaShBLFUpe3ZhciBPPVV8fHt9O2lmKCtPLmNvZGVwYWdlPj0wJiZZcigrTy5jb2RlcGFnZSksTy50eXBlPT0ic3RyaW5nIil0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCB3cml0ZSBXSzMgdG8gSlMgc3RyaW5nIik7dmFyIEQ9YW4oKTtQcihELDAscyhBKSk7Zm9yKHZhciB6PTAscGU9MDt6PEEuU2hlZXROYW1lcy5sZW5ndGg7Kyt6KShBLlNoZWV0c1tBLlNoZWV0TmFtZXNbel1dfHx7fSlbIiFyZWYiXSYmUHIoRCwyNyxiZShBLlNoZWV0TmFtZXNbel0scGUrKykpO3ZhciBKPTA7Zm9yKHo9MDt6PEEuU2hlZXROYW1lcy5sZW5ndGg7Kyt6KXt2YXIgcmU9QS5TaGVldHNbQS5TaGVldE5hbWVzW3pdXTtpZighKCFyZXx8IXJlWyIhcmVmIl0pKXtmb3IodmFyIGVlPVplKHJlWyIhcmVmIl0pLGtlPXJlWyIhZGF0YSJdIT1udWxsLGhlPVtdLHhlPU1hdGgubWluKGVlLmUuciw4MTkxKSxYZT1lZS5zLnI7WGU8PXhlOysrWGUpZm9yKHZhciB6ZT1HZShYZSksamU9ZWUucy5jO2plPD1lZS5lLmM7KytqZSl7WGU9PT1lZS5zLnImJihoZVtqZV09SGUoamUpKTt2YXIgZGU9aGVbamVdK3plLFdlPWtlPyhyZVsiIWRhdGEiXVtYZV18fFtdKVtqZV06cmVbZGVdO2lmKCEoIVdlfHxXZS50PT0ieiIpKWlmKFdlLnQ9PSJuIilQcihELDIzLGllKFhlLGplLEosV2UudikpO2Vsc2V7dmFyIGZlPWdhKFdlKTtQcihELDIyLEIoWGUsamUsSixmZS5zbGljZSgwLDIzOSkpKX19KytKfX1yZXR1cm4gUHIoRCwxKSxELmVuZCgpfWZ1bmN0aW9uIGYoQSl7dmFyIFU9ZnIoMik7cmV0dXJuIFUud3JpdGVfc2hpZnQoMixBKSxVfWZ1bmN0aW9uIHMoQSl7dmFyIFU9ZnIoMjYpO1Uud3JpdGVfc2hpZnQoMiw0MDk2KSxVLndyaXRlX3NoaWZ0KDIsNCksVS53cml0ZV9zaGlmdCg0LDApO2Zvcih2YXIgTz0wLEQ9MCx6PTAscGU9MDtwZTxBLlNoZWV0TmFtZXMubGVuZ3RoOysrcGUpe3ZhciBKPUEuU2hlZXROYW1lc1twZV0scmU9QS5TaGVldHNbSl07aWYoISghcmV8fCFyZVsiIXJlZiJdKSl7Kyt6O3ZhciBlZT1wYShyZVsiIXJlZiJdKTtPPGVlLmUuciYmKE89ZWUuZS5yKSxEPGVlLmUuYyYmKEQ9ZWUuZS5jKX19cmV0dXJuIE8+ODE5MSYmKE89ODE5MSksVS53cml0ZV9zaGlmdCgyLE8pLFUud3JpdGVfc2hpZnQoMSx6KSxVLndyaXRlX3NoaWZ0KDEsRCksVS53cml0ZV9zaGlmdCgyLDApLFUud3JpdGVfc2hpZnQoMiwwKSxVLndyaXRlX3NoaWZ0KDEsMSksVS53cml0ZV9zaGlmdCgxLDIpLFUud3JpdGVfc2hpZnQoNCwwKSxVLndyaXRlX3NoaWZ0KDQsMCksVX1mdW5jdGlvbiBjKEEsVSxPKXt2YXIgRD17czp7YzowLHI6MH0sZTp7YzowLHI6MH19O3JldHVybiBVPT04JiZPLnFwcm8/KEQucy5jPUEucmVhZF9zaGlmdCgxKSxBLmwrKyxELnMucj1BLnJlYWRfc2hpZnQoMiksRC5lLmM9QS5yZWFkX3NoaWZ0KDEpLEEubCsrLEQuZS5yPUEucmVhZF9zaGlmdCgyKSxEKTooRC5zLmM9QS5yZWFkX3NoaWZ0KDIpLEQucy5yPUEucmVhZF9zaGlmdCgyKSxVPT0xMiYmTy5xcHJvJiYoQS5sKz0yKSxELmUuYz1BLnJlYWRfc2hpZnQoMiksRC5lLnI9QS5yZWFkX3NoaWZ0KDIpLFU9PTEyJiZPLnFwcm8mJihBLmwrPTIpLEQucy5jPT02NTUzNSYmKEQucy5jPUQuZS5jPUQucy5yPUQuZS5yPTApLEQpfWZ1bmN0aW9uIG8oQSl7dmFyIFU9ZnIoOCk7cmV0dXJuIFUud3JpdGVfc2hpZnQoMixBLnMuYyksVS53cml0ZV9zaGlmdCgyLEEucy5yKSxVLndyaXRlX3NoaWZ0KDIsQS5lLmMpLFUud3JpdGVfc2hpZnQoMixBLmUuciksVX1mdW5jdGlvbiBsKEEsVSxPKXt2YXIgRD1be2M6MCxyOjB9LHt0OiJuIix2OjB9LDAsMF07cmV0dXJuIE8ucXBybyYmTy52ZXJzIT0yMDc2OD8oRFswXS5jPUEucmVhZF9zaGlmdCgxKSxEWzNdPUEucmVhZF9zaGlmdCgxKSxEWzBdLnI9QS5yZWFkX3NoaWZ0KDIpLEEubCs9Mik6Ty53b3Jrcz8oRFswXS5jPUEucmVhZF9zaGlmdCgyKSxEWzBdLnI9QS5yZWFkX3NoaWZ0KDIpLERbMl09QS5yZWFkX3NoaWZ0KDIpKTooRFsyXT1BLnJlYWRfc2hpZnQoMSksRFswXS5jPUEucmVhZF9zaGlmdCgyKSxEWzBdLnI9QS5yZWFkX3NoaWZ0KDIpKSxEfWZ1bmN0aW9uIHUoQSl7cmV0dXJuIEEueiYmWnIoQS56KT8yNDB8KHIuaW5kZXhPZihBLnopKzF8fDIpOjI1NX1mdW5jdGlvbiB4KEEsVSxPKXt2YXIgRD1BLmwrVSx6PWwoQSxVLE8pO2lmKHpbMV0udD0icyIsKE8udmVycyY2NTUzNCk9PTIwNzY4KXtBLmwrKzt2YXIgcGU9QS5yZWFkX3NoaWZ0KDEpO3JldHVybiB6WzFdLnY9QS5yZWFkX3NoaWZ0KHBlLCJ1dGY4Iiksen1yZXR1cm4gTy5xcHJvJiZBLmwrKyx6WzFdLnY9QS5yZWFkX3NoaWZ0KEQtQS5sLCJjc3RyIiksen1mdW5jdGlvbiBoKEEsVSxPKXt2YXIgRD1mcig3K08ubGVuZ3RoKTtELndyaXRlX3NoaWZ0KDEsMjU1KSxELndyaXRlX3NoaWZ0KDIsVSksRC53cml0ZV9zaGlmdCgyLEEpLEQud3JpdGVfc2hpZnQoMSwzOSk7Zm9yKHZhciB6PTA7ejxELmxlbmd0aDsrK3ope3ZhciBwZT1PLmNoYXJDb2RlQXQoeik7RC53cml0ZV9zaGlmdCgxLHBlPj0xMjg/OTU6cGUpfXJldHVybiBELndyaXRlX3NoaWZ0KDEsMCksRH1mdW5jdGlvbiBnKEEsVSxPKXt2YXIgRD1BLmwrVSx6PWwoQSxVLE8pO2lmKHpbMV0udD0icyIsTy52ZXJzPT0yMDc2OCl7dmFyIHBlPUEucmVhZF9zaGlmdCgxKTtyZXR1cm4gelsxXS52PUEucmVhZF9zaGlmdChwZSwidXRmOCIpLHp9cmV0dXJuIHpbMV0udj1BLnJlYWRfc2hpZnQoRC1BLmwsImNzdHIiKSx6fWZ1bmN0aW9uIG0oQSxVLE8pe3ZhciBEPWwoQSxVLE8pO3JldHVybiBEWzFdLnY9QS5yZWFkX3NoaWZ0KDIsImkiKSxEfWZ1bmN0aW9uIGQoQSxVLE8pe3ZhciBEPWZyKDcpO3JldHVybiBELndyaXRlX3NoaWZ0KDEsdShPKSksRC53cml0ZV9zaGlmdCgyLFUpLEQud3JpdGVfc2hpZnQoMixBKSxELndyaXRlX3NoaWZ0KDIsTy52LCJpIiksRH1mdW5jdGlvbiBwKEEsVSxPKXt2YXIgRD1sKEEsVSxPKTtyZXR1cm4gRFsxXS52PUEucmVhZF9zaGlmdCg4LCJmIiksRH1mdW5jdGlvbiB3KEEsVSxPKXt2YXIgRD1mcigxMyk7cmV0dXJuIEQud3JpdGVfc2hpZnQoMSx1KE8pKSxELndyaXRlX3NoaWZ0KDIsVSksRC53cml0ZV9zaGlmdCgyLEEpLEQud3JpdGVfc2hpZnQoOCxPLnYsImYiKSxEfWZ1bmN0aW9uIF8oQSxVLE8pe3ZhciBEPUEubCtVLHo9bChBLFUsTyk7aWYoelsxXS52PUEucmVhZF9zaGlmdCg4LCJmIiksTy5xcHJvKUEubD1EO2Vsc2V7dmFyIHBlPUEucmVhZF9zaGlmdCgyKTtiKEEuc2xpY2UoQS5sLEEubCtwZSkseiksQS5sKz1wZX1yZXR1cm4gen1mdW5jdGlvbiB5KEEsVSxPKXt2YXIgRD1VJjMyNzY4O3JldHVybiBVJj0tMzI3NjksVT0oRD9BOjApKyhVPj04MTkyP1UtMTYzODQ6VSksKEQ/IiI6IiQiKSsoTz9IZShVKTpHZShVKSl9dmFyIFI9ezMxOlsiTkEiLDBdLDMzOlsiQUJTIiwxXSwzNDpbIlRSVU5DIiwxXSwzNTpbIlNRUlQiLDFdLDM2OlsiTE9HIiwxXSwzNzpbIkxOIiwxXSwzODpbIlBJIiwwXSwzOTpbIlNJTiIsMV0sNDA6WyJDT1MiLDFdLDQxOlsiVEFOIiwxXSw0MjpbIkFUQU4yIiwyXSw0MzpbIkFUQU4iLDFdLDQ0OlsiQVNJTiIsMV0sNDU6WyJBQ09TIiwxXSw0NjpbIkVYUCIsMV0sNDc6WyJNT0QiLDJdLDQ5OlsiSVNOQSIsMV0sNTA6WyJJU0VSUiIsMV0sNTE6WyJGQUxTRSIsMF0sNTI6WyJUUlVFIiwwXSw1MzpbIlJBTkQiLDBdLDU0OlsiREFURSIsM10sNjM6WyJST1VORCIsMl0sNjQ6WyJUSU1FIiwzXSw2ODpbIklTTlVNQkVSIiwxXSw2OTpbIklTVEVYVCIsMV0sNzA6WyJMRU4iLDFdLDcxOlsiVkFMVUUiLDFdLDczOlsiTUlEIiwzXSw3NDpbIkNIQVIiLDFdLDgwOlsiU1VNIiw2OV0sODE6WyJBVkVSQUdFQSIsNjldLDgyOlsiQ09VTlRBIiw2OV0sODM6WyJNSU5BIiw2OV0sODQ6WyJNQVhBIiw2OV0sMTAyOlsiVVBQRVIiLDFdLDEwMzpbIkxPV0VSIiwxXSwxMDc6WyJQUk9QRVIiLDFdLDEwOTpbIlRSSU0iLDFdLDExMTpbIlQiLDFdfSxQPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiKyIsIi0iLCIqIiwiLyIsIl4iLCI9IiwiPD4iLCI8PSIsIj49IiwiPCIsIj4iLCIiLCIiLCIiLCIiLCImIiwiIiwiIiwiIiwiIiwiIiwiIiwiIl07ZnVuY3Rpb24gYihBLFUpe3NyKEEsMCk7Zm9yKHZhciBPPVtdLEQ9MCx6PSIiLHBlPSIiLEo9IiIscmU9IiI7QS5sPEEubGVuZ3RoOyl7dmFyIGVlPUFbQS5sKytdO3N3aXRjaChlZSl7Y2FzZSAwOk8ucHVzaChBLnJlYWRfc2hpZnQoOCwiZiIpKTticmVhaztjYXNlIDE6cGU9eShVWzBdLmMsQS5yZWFkX3NoaWZ0KDIpLCEwKSx6PXkoVVswXS5yLEEucmVhZF9zaGlmdCgyKSwhMSksTy5wdXNoKHBlK3opO2JyZWFrO2Nhc2UgMjp7dmFyIGtlPXkoVVswXS5jLEEucmVhZF9zaGlmdCgyKSwhMCksaGU9eShVWzBdLnIsQS5yZWFkX3NoaWZ0KDIpLCExKTtwZT15KFVbMF0uYyxBLnJlYWRfc2hpZnQoMiksITApLHo9eShVWzBdLnIsQS5yZWFkX3NoaWZ0KDIpLCExKSxPLnB1c2goa2UraGUrIjoiK3BlK3opfWJyZWFrO2Nhc2UgMzppZihBLmw8QS5sZW5ndGgpe2NvbnNvbGUuZXJyb3IoIldLMSBwcmVtYXR1cmUgZm9ybXVsYSBlbmQiKTtyZXR1cm59YnJlYWs7Y2FzZSA0Ok8ucHVzaCgiKCIrTy5wb3AoKSsiKSIpO2JyZWFrO2Nhc2UgNTpPLnB1c2goQS5yZWFkX3NoaWZ0KDIpKTticmVhaztjYXNlIDY6e2Zvcih2YXIgeGU9IiI7ZWU9QVtBLmwrK107KXhlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGVlKTtPLnB1c2goJyInK3hlLnJlcGxhY2UoLyIvZywnIiInKSsnIicpfWJyZWFrO2Nhc2UgODpPLnB1c2goIi0iK08ucG9wKCkpO2JyZWFrO2Nhc2UgMjM6Ty5wdXNoKCIrIitPLnBvcCgpKTticmVhaztjYXNlIDIyOk8ucHVzaCgiTk9UKCIrTy5wb3AoKSsiKSIpO2JyZWFrO2Nhc2UgMjA6Y2FzZSAyMTpyZT1PLnBvcCgpLEo9Ty5wb3AoKSxPLnB1c2goWyJBTkQiLCJPUiJdW2VlLTIwXSsiKCIrSisiLCIrcmUrIikiKTticmVhaztkZWZhdWx0OmlmKGVlPDMyJiZQW2VlXSlyZT1PLnBvcCgpLEo9Ty5wb3AoKSxPLnB1c2goSitQW2VlXStyZSk7ZWxzZSBpZihSW2VlXSl7aWYoRD1SW2VlXVsxXSxEPT02OSYmKEQ9QVtBLmwrK10pLEQ+Ty5sZW5ndGgpe2NvbnNvbGUuZXJyb3IoIldLMSBiYWQgZm9ybXVsYSBwYXJzZSAweCIrZWUudG9TdHJpbmcoMTYpKyI6fCIrTy5qb2luKCJ8IikrInwiKTtyZXR1cm59dmFyIFhlPU8uc2xpY2UoLUQpO08ubGVuZ3RoLT1ELE8ucHVzaChSW2VlXVswXSsiKCIrWGUuam9pbigiLCIpKyIpIil9ZWxzZSByZXR1cm4gZWU8PTc/Y29uc29sZS5lcnJvcigiV0sxIGludmFsaWQgb3Bjb2RlICIrZWUudG9TdHJpbmcoMTYpKTplZTw9MjQ/Y29uc29sZS5lcnJvcigiV0sxIHVuc3VwcG9ydGVkIG9wICIrZWUudG9TdHJpbmcoMTYpKTplZTw9MzA/Y29uc29sZS5lcnJvcigiV0sxIGludmFsaWQgb3Bjb2RlICIrZWUudG9TdHJpbmcoMTYpKTplZTw9MTE1P2NvbnNvbGUuZXJyb3IoIldLMSB1bnN1cHBvcnRlZCBmdW5jdGlvbiBvcGNvZGUgIitlZS50b1N0cmluZygxNikpOmNvbnNvbGUuZXJyb3IoIldLMSB1bnJlY29nbml6ZWQgb3Bjb2RlICIrZWUudG9TdHJpbmcoMTYpKX19Ty5sZW5ndGg9PTE/VVsxXS5mPSIiK09bMF06Y29uc29sZS5lcnJvcigiV0sxIGJhZCBmb3JtdWxhIHBhcnNlIHwiK08uam9pbigifCIpKyJ8Iil9ZnVuY3Rpb24gTihBKXt2YXIgVT1be2M6MCxyOjB9LHt0OiJuIix2OjB9LDBdO3JldHVybiBVWzBdLnI9QS5yZWFkX3NoaWZ0KDIpLFVbM109QVtBLmwrK10sVVswXS5jPUFbQS5sKytdLFV9ZnVuY3Rpb24gSShBLFUpe3ZhciBPPU4oQSk7cmV0dXJuIE9bMV0udD0icyIsT1sxXS52PUEucmVhZF9zaGlmdChVLTQsImNzdHIiKSxPfWZ1bmN0aW9uIEIoQSxVLE8sRCl7dmFyIHo9ZnIoNitELmxlbmd0aCk7ei53cml0ZV9zaGlmdCgyLEEpLHoud3JpdGVfc2hpZnQoMSxPKSx6LndyaXRlX3NoaWZ0KDEsVSksei53cml0ZV9zaGlmdCgxLDM5KTtmb3IodmFyIHBlPTA7cGU8RC5sZW5ndGg7KytwZSl7dmFyIEo9RC5jaGFyQ29kZUF0KHBlKTt6LndyaXRlX3NoaWZ0KDEsSj49MTI4Pzk1OkopfXJldHVybiB6LndyaXRlX3NoaWZ0KDEsMCksen1mdW5jdGlvbiBMKEEsVSl7dmFyIE89TihBKTtPWzFdLnY9QS5yZWFkX3NoaWZ0KDIpO3ZhciBEPU9bMV0udj4+MTtpZihPWzFdLnYmMSlzd2l0Y2goRCY3KXtjYXNlIDA6RD0oRD4+MykqNWUzO2JyZWFrO2Nhc2UgMTpEPShEPj4zKSo1MDA7YnJlYWs7Y2FzZSAyOkQ9KEQ+PjMpLzIwO2JyZWFrO2Nhc2UgMzpEPShEPj4zKS8yMDA7YnJlYWs7Y2FzZSA0OkQ9KEQ+PjMpLzJlMzticmVhaztjYXNlIDU6RD0oRD4+MykvMmU0O2JyZWFrO2Nhc2UgNjpEPShEPj4zKS8xNjticmVhaztjYXNlIDc6RD0oRD4+MykvNjQ7YnJlYWt9cmV0dXJuIE9bMV0udj1ELE99ZnVuY3Rpb24gRyhBLFUpe3ZhciBPPU4oQSksRD1BLnJlYWRfc2hpZnQoNCksej1BLnJlYWRfc2hpZnQoNCkscGU9QS5yZWFkX3NoaWZ0KDIpO2lmKHBlPT02NTUzNSlyZXR1cm4gRD09PTAmJno9PT0zMjIxMjI1NDcyPyhPWzFdLnQ9ImUiLE9bMV0udj0xNSk6RD09PTAmJno9PT0zNDg5NjYwOTI4PyhPWzFdLnQ9ImUiLE9bMV0udj00Mik6T1sxXS52PTAsTzt2YXIgSj1wZSYzMjc2ODtyZXR1cm4gcGU9KHBlJjMyNzY3KS0xNjQ0NixPWzFdLnY9KDEtSioyKSooeipNYXRoLnBvdygyLHBlKzMyKStEKk1hdGgucG93KDIscGUpKSxPfWZ1bmN0aW9uIGllKEEsVSxPLEQpe3ZhciB6PWZyKDE0KTtpZih6LndyaXRlX3NoaWZ0KDIsQSksei53cml0ZV9zaGlmdCgxLE8pLHoud3JpdGVfc2hpZnQoMSxVKSxEPT0wKXJldHVybiB6LndyaXRlX3NoaWZ0KDQsMCksei53cml0ZV9zaGlmdCg0LDApLHoud3JpdGVfc2hpZnQoMiw2NTUzNSksejt2YXIgcGU9MCxKPTAscmU9MCxlZT0wO3JldHVybiBEPDAmJihwZT0xLEQ9LUQpLEo9TWF0aC5sb2cyKEQpfDAsRC89TWF0aC5wb3coMixKLTMxKSxlZT1EPj4+MCxlZSYyMTQ3NDgzNjQ4fHwoRC89MiwrK0osZWU9RD4+PjApLEQtPWVlLGVlfD0yMTQ3NDgzNjQ4LGVlPj4+PTAsRCo9TWF0aC5wb3coMiwzMikscmU9RD4+PjAsei53cml0ZV9zaGlmdCg0LHJlKSx6LndyaXRlX3NoaWZ0KDQsZWUpLEorPTE2MzgzKyhwZT8zMjc2ODowKSx6LndyaXRlX3NoaWZ0KDIsSiksen1mdW5jdGlvbiBuZShBLFUpe3ZhciBPPUcoQSk7cmV0dXJuIEEubCs9VS0xNCxPfWZ1bmN0aW9uIHEoQSxVKXt2YXIgTz1OKEEpLEQ9QS5yZWFkX3NoaWZ0KDQpO3JldHVybiBPWzFdLnY9RD4+NixPfWZ1bmN0aW9uIGxlKEEsVSl7dmFyIE89TihBKSxEPUEucmVhZF9zaGlmdCg4LCJmIik7cmV0dXJuIE9bMV0udj1ELE99ZnVuY3Rpb24gUShBLFUpe3ZhciBPPWxlKEEpO3JldHVybiBBLmwrPVUtMTIsT31mdW5jdGlvbiBnZShBLFUpe3JldHVybiBBW0EubCtVLTFdPT0wP0EucmVhZF9zaGlmdChVLCJjc3RyIik6IiJ9ZnVuY3Rpb24gdWUoQSxVKXt2YXIgTz1BW0EubCsrXTtPPlUtMSYmKE89VS0xKTtmb3IodmFyIEQ9IiI7RC5sZW5ndGg8TzspRCs9U3RyaW5nLmZyb21DaGFyQ29kZShBW0EubCsrXSk7cmV0dXJuIER9ZnVuY3Rpb24gaihBLFUsTyl7aWYoISghTy5xcHJvfHxVPDIxKSl7dmFyIEQ9QS5yZWFkX3NoaWZ0KDEpO0EubCs9MTcsQS5sKz0xLEEubCs9Mjt2YXIgej1BLnJlYWRfc2hpZnQoVS0yMSwiY3N0ciIpO3JldHVybltELHpdfX1mdW5jdGlvbiB5ZShBLFUpe2Zvcih2YXIgTz17fSxEPUEubCtVO0EubDxEOyl7dmFyIHo9QS5yZWFkX3NoaWZ0KDIpO2lmKHo9PTE0ZTMpe2ZvcihPW3pdPVswLCIiXSxPW3pdWzBdPUEucmVhZF9zaGlmdCgyKTtBW0EubF07KU9bel1bMV0rPVN0cmluZy5mcm9tQ2hhckNvZGUoQVtBLmxdKSxBLmwrKztBLmwrK319cmV0dXJuIE99ZnVuY3Rpb24gYmUoQSxVKXt2YXIgTz1mcig1K0EubGVuZ3RoKTtPLndyaXRlX3NoaWZ0KDIsMTRlMyksTy53cml0ZV9zaGlmdCgyLFUpO2Zvcih2YXIgRD0wO0Q8QS5sZW5ndGg7KytEKXt2YXIgej1BLmNoYXJDb2RlQXQoRCk7T1tPLmwrK109ej4xMjc/OTU6en1yZXR1cm4gT1tPLmwrK109MCxPfXZhciBtZT17MDp7bjoiQk9GIixmOmVyfSwxOntuOiJFT0YifSwyOntuOiJDQUxDTU9ERSJ9LDM6e246IkNBTENPUkRFUiJ9LDQ6e246IlNQTElUIn0sNTp7bjoiU1lOQyJ9LDY6e246IlJBTkdFIixmOmN9LDc6e246IldJTkRPVzEifSw4OntuOiJDT0xXMSJ9LDk6e246IldJTlRXTyJ9LDEwOntuOiJDT0xXMiJ9LDExOntuOiJOQU1FIn0sMTI6e246IkJMQU5LIn0sMTM6e246IklOVEVHRVIiLGY6bX0sMTQ6e246Ik5VTUJFUiIsZjpwfSwxNTp7bjoiTEFCRUwiLGY6eH0sMTY6e246IkZPUk1VTEEiLGY6X30sMjQ6e246IlRBQkxFIn0sMjU6e246Ik9SQU5HRSJ9LDI2OntuOiJQUkFOR0UifSwyNzp7bjoiU1JBTkdFIn0sMjg6e246IkZSQU5HRSJ9LDI5OntuOiJLUkFOR0UxIn0sMzI6e246IkhSQU5HRSJ9LDM1OntuOiJLUkFOR0UyIn0sMzY6e246IlBST1RFQyJ9LDM3OntuOiJGT09URVIifSwzODp7bjoiSEVBREVSIn0sMzk6e246IlNFVFVQIn0sNDA6e246Ik1BUkdJTlMifSw0MTp7bjoiTEFCRUxGTVQifSw0Mjp7bjoiVElUTEVTIn0sNDM6e246IlNIRUVUSlMifSw0NTp7bjoiR1JBUEgifSw0Njp7bjoiTkdSQVBIIn0sNDc6e246IkNBTENDT1VOVCJ9LDQ4OntuOiJVTkZPUk1BVFRFRCJ9LDQ5OntuOiJDVVJTT1JXMTIifSw1MDp7bjoiV0lORE9XIn0sNTE6e246IlNUUklORyIsZjpnfSw1NTp7bjoiUEFTU1dPUkQifSw1Njp7bjoiTE9DS0VEIn0sNjA6e246IlFVRVJZIn0sNjE6e246IlFVRVJZTkFNRSJ9LDYyOntuOiJQUklOVCJ9LDYzOntuOiJQUklOVE5BTUUifSw2NDp7bjoiR1JBUEgyIn0sNjU6e246IkdSQVBITkFNRSJ9LDY2OntuOiJaT09NIn0sNjc6e246IlNZTVNQTElUIn0sNjg6e246Ik5TUk9XUyJ9LDY5OntuOiJOU0NPTFMifSw3MDp7bjoiUlVMRVIifSw3MTp7bjoiTk5BTUUifSw3Mjp7bjoiQUNPTU0ifSw3Mzp7bjoiQU1BQ1JPIn0sNzQ6e246IlBBUlNFIn0sMTAyOntuOiJQUkFOR0VTPz8ifSwxMDM6e246IlJSQU5HRVM/PyJ9LDEwNDp7bjoiRk5BTUU/PyJ9LDEwNTp7bjoiTVJBTkdFUz8/In0sMjA0OntuOiJTSEVFVE5BTUVDUyIsZjpnZX0sMjIyOntuOiJTSEVFVE5BTUVMUCIsZjp1ZX0sMjU1OntuOiJCT0YiLGY6ZXJ9LDIxNTA2OntuOiJXS1NORiIsZjplcn0sNjU1MzU6e246IiJ9fSxaPXswOntuOiJCT0YifSwxOntuOiJFT0YifSwyOntuOiJQQVNTV09SRCJ9LDM6e246IkNBTENTRVQifSw0OntuOiJXSU5ET1dTRVQifSw1OntuOiJTSEVFVENFTExQVFIifSw2OntuOiJTSEVFVExBWU9VVCJ9LDc6e246IkNPTFVNTldJRFRIIn0sODp7bjoiSElEREVOQ09MVU1OIn0sOTp7bjoiVVNFUlJBTkdFIn0sMTA6e246IlNZU1RFTVJBTkdFIn0sMTE6e246IlpFUk9GT1JDRSJ9LDEyOntuOiJTT1JUS0VZRElSIn0sMTM6e246IkZJTEVTRUFMIn0sMTQ6e246IkRBVEFGSUxMTlVNUyJ9LDE1OntuOiJQUklOVE1BSU4ifSwxNjp7bjoiUFJJTlRTVFJJTkcifSwxNzp7bjoiR1JBUEhNQUlOIn0sMTg6e246IkdSQVBIU1RSSU5HIn0sMTk6e246Ij8/In0sMjA6e246IkVSUkNFTEwifSwyMTp7bjoiTkFDRUxMIn0sMjI6e246IkxBQkVMMTYiLGY6SX0sMjM6e246Ik5VTUJFUjE3IixmOkd9LDI0OntuOiJOVU1CRVIxOCIsZjpMfSwyNTp7bjoiRk9STVVMQTE5IixmOm5lfSwyNjp7bjoiRk9STVVMQTFBIn0sMjc6e246IlhGT1JNQVQiLGY6eWV9LDI4OntuOiJEVExBQkVMTUlTQyJ9LDI5OntuOiJEVExBQkVMQ0VMTCJ9LDMwOntuOiJHUkFQSFdJTkRPVyJ9LDMxOntuOiJDUEEifSwzMjp7bjoiTFBMQVVUTyJ9LDMzOntuOiJRVUVSWSJ9LDM0OntuOiJISURERU5TSEVFVCJ9LDM1OntuOiI/PyJ9LDM3OntuOiJOVU1CRVIyNSIsZjpxfSwzODp7bjoiPz8ifSwzOTp7bjoiTlVNQkVSMjciLGY6bGV9LDQwOntuOiJGT1JNVUxBMjgiLGY6UX0sMTQyOntuOiI/PyJ9LDE0Nzp7bjoiPz8ifSwxNTA6e246Ij8/In0sMTUxOntuOiI/PyJ9LDE1Mjp7bjoiPz8ifSwxNTM6e246Ij8/In0sMTU0OntuOiI/PyJ9LDE1NTp7bjoiPz8ifSwxNTY6e246Ij8/In0sMTYzOntuOiI/PyJ9LDE3NDp7bjoiPz8ifSwxNzU6e246Ij8/In0sMTc2OntuOiI/PyJ9LDE3Nzp7bjoiPz8ifSwxODQ6e246Ij8/In0sMTg1OntuOiI/PyJ9LDE4Njp7bjoiPz8ifSwxODc6e246Ij8/In0sMTg4OntuOiI/PyJ9LDE5NTp7bjoiPz8ifSwyMDE6e246Ij8/In0sMjA0OntuOiJTSEVFVE5BTUVDUyIsZjpnZX0sMjA1OntuOiI/PyJ9LDIwNjp7bjoiPz8ifSwyMDc6e246Ij8/In0sMjA4OntuOiI/PyJ9LDI1Njp7bjoiPz8ifSwyNTk6e246Ij8/In0sMjYwOntuOiI/PyJ9LDI2MTp7bjoiPz8ifSwyNjI6e246Ij8/In0sMjYzOntuOiI/PyJ9LDI2NTp7bjoiPz8ifSwyNjY6e246Ij8/In0sMjY3OntuOiI/PyJ9LDI2ODp7bjoiPz8ifSwyNzA6e246Ij8/In0sMjcxOntuOiI/PyJ9LDM4NDp7bjoiPz8ifSwzODk6e246Ij8/In0sMzkwOntuOiI/PyJ9LDM5Mzp7bjoiPz8ifSwzOTY6e246Ij8/In0sNTEyOntuOiI/PyJ9LDUxNDp7bjoiPz8ifSw1MTM6e246Ij8/In0sNTE2OntuOiI/PyJ9LDUxNzp7bjoiPz8ifSw2NDA6e246Ij8/In0sNjQxOntuOiI/PyJ9LDY0Mjp7bjoiPz8ifSw2NDM6e246Ij8/In0sNjQ0OntuOiI/PyJ9LDY0NTp7bjoiPz8ifSw2NDY6e246Ij8/In0sNjQ3OntuOiI/PyJ9LDY0ODp7bjoiPz8ifSw2NTg6e246Ij8/In0sNjU5OntuOiI/PyJ9LDY2MDp7bjoiPz8ifSw2NjE6e246Ij8/In0sNjYyOntuOiI/PyJ9LDY2NTp7bjoiPz8ifSw2NjY6e246Ij8/In0sNzY4OntuOiI/PyJ9LDc3Mjp7bjoiPz8ifSwxNTM3OntuOiJTSEVFVElORk9RUCIsZjpqfSwxNjAwOntuOiI/PyJ9LDE2MDI6e246Ij8/In0sMTc5Mzp7bjoiPz8ifSwxNzk0OntuOiI/PyJ9LDE3OTU6e246Ij8/In0sMTc5Njp7bjoiPz8ifSwxOTIwOntuOiI/PyJ9LDIwNDg6e246Ij8/In0sMjA0OTp7bjoiPz8ifSwyMDUyOntuOiI/PyJ9LDI2ODg6e246Ij8/In0sMTA5OTg6e246Ij8/In0sMTI4NDk6e246Ij8/In0sMjgyMzM6e246Ij8/In0sMjg0ODQ6e246Ij8/In0sNjU1MzU6e246IiJ9fSxPZT17NToiZGQtbW1tLXl5Iiw2OiJkZC1tbW0iLDc6Im1tbS15eSIsODoibW0vZGQveXkiLDEwOiJoaDptbTpzcyBBTS9QTSIsMTE6ImhoOm1tIEFNL1BNIiwxNDoiZGQtbW1tLXl5eXkiLDE1OiJtbW0teXl5eSIsMzQ6IjAuMDAiLDUwOiIwLjAwO1tSZWRdMC4wMCIsNjY6IjAuMDA7KDAuMDApIiw4MjoiMC4wMDtbUmVkXSgwLjAwKSIsMTYyOiciJCIjLCMjMC4wMDtcXCgiJCIjLCMjMC4wMFxcKScsMjg4OiIwJSIsMzA0OiIwRSswMCIsMzIwOiIjID8vPyJ9O2Z1bmN0aW9uIHdlKEEpe3ZhciBVPUEucmVhZF9zaGlmdCgyKSxPPUEucmVhZF9zaGlmdCgxKTtpZihPIT0wKXRocm93InVuc3VwcG9ydGVkIFFQVyBzdHJpbmcgdHlwZSAiK08udG9TdHJpbmcoMTYpO3JldHVybiBBLnJlYWRfc2hpZnQoVSwic2Jjcy1jb250Iil9ZnVuY3Rpb24gQWUoQSxVKXtzcihBLDApO3ZhciBPPVV8fHt9LEQ9e307Ty5kZW5zZSYmKERbIiFkYXRhIl09W10pO3ZhciB6PVtdLHBlPSIiLEo9e3M6e3I6LTEsYzotMX0sZTp7cjotMSxjOi0xfX0scmU9MCxlZT0wLGtlPTAsaGU9MCx4ZT17U2hlZXROYW1lczpbXSxTaGVldHM6e319LFhlPVtdO2U6Zm9yKDtBLmw8QS5sZW5ndGg7KXt2YXIgemU9QS5yZWFkX3NoaWZ0KDIpLGplPUEucmVhZF9zaGlmdCgyKSxkZT1BLnNsaWNlKEEubCxBLmwramUpO3N3aXRjaChzcihkZSwwKSx6ZSl7Y2FzZSAxOmlmKGRlLnJlYWRfc2hpZnQoNCkhPTk2MjAyMzUwNSl0aHJvdyJCYWQgUVBXOSBCT0YhIjticmVhaztjYXNlIDI6YnJlYWsgZTtjYXNlIDg6YnJlYWs7Y2FzZSAxMDpmb3IodmFyIFdlPWRlLnJlYWRfc2hpZnQoNCksZmU9KGRlLmxlbmd0aC1kZS5sKS9XZXwwLHNhPTA7c2E8V2U7KytzYSl7dmFyIGpyPWRlLmwrZmUsWWU9e307ZGUubCs9MixZZS5udW1GbXRJZD1kZS5yZWFkX3NoaWZ0KDIpLE9lW1llLm51bUZtdElkXSYmKFllLno9T2VbWWUubnVtRm10SWRdKSxkZS5sPWpyLFhlLnB1c2goWWUpfWJyZWFrO2Nhc2UgMTAyNTpicmVhaztjYXNlIDEwMjY6YnJlYWs7Y2FzZSAxMDMxOmZvcihkZS5sKz0xMjtkZS5sPGRlLmxlbmd0aDspcmU9ZGUucmVhZF9zaGlmdCgyKSxlZT1kZS5yZWFkX3NoaWZ0KDEpLHoucHVzaChkZS5yZWFkX3NoaWZ0KHJlLCJjc3RyIikpO2JyZWFrO2Nhc2UgMTAzMjpicmVhaztjYXNlIDE1Mzc6e3ZhciBSYT1kZS5yZWFkX3NoaWZ0KDIpO0Q9e30sTy5kZW5zZSYmKERbIiFkYXRhIl09W10pLEoucy5jPWRlLnJlYWRfc2hpZnQoMiksSi5lLmM9ZGUucmVhZF9zaGlmdCgyKSxKLnMucj1kZS5yZWFkX3NoaWZ0KDQpLEouZS5yPWRlLnJlYWRfc2hpZnQoNCksZGUubCs9NCxkZS5sKzI8ZGUubGVuZ3RoJiYocmU9ZGUucmVhZF9zaGlmdCgyKSxlZT1kZS5yZWFkX3NoaWZ0KDEpLHBlPXJlPT0wPyIiOmRlLnJlYWRfc2hpZnQocmUsImNzdHIiKSkscGV8fChwZT1IZShSYSkpfWJyZWFrO2Nhc2UgMTUzODp7aWYoSi5zLmM+MjU1fHxKLnMucj45OTk5OTkpYnJlYWs7Si5lLmM8Si5zLmMmJihKLmUuYz1KLnMuYyksSi5lLnI8Si5zLnImJihKLmUucj1KLnMuciksRFsiIXJlZiJdPUllKEopLFp0KHhlLEQscGUpfWJyZWFrO2Nhc2UgMjU2MTprZT1kZS5yZWFkX3NoaWZ0KDIpLEouZS5jPGtlJiYoSi5lLmM9a2UpLEoucy5jPmtlJiYoSi5zLmM9a2UpLGhlPWRlLnJlYWRfc2hpZnQoNCksSi5zLnI+aGUmJihKLnMucj1oZSksaGU9ZGUucmVhZF9zaGlmdCg0KSxKLmUucjxoZSYmKEouZS5yPWhlKTticmVhaztjYXNlIDMwNzM6e2hlPWRlLnJlYWRfc2hpZnQoNCkscmU9ZGUucmVhZF9zaGlmdCg0KSxKLnMucj5oZSYmKEoucy5yPWhlKSxKLmUucjxoZStyZS0xJiYoSi5lLnI9aGUrcmUtMSk7Zm9yKHZhciBPYT1IZShrZSk7ZGUubDxkZS5sZW5ndGg7KXt2YXIgRWU9e3Q6InoifSxycj1kZS5yZWFkX3NoaWZ0KDEpLEZyPS0xO3JyJjEyOCYmKEZyPWRlLnJlYWRfc2hpZnQoMikpO3ZhciBGYT1yciY2ND9kZS5yZWFkX3NoaWZ0KDIpLTE6MDtzd2l0Y2gocnImMzEpe2Nhc2UgMDpicmVhaztjYXNlIDE6YnJlYWs7Y2FzZSAyOkVlPXt0OiJuIix2OmRlLnJlYWRfc2hpZnQoMil9O2JyZWFrO2Nhc2UgMzpFZT17dDoibiIsdjpkZS5yZWFkX3NoaWZ0KDIsImkiKX07YnJlYWs7Y2FzZSA0OkVlPXt0OiJuIix2OnYwKGRlKX07YnJlYWs7Y2FzZSA1OkVlPXt0OiJuIix2OmRlLnJlYWRfc2hpZnQoOCwiZiIpfTticmVhaztjYXNlIDc6RWU9e3Q6InMiLHY6eltlZT1kZS5yZWFkX3NoaWZ0KDQpLTFdfTticmVhaztjYXNlIDg6RWU9e3Q6Im4iLHY6ZGUucmVhZF9zaGlmdCg4LCJmIil9LGRlLmwrPTIsZGUubCs9NCxpc05hTihFZS52KSYmKEVlPXt0OiJlIix2OjE1fSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyJVbnJlY29nbml6ZWQgUVBXIGNlbGwgdHlwZSAiKyhyciYzMSl9RnIhPS0xJiYoWGVbRnItMV18fHt9KS56JiYoRWUuej1YZVtGci0xXS56KTt2YXIgQz0wO2lmKHJyJjMyKXN3aXRjaChyciYzMSl7Y2FzZSAyOkM9ZGUucmVhZF9zaGlmdCgyKTticmVhaztjYXNlIDM6Qz1kZS5yZWFkX3NoaWZ0KDIsImkiKTticmVhaztjYXNlIDc6Qz1kZS5yZWFkX3NoaWZ0KDIpO2JyZWFrO2RlZmF1bHQ6dGhyb3ciVW5zdXBwb3J0ZWQgZGVsdGEgZm9yIFFQVyBjZWxsIHR5cGUgIisocnImMzEpfWlmKCEoIU8uc2hlZXRTdHVicyYmRWUudD09InoiKSl7dmFyIEJyPVVlKEVlKTtFZS50PT0ibiImJkVlLnomJlpyKEVlLnopJiZPLmNlbGxEYXRlcyYmKEJyLnY9U2EoRWUudiksQnIudD10eXBlb2YgQnIudj09Im51bWJlciI/Im4iOiJkIiksRFsiIWRhdGEiXSE9bnVsbD8oRFsiIWRhdGEiXVtoZV18fChEWyIhZGF0YSJdW2hlXT1bXSksRFsiIWRhdGEiXVtoZV1ba2VdPUJyKTpEW09hK0dlKGhlKV09QnJ9Zm9yKCsraGUsLS1yZTtGYS0tID4wJiZyZT49MDspe2lmKHJyJjMyKXN3aXRjaChyciYzMSl7Y2FzZSAyOkVlPXt0OiJuIix2OkVlLnYrQyY2NTUzNX07YnJlYWs7Y2FzZSAzOkVlPXt0OiJuIix2OkVlLnYrQyY2NTUzNX0sRWUudj4zMjc2NyYmKEVlLnYtPTY1NTM2KTticmVhaztjYXNlIDc6RWU9e3Q6InMiLHY6eltlZT1lZStDPj4+MF19O2JyZWFrO2RlZmF1bHQ6dGhyb3ciQ2Fubm90IGFwcGx5IGRlbHRhIGZvciBRUFcgY2VsbCB0eXBlICIrKHJyJjMxKX1lbHNlIHN3aXRjaChyciYzMSl7Y2FzZSAxOkVlPXt0OiJ6In07YnJlYWs7Y2FzZSAyOkVlPXt0OiJuIix2OmRlLnJlYWRfc2hpZnQoMil9O2JyZWFrO2Nhc2UgNzpFZT17dDoicyIsdjp6W2VlPWRlLnJlYWRfc2hpZnQoNCktMV19O2JyZWFrO2RlZmF1bHQ6dGhyb3ciQ2Fubm90IGFwcGx5IHJlcGVhdCBmb3IgUVBXIGNlbGwgdHlwZSAiKyhyciYzMSl9IU8uc2hlZXRTdHVicyYmRWUudD09InoifHwoRFsiIWRhdGEiXSE9bnVsbD8oRFsiIWRhdGEiXVtoZV18fChEWyIhZGF0YSJdW2hlXT1bXSksRFsiIWRhdGEiXVtoZV1ba2VdPUVlKTpEW09hK0dlKGhlKV09RWUpLCsraGUsLS1yZX19fWJyZWFrO2Nhc2UgMzA3NDp7a2U9ZGUucmVhZF9zaGlmdCgyKSxoZT1kZS5yZWFkX3NoaWZ0KDQpO3ZhciBfdD13ZShkZSk7RFsiIWRhdGEiXSE9bnVsbD8oRFsiIWRhdGEiXVtoZV18fChEWyIhZGF0YSJdW2hlXT1bXSksRFsiIWRhdGEiXVtoZV1ba2VdPXt0OiJzIix2Ol90fSk6RFtIZShrZSkrR2UoaGUpXT17dDoicyIsdjpfdH19YnJlYWt9QS5sKz1qZX1yZXR1cm4geGV9cmV0dXJue3NoZWV0X3RvX3drMTpuLGJvb2tfdG9fd2szOmksdG9fd29ya2Jvb2s6YX19KCk7ZnVuY3Rpb24gUHUoZSl7dmFyIGE9e30scj1lLm1hdGNoKG5yKSx0PTAsbj0hMTtpZihyKWZvcig7dCE9ci5sZW5ndGg7Kyt0KXt2YXIgaT1vZShyW3RdKTtzd2l0Y2goaVswXS5yZXBsYWNlKC88XHcqOi9nLCI8Iikpe2Nhc2UiPGNvbmRlbnNlIjpicmVhaztjYXNlIjxleHRlbmQiOmJyZWFrO2Nhc2UiPHNoYWRvdyI6aWYoIWkudmFsKWJyZWFrO2Nhc2UiPHNoYWRvdz4iOmNhc2UiPHNoYWRvdy8+IjphLnNoYWRvdz0xO2JyZWFrO2Nhc2UiPC9zaGFkb3c+IjpicmVhaztjYXNlIjxjaGFyc2V0IjppZihpLnZhbD09IjEiKWJyZWFrO2EuY3A9RzBbcGFyc2VJbnQoaS52YWwsMTApXTticmVhaztjYXNlIjxvdXRsaW5lIjppZighaS52YWwpYnJlYWs7Y2FzZSI8b3V0bGluZT4iOmNhc2UiPG91dGxpbmUvPiI6YS5vdXRsaW5lPTE7YnJlYWs7Y2FzZSI8L291dGxpbmU+IjpicmVhaztjYXNlIjxyRm9udCI6YS5uYW1lPWkudmFsO2JyZWFrO2Nhc2UiPHN6IjphLnN6PWkudmFsO2JyZWFrO2Nhc2UiPHN0cmlrZSI6aWYoIWkudmFsKWJyZWFrO2Nhc2UiPHN0cmlrZT4iOmNhc2UiPHN0cmlrZS8+IjphLnN0cmlrZT0xO2JyZWFrO2Nhc2UiPC9zdHJpa2U+IjpicmVhaztjYXNlIjx1IjppZighaS52YWwpYnJlYWs7c3dpdGNoKGkudmFsKXtjYXNlImRvdWJsZSI6YS51dmFsPSJkb3VibGUiO2JyZWFrO2Nhc2Uic2luZ2xlQWNjb3VudGluZyI6YS51dmFsPSJzaW5nbGUtYWNjb3VudGluZyI7YnJlYWs7Y2FzZSJkb3VibGVBY2NvdW50aW5nIjphLnV2YWw9ImRvdWJsZS1hY2NvdW50aW5nIjticmVha31jYXNlIjx1PiI6Y2FzZSI8dS8+IjphLnU9MTticmVhaztjYXNlIjwvdT4iOmJyZWFrO2Nhc2UiPGIiOmlmKGkudmFsPT0iMCIpYnJlYWs7Y2FzZSI8Yj4iOmNhc2UiPGIvPiI6YS5iPTE7YnJlYWs7Y2FzZSI8L2I+IjpicmVhaztjYXNlIjxpIjppZihpLnZhbD09IjAiKWJyZWFrO2Nhc2UiPGk+IjpjYXNlIjxpLz4iOmEuaT0xO2JyZWFrO2Nhc2UiPC9pPiI6YnJlYWs7Y2FzZSI8Y29sb3IiOmkucmdiJiYoYS5jb2xvcj1pLnJnYi5zbGljZSgyLDgpKTticmVhaztjYXNlIjxjb2xvcj4iOmNhc2UiPGNvbG9yLz4iOmNhc2UiPC9jb2xvcj4iOmJyZWFrO2Nhc2UiPGZhbWlseSI6YS5mYW1pbHk9aS52YWw7YnJlYWs7Y2FzZSI8ZmFtaWx5PiI6Y2FzZSI8ZmFtaWx5Lz4iOmNhc2UiPC9mYW1pbHk+IjpicmVhaztjYXNlIjx2ZXJ0QWxpZ24iOmEudmFsaWduPWkudmFsO2JyZWFrO2Nhc2UiPHZlcnRBbGlnbj4iOmNhc2UiPHZlcnRBbGlnbi8+IjpjYXNlIjwvdmVydEFsaWduPiI6YnJlYWs7Y2FzZSI8c2NoZW1lIjpicmVhaztjYXNlIjxzY2hlbWU+IjpjYXNlIjxzY2hlbWUvPiI6Y2FzZSI8L3NjaGVtZT4iOmJyZWFrO2Nhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmJyZWFrO2Nhc2UiPGV4dCI6bj0hMDticmVhaztjYXNlIjwvZXh0PiI6bj0hMTticmVhaztkZWZhdWx0OmlmKGlbMF0uY2hhckNvZGVBdCgxKSE9PTQ3JiYhbil0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCByaWNoIGZvcm1hdCAiK2lbMF0pfX1yZXR1cm4gYX12YXIgTHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3ZhciBuPUxlKHQsInQiKTtpZighbilyZXR1cm57dDoicyIsdjoiIn07dmFyIGk9e3Q6InMiLHY6Q2UoblsxXSl9LGY9TGUodCwiclByIik7cmV0dXJuIGYmJihpLnM9UHUoZlsxXSkpLGl9dmFyIGE9LzwoPzpcdys6KT9yPi9nLHI9LzxcLyg/Olx3KzopP3I+LztyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIG4ucmVwbGFjZShhLCIiKS5zcGxpdChyKS5tYXAoZSkuZmlsdGVyKGZ1bmN0aW9uKGkpe3JldHVybiBpLnZ9KX19KCksQnU9ZnVuY3Rpb24oKXt2YXIgYT0vKFxyXG58XG4pL2c7ZnVuY3Rpb24gcihuLGksZil7dmFyIHM9W107bi51JiZzLnB1c2goInRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyIpLG4udXZhbCYmcy5wdXNoKCJ0ZXh0LXVuZGVybGluZS1zdHlsZToiK24udXZhbCsiOyIpLG4uc3omJnMucHVzaCgiZm9udC1zaXplOiIrbi5zeisicHQ7Iiksbi5vdXRsaW5lJiZzLnB1c2goInRleHQtZWZmZWN0OiBvdXRsaW5lOyIpLG4uc2hhZG93JiZzLnB1c2goInRleHQtc2hhZG93OiBhdXRvOyIpLGkucHVzaCgnPHNwYW4gc3R5bGU9Iicrcy5qb2luKCIiKSsnIj4nKSxuLmImJihpLnB1c2goIjxiPiIpLGYucHVzaCgiPC9iPiIpKSxuLmkmJihpLnB1c2goIjxpPiIpLGYucHVzaCgiPC9pPiIpKSxuLnN0cmlrZSYmKGkucHVzaCgiPHM+IiksZi5wdXNoKCI8L3M+IikpO3ZhciBjPW4udmFsaWdufHwiIjtyZXR1cm4gYz09InN1cGVyc2NyaXB0Inx8Yz09InN1cGVyIj9jPSJzdXAiOmM9PSJzdWJzY3JpcHQiJiYoYz0ic3ViIiksYyE9IiImJihpLnB1c2goIjwiK2MrIj4iKSxmLnB1c2goIjwvIitjKyI+IikpLGYucHVzaCgiPC9zcGFuPiIpLG59ZnVuY3Rpb24gdChuKXt2YXIgaT1bW10sbi52LFtdXTtyZXR1cm4gbi52PyhuLnMmJnIobi5zLGlbMF0saVsyXSksaVswXS5qb2luKCIiKStpWzFdLnJlcGxhY2UoYSwiPGJyLz4iKStpWzJdLmpvaW4oIiIpKToiIn1yZXR1cm4gZnVuY3Rpb24oaSl7cmV0dXJuIGkubWFwKHQpLmpvaW4oIiIpfX0oKSxVdT0vPCg/Olx3KzopP3RcYltePD5dKj4oW148XSopPFwvKD86XHcrOik/dD4vZyxIdT0vPCg/Olx3KzopP3JcYltePD5dKj4vO2Z1bmN0aW9uIGhuKGUsYSl7dmFyIHI9YT9hLmNlbGxIVE1MOiEwLHQ9e307cmV0dXJuIGU/KGUubWF0Y2goL15ccyo8KD86XHcrOik/dFtePl0qPi8pPyh0LnQ9Q2UoVmUoZS5zbGljZShlLmluZGV4T2YoIj4iKSsxKS5zcGxpdCgvPFwvKD86XHcrOik/dD4vKVswXXx8IiIpLCEwKSx0LnI9VmUoZSksciYmKHQuaD14YSh0LnQpKSk6ZS5tYXRjaChIdSkmJih0LnI9VmUoZSksdC50PUNlKFZlKChLYyhlLCJyUGgiKS5tYXRjaChVdSl8fFtdKS5qb2luKCIiKS5yZXBsYWNlKG5yLCIiKSksITApLHImJih0Lmg9QnUoTHUodC5yKSkpKSx0KTp7dDoiIn19dmFyIFd1PS88KD86XHcrOik/KD86c2l8c3N0SXRlbSk+L2csVnU9LzxcLyg/Olx3KzopPyg/OnNpfHNzdEl0ZW0pPi87ZnVuY3Rpb24gR3UoZSxhKXt2YXIgcj1bXSx0PSIiO2lmKCFlKXJldHVybiByO3ZhciBuPUxlKGUsInNzdCIpO2lmKG4pe3Q9blsxXS5yZXBsYWNlKFd1LCIiKS5zcGxpdChWdSk7Zm9yKHZhciBpPTA7aSE9dC5sZW5ndGg7KytpKXt2YXIgZj1obih0W2ldLnRyaW0oKSxhKTtmIT1udWxsJiYocltyLmxlbmd0aF09Zil9bj1vZShuWzBdLnNsaWNlKDAsblswXS5pbmRleE9mKCI+IikpKSxyLkNvdW50PW4uY291bnQsci5VbmlxdWU9bi51bmlxdWVDb3VudH1yZXR1cm4gcn1mdW5jdGlvbiBYdShlKXtyZXR1cm5bZS5yZWFkX3NoaWZ0KDQpLGUucmVhZF9zaGlmdCg0KV19ZnVuY3Rpb24genUoZSxhKXt2YXIgcj1bXSx0PSExO3JldHVybiB2YShlLGZ1bmN0aW9uKGksZixzKXtzd2l0Y2gocyl7Y2FzZSAxNTk6ci5Db3VudD1pWzBdLHIuVW5pcXVlPWlbMV07YnJlYWs7Y2FzZSAxOTpyLnB1c2goaSk7YnJlYWs7Y2FzZSAxNjA6cmV0dXJuITA7Y2FzZSAzNTp0PSEwO2JyZWFrO2Nhc2UgMzY6dD0hMTticmVhaztkZWZhdWx0OmlmKGYuVCwhdHx8YS5XVEYpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAweCIrcy50b1N0cmluZygxNikpfX0pLHJ9ZnVuY3Rpb24gSXMoZSl7Zm9yKHZhciBhPVtdLHI9ZS5zcGxpdCgiIiksdD0wO3Q8ci5sZW5ndGg7Kyt0KWFbdF09clt0XS5jaGFyQ29kZUF0KDApO3JldHVybiBhfWZ1bmN0aW9uIG1hKGUsYSl7dmFyIHI9e307cmV0dXJuIHIuTWFqb3I9ZS5yZWFkX3NoaWZ0KDIpLHIuTWlub3I9ZS5yZWFkX3NoaWZ0KDIpLGE+PTQmJihlLmwrPWEtNCkscn1mdW5jdGlvbiAkdShlKXt2YXIgYT17fTtyZXR1cm4gYS5pZD1lLnJlYWRfc2hpZnQoMCwibHBwNCIpLGEuUj1tYShlLDQpLGEuVT1tYShlLDQpLGEuVz1tYShlLDQpLGF9ZnVuY3Rpb24gS3UoZSl7Zm9yKHZhciBhPWUucmVhZF9zaGlmdCg0KSxyPWUubCthLTQsdD17fSxuPWUucmVhZF9zaGlmdCg0KSxpPVtdO24tLSA+MDspaS5wdXNoKHt0OmUucmVhZF9zaGlmdCg0KSx2OmUucmVhZF9zaGlmdCgwLCJscHA0Iil9KTtpZih0Lm5hbWU9ZS5yZWFkX3NoaWZ0KDAsImxwcDQiKSx0LmNvbXBzPWksZS5sIT1yKXRocm93IG5ldyBFcnJvcigiQmFkIERhdGFTcGFjZU1hcEVudHJ5OiAiK2UubCsiICE9ICIrcik7cmV0dXJuIHR9ZnVuY3Rpb24ganUoZSl7dmFyIGE9W107ZS5sKz00O2Zvcih2YXIgcj1lLnJlYWRfc2hpZnQoNCk7ci0tID4wOylhLnB1c2goS3UoZSkpO3JldHVybiBhfWZ1bmN0aW9uIFl1KGUpe3ZhciBhPVtdO2UubCs9NDtmb3IodmFyIHI9ZS5yZWFkX3NoaWZ0KDQpO3ItLSA+MDspYS5wdXNoKGUucmVhZF9zaGlmdCgwLCJscHA0IikpO3JldHVybiBhfWZ1bmN0aW9uIEp1KGUpe3ZhciBhPXt9O3JldHVybiBlLnJlYWRfc2hpZnQoNCksZS5sKz00LGEuaWQ9ZS5yZWFkX3NoaWZ0KDAsImxwcDQiKSxhLm5hbWU9ZS5yZWFkX3NoaWZ0KDAsImxwcDQiKSxhLlI9bWEoZSw0KSxhLlU9bWEoZSw0KSxhLlc9bWEoZSw0KSxhfWZ1bmN0aW9uIFp1KGUpe3ZhciBhPUp1KGUpO2lmKGEuZW5hbWU9ZS5yZWFkX3NoaWZ0KDAsIjhscHA0IiksYS5ibGtzej1lLnJlYWRfc2hpZnQoNCksYS5jbW9kZT1lLnJlYWRfc2hpZnQoNCksZS5yZWFkX3NoaWZ0KDQpIT00KXRocm93IG5ldyBFcnJvcigiQmFkICFQcmltYXJ5IHJlY29yZCIpO3JldHVybiBhfWZ1bmN0aW9uIERzKGUsYSl7dmFyIHI9ZS5sK2EsdD17fTt0LkZsYWdzPWUucmVhZF9zaGlmdCg0KSY2MyxlLmwrPTQsdC5BbGdJRD1lLnJlYWRfc2hpZnQoNCk7dmFyIG49ITE7c3dpdGNoKHQuQWxnSUQpe2Nhc2UgMjYxMjY6Y2FzZSAyNjEyNzpjYXNlIDI2MTI4Om49dC5GbGFncz09MzY7YnJlYWs7Y2FzZSAyNjYyNTpuPXQuRmxhZ3M9PTQ7YnJlYWs7Y2FzZSAwOm49dC5GbGFncz09MTZ8fHQuRmxhZ3M9PTR8fHQuRmxhZ3M9PTM2O2JyZWFrO2RlZmF1bHQ6dGhyb3ciVW5yZWNvZ25pemVkIGVuY3J5cHRpb24gYWxnb3JpdGhtOiAiK3QuQWxnSUR9aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJFbmNyeXB0aW9uIEZsYWdzL0FsZ0lEIG1pc21hdGNoIik7cmV0dXJuIHQuQWxnSURIYXNoPWUucmVhZF9zaGlmdCg0KSx0LktleVNpemU9ZS5yZWFkX3NoaWZ0KDQpLHQuUHJvdmlkZXJUeXBlPWUucmVhZF9zaGlmdCg0KSxlLmwrPTgsdC5DU1BOYW1lPWUucmVhZF9zaGlmdChyLWUubD4+MSwidXRmMTZsZSIpLGUubD1yLHR9ZnVuY3Rpb24gUnMoZSxhKXt2YXIgcj17fSx0PWUubCthO3JldHVybiBlLmwrPTQsci5TYWx0PWUuc2xpY2UoZS5sLGUubCsxNiksZS5sKz0xNixyLlZlcmlmaWVyPWUuc2xpY2UoZS5sLGUubCsxNiksZS5sKz0xNixlLnJlYWRfc2hpZnQoNCksci5WZXJpZmllckhhc2g9ZS5zbGljZShlLmwsdCksZS5sPXQscn1mdW5jdGlvbiBxdShlKXt2YXIgYT1tYShlKTtzd2l0Y2goYS5NaW5vcil7Y2FzZSAyOnJldHVyblthLk1pbm9yLFF1KGUpXTtjYXNlIDM6cmV0dXJuW2EuTWlub3IsZWgoKV07Y2FzZSA0OnJldHVyblthLk1pbm9yLHJoKGUpXX10aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIHVucmVjb2duaXplZCBWZXJzaW9uOiAiK2EuTWlub3IpfWZ1bmN0aW9uIFF1KGUpe3ZhciBhPWUucmVhZF9zaGlmdCg0KTtpZigoYSY2MykhPTM2KXRocm93IG5ldyBFcnJvcigiRW5jcnlwdGlvbkluZm8gbWlzbWF0Y2giKTt2YXIgcj1lLnJlYWRfc2hpZnQoNCksdD1EcyhlLHIpLG49UnMoZSxlLmxlbmd0aC1lLmwpO3JldHVybnt0OiJTdGQiLGg6dCx2Om59fWZ1bmN0aW9uIGVoKCl7dGhyb3cgbmV3IEVycm9yKCJGaWxlIGlzIHBhc3N3b3JkLXByb3RlY3RlZDogRUNNQS0zNzYgRXh0ZW5zaWJsZSIpfWZ1bmN0aW9uIHJoKGUpe3ZhciBhPVsic2FsdFNpemUiLCJibG9ja1NpemUiLCJrZXlCaXRzIiwiaGFzaFNpemUiLCJjaXBoZXJBbGdvcml0aG0iLCJjaXBoZXJDaGFpbmluZyIsImhhc2hBbGdvcml0aG0iLCJzYWx0VmFsdWUiXTtlLmwrPTQ7dmFyIHI9ZS5yZWFkX3NoaWZ0KGUubGVuZ3RoLWUubCwidXRmOCIpLHQ9e307cmV0dXJuIHIucmVwbGFjZShucixmdW5jdGlvbihpKXt2YXIgZj1vZShpKTtzd2l0Y2goQXIoZlswXSkpe2Nhc2UiPD94bWwiOmJyZWFrO2Nhc2UiPGVuY3J5cHRpb24iOmNhc2UiPC9lbmNyeXB0aW9uPiI6YnJlYWs7Y2FzZSI8a2V5RGF0YSI6YS5mb3JFYWNoKGZ1bmN0aW9uKHMpe3Rbc109ZltzXX0pO2JyZWFrO2Nhc2UiPGRhdGFJbnRlZ3JpdHkiOnQuZW5jcnlwdGVkSG1hY0tleT1mLmVuY3J5cHRlZEhtYWNLZXksdC5lbmNyeXB0ZWRIbWFjVmFsdWU9Zi5lbmNyeXB0ZWRIbWFjVmFsdWU7YnJlYWs7Y2FzZSI8a2V5RW5jcnlwdG9ycz4iOmNhc2UiPGtleUVuY3J5cHRvcnMiOnQuZW5jcz1bXTticmVhaztjYXNlIjwva2V5RW5jcnlwdG9ycz4iOmJyZWFrO2Nhc2UiPGtleUVuY3J5cHRvciI6dC51cmk9Zi51cmk7YnJlYWs7Y2FzZSI8L2tleUVuY3J5cHRvcj4iOmJyZWFrO2Nhc2UiPGVuY3J5cHRlZEtleSI6dC5lbmNzLnB1c2goZik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBmWzBdfX0pLHR9ZnVuY3Rpb24gYWgoZSxhKXt2YXIgcj17fSx0PXIuRW5jcnlwdGlvblZlcnNpb25JbmZvPW1hKGUsNCk7aWYoYS09NCx0Lk1pbm9yIT0yKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkIG1pbm9yIHZlcnNpb24gY29kZTogIit0Lk1pbm9yKTtpZih0Lk1ham9yPjR8fHQuTWFqb3I8Mil0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCBtYWpvciB2ZXJzaW9uIGNvZGU6ICIrdC5NYWpvcik7ci5GbGFncz1lLnJlYWRfc2hpZnQoNCksYS09NDt2YXIgbj1lLnJlYWRfc2hpZnQoNCk7cmV0dXJuIGEtPTQsci5FbmNyeXB0aW9uSGVhZGVyPURzKGUsbiksYS09bixyLkVuY3J5cHRpb25WZXJpZmllcj1ScyhlLGEpLHJ9ZnVuY3Rpb24gdGgoZSl7dmFyIGE9e30scj1hLkVuY3J5cHRpb25WZXJzaW9uSW5mbz1tYShlLDQpO2lmKHIuTWFqb3IhPTF8fHIuTWlub3IhPTEpdGhyb3cidW5yZWNvZ25pemVkIHZlcnNpb24gY29kZSAiK3IuTWFqb3IrIiA6ICIrci5NaW5vcjtyZXR1cm4gYS5TYWx0PWUucmVhZF9zaGlmdCgxNiksYS5FbmNyeXB0ZWRWZXJpZmllcj1lLnJlYWRfc2hpZnQoMTYpLGEuRW5jcnlwdGVkVmVyaWZpZXJIYXNoPWUucmVhZF9zaGlmdCgxNiksYX1mdW5jdGlvbiBuaChlKXt2YXIgYT0wLHIsdD1JcyhlKSxuPXQubGVuZ3RoKzEsaSxmLHMsYyxvO2ZvcihyPUFhKG4pLHJbMF09dC5sZW5ndGgsaT0xO2khPW47KytpKXJbaV09dFtpLTFdO2ZvcihpPW4tMTtpPj0wOy0taSlmPXJbaV0scz1hJjE2Mzg0PzE6MCxjPWE8PDEmMzI3Njcsbz1zfGMsYT1vXmY7cmV0dXJuIGFeNTI4MTF9dmFyIE9zPWZ1bmN0aW9uKCl7dmFyIGU9WzE4NywyNTUsMjU1LDE4NiwyNTUsMjU1LDE4NSwxMjgsMCwxOTAsMTUsMCwxOTEsMTUsMF0sYT1bNTc4NDAsNzQzOSw1MjM4MCwzMzk4NCw0MzY0LDM2MDAsNjE5MDIsMTI2MDYsNjI1OCw1NzY1Nyw1NDI4NywzNDA0MSwxMDI1Miw0MzM3MCwyMDE2M10scj1bNDQ3OTYsMTk5MjksMzk4NTgsMTAwNTMsMjAxMDYsNDAyMTIsMTA3NjEsMzE1ODUsNjMxNzAsNjQ5MzMsNjAyNjcsNTA5MzUsNDAzOTksMTExOTksMTc3NjMsMzU1MjYsMTQ1MywyOTA2LDU4MTIsMTE2MjQsMjMyNDgsODg1LDE3NzAsMzU0MCw3MDgwLDE0MTYwLDI4MzIwLDU2NjQwLDU1MzY5LDQxMTM5LDIwODA3LDQxNjE0LDIxODIxLDQzNjQyLDE3NjIxLDI4NDg1LDU2OTcwLDQ0MzQxLDE5MDE5LDM4MDM4LDE0NjA1LDI5MjEwLDYwMTk1LDUwNzkxLDQwMTc1LDEwNzUxLDIxNTAyLDQzMDA0LDI0NTM3LDE4Mzg3LDM2Nzc0LDM5NDksNzg5OCwxNTc5NiwzMTU5Miw2MzE4NCw0NzIwMSwyNDgwMyw0OTYwNiwzNzgwNSwxNDIwMywyODQwNiw1NjgxMiwxNzgyNCwzNTY0OCwxNjk3LDMzOTQsNjc4OCwxMzU3NiwyNzE1Miw0MzYwMSwxNzUzOSwzNTA3OCw1NTcsMTExNCwyMjI4LDQ0NTYsMzAzODgsNjA3NzYsNTE5NTMsMzQyNDMsNzA3OSwxNDE1OCwyODMxNiwxNDEyOCwyODI1Niw1NjUxMiw0MzQyNSwxNzI1MSwzNDUwMiw3NTk3LDEzMTA1LDI2MjEwLDUyNDIwLDM1MjQxLDg4MywxNzY2LDM1MzIsNDEyOSw4MjU4LDE2NTE2LDMzMDMyLDQ2NTcsOTMxNCwxODYyOF0sdD1mdW5jdGlvbihmKXtyZXR1cm4oZi8yfGYqMTI4KSYyNTV9LG49ZnVuY3Rpb24oZixzKXtyZXR1cm4gdChmXnMpfSxpPWZ1bmN0aW9uKGYpe2Zvcih2YXIgcz1hW2YubGVuZ3RoLTFdLGM9MTA0LG89Zi5sZW5ndGgtMTtvPj0wOy0tbylmb3IodmFyIGw9ZltvXSx1PTA7dSE9NzsrK3UpbCY2NCYmKHNePXJbY10pLGwqPTIsLS1jO3JldHVybiBzfTtyZXR1cm4gZnVuY3Rpb24oZil7Zm9yKHZhciBzPUlzKGYpLGM9aShzKSxvPXMubGVuZ3RoLGw9QWEoMTYpLHU9MDt1IT0xNjsrK3UpbFt1XT0wO3ZhciB4LGgsZztmb3IoKG8mMSk9PT0xJiYoeD1jPj44LGxbb109bihlWzBdLHgpLC0tbyx4PWMmMjU1LGg9c1tzLmxlbmd0aC0xXSxsW29dPW4oaCx4KSk7bz4wOyktLW8seD1jPj44LGxbb109bihzW29dLHgpLC0tbyx4PWMmMjU1LGxbb109bihzW29dLHgpO2ZvcihvPTE1LGc9MTUtcy5sZW5ndGg7Zz4wOyl4PWM+PjgsbFtvXT1uKGVbZ10seCksLS1vLC0tZyx4PWMmMjU1LGxbb109bihzW29dLHgpLC0tbywtLWc7cmV0dXJuIGx9fSgpLGloPWZ1bmN0aW9uKGUsYSxyLHQsbil7bnx8KG49YSksdHx8KHQ9T3MoZSkpO3ZhciBpLGY7Zm9yKGk9MDtpIT1hLmxlbmd0aDsrK2kpZj1hW2ldLGZePXRbcl0sZj0oZj4+NXxmPDwzKSYyNTUsbltpXT1mLCsrcjtyZXR1cm5bbixyLHRdfSxzaD1mdW5jdGlvbihlKXt2YXIgYT0wLHI9T3MoZSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPWloKCIiLHQsYSxyKTtyZXR1cm4gYT1uWzFdLG5bMF19fTtmdW5jdGlvbiBmaChlLGEscix0KXt2YXIgbj17a2V5OmVyKGUpLHZlcmlmaWNhdGlvbkJ5dGVzOmVyKGUpfTtyZXR1cm4gci5wYXNzd29yZCYmKG4udmVyaWZpZXI9bmgoci5wYXNzd29yZCkpLHQudmFsaWQ9bi52ZXJpZmljYXRpb25CeXRlcz09PW4udmVyaWZpZXIsdC52YWxpZCYmKHQuaW5zaXR1PXNoKHIucGFzc3dvcmQpKSxufWZ1bmN0aW9uIGNoKGUsYSxyKXt2YXIgdD1yfHx7fTtyZXR1cm4gdC5JbmZvPWUucmVhZF9zaGlmdCgyKSxlLmwtPTIsdC5JbmZvPT09MT90LkRhdGE9dGgoZSk6dC5EYXRhPWFoKGUsYSksdH1mdW5jdGlvbiBvaChlLGEscil7dmFyIHQ9e1R5cGU6ci5iaWZmPj04P2UucmVhZF9zaGlmdCgyKTowfTtyZXR1cm4gdC5UeXBlP2NoKGUsYS0yLHQpOmZoKGUsci5iaWZmPj04P2E6YS0yLHIsdCksdH1mdW5jdGlvbiBsaChlLGEpe3N3aXRjaChhLnR5cGUpe2Nhc2UiYmFzZTY0IjpyZXR1cm4gVDAoSXIoZSksYSk7Y2FzZSJiaW5hcnkiOnJldHVybiBUMChlLGEpO2Nhc2UiYnVmZmVyIjpyZXR1cm4gVDAoTmUmJkJ1ZmZlci5pc0J1ZmZlcihlKT9lLnRvU3RyaW5nKCJiaW5hcnkiKTpmYShlKSxhKTtjYXNlImFycmF5IjpyZXR1cm4gVDAoQmEoZSksYSl9dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK2EudHlwZSl9ZnVuY3Rpb24gVDAoZSxhKXt2YXIgcj1hfHx7fSx0PXt9LG49ci5kZW5zZTtuJiYodFsiIWRhdGEiXT1bXSk7dmFyIGk9dWEoZSwiXFx0cm93ZCIsIlxccm93Iik7aWYoIWkpdGhyb3cgbmV3IEVycm9yKCJSVEYgbWlzc2luZyB0YWJsZSIpO3ZhciBmPXtzOntjOjAscjowfSxlOntjOjAscjppLmxlbmd0aC0xfX0scz1bXTtyZXR1cm4gaS5mb3JFYWNoKGZ1bmN0aW9uKGMsbyl7biYmKHM9dFsiIWRhdGEiXVtvXT1bXSk7Zm9yKHZhciBsPS9cXFtcd1wtXStcYi9nLHU9MCx4LGg9LTEsZz1bXTsoeD1sLmV4ZWMoYykpIT1udWxsOyl7dmFyIG09Yy5zbGljZSh1LGwubGFzdEluZGV4LXhbMF0ubGVuZ3RoKTtzd2l0Y2gobS5jaGFyQ29kZUF0KDApPT0zMiYmKG09bS5zbGljZSgxKSksbS5sZW5ndGgmJmcucHVzaChtKSx4WzBdKXtjYXNlIlxcY2VsbCI6aWYoKytoLGcubGVuZ3RoKXt2YXIgZD17djpnLmpvaW4oIiIpLHQ6InMifTtkLnY9PSJUUlVFInx8ZC52PT0iRkFMU0UiPyhkLnY9ZC52PT0iVFJVRSIsZC50PSJiIik6aXNOYU4oT3IoZC52KSk/ZHJbZC52XSE9bnVsbCYmKGQudD0iZSIsZC53PWQudixkLnY9ZHJbZC52XSk6KGQudD0ibiIsci5jZWxsVGV4dCE9PSExJiYoZC53PWQudiksZC52PU9yKGQudikpLG4/c1toXT1kOnRbRGUoe3I6byxjOmh9KV09ZH1nPVtdO2JyZWFrO2Nhc2UiXFxwYXIiOmcucHVzaChgCmApO2JyZWFrfXU9bC5sYXN0SW5kZXh9aD5mLmUuYyYmKGYuZS5jPWgpfSksdFsiIXJlZiJdPUllKGYpLHR9ZnVuY3Rpb24gdWgoZSxhKXt2YXIgcj1DYShsaChlLGEpLGEpO3JldHVybiByLmJvb2tUeXBlPSJydGYiLHJ9ZnVuY3Rpb24gaGgoZSl7dmFyIGE9ZS5zbGljZShlWzBdPT09IiMiPzE6MCkuc2xpY2UoMCw2KTtyZXR1cm5bcGFyc2VJbnQoYS5zbGljZSgwLDIpLDE2KSxwYXJzZUludChhLnNsaWNlKDIsNCksMTYpLHBhcnNlSW50KGEuc2xpY2UoNCw2KSwxNildfWZ1bmN0aW9uIGphKGUpe2Zvcih2YXIgYT0wLHI9MTthIT0zOysrYSlyPXIqMjU2KyhlW2FdPjI1NT8yNTU6ZVthXTwwPzA6ZVthXSk7cmV0dXJuIHIudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkuc2xpY2UoMSl9ZnVuY3Rpb24geGgoZSl7dmFyIGE9ZVswXS8yNTUscj1lWzFdLzI1NSx0PWVbMl0vMjU1LG49TWF0aC5tYXgoYSxyLHQpLGk9TWF0aC5taW4oYSxyLHQpLGY9bi1pO2lmKGY9PT0wKXJldHVyblswLDAsYV07dmFyIHM9MCxjPTAsbz1uK2k7c3dpdGNoKGM9Zi8obz4xPzItbzpvKSxuKXtjYXNlIGE6cz0oKHItdCkvZis2KSU2O2JyZWFrO2Nhc2UgcjpzPSh0LWEpL2YrMjticmVhaztjYXNlIHQ6cz0oYS1yKS9mKzQ7YnJlYWt9cmV0dXJuW3MvNixjLG8vMl19ZnVuY3Rpb24gZGgoZSl7dmFyIGE9ZVswXSxyPWVbMV0sdD1lWzJdLG49cioyKih0PC41P3Q6MS10KSxpPXQtbi8yLGY9W2ksaSxpXSxzPTYqYSxjO2lmKHIhPT0wKXN3aXRjaChzfDApe2Nhc2UgMDpjYXNlIDY6Yz1uKnMsZlswXSs9bixmWzFdKz1jO2JyZWFrO2Nhc2UgMTpjPW4qKDItcyksZlswXSs9YyxmWzFdKz1uO2JyZWFrO2Nhc2UgMjpjPW4qKHMtMiksZlsxXSs9bixmWzJdKz1jO2JyZWFrO2Nhc2UgMzpjPW4qKDQtcyksZlsxXSs9YyxmWzJdKz1uO2JyZWFrO2Nhc2UgNDpjPW4qKHMtNCksZlsyXSs9bixmWzBdKz1jO2JyZWFrO2Nhc2UgNTpjPW4qKDYtcyksZlsyXSs9YyxmWzBdKz1uO2JyZWFrfWZvcih2YXIgbz0wO28hPTM7KytvKWZbb109TWF0aC5yb3VuZChmW29dKjI1NSk7cmV0dXJuIGZ9ZnVuY3Rpb24geG4oZSxhKXtpZihhPT09MClyZXR1cm4gZTt2YXIgcj14aChoaChlKSk7cmV0dXJuIGE8MD9yWzJdPXJbMl0qKDErYSk6clsyXT0xLSgxLXJbMl0pKigxLWEpLGphKGRoKHIpKX1mdW5jdGlvbiB6cihlLGEpe3ZhciByPXt9O2lmKGU9PW51bGwpcmV0dXJuIHI7aWYoZS5hdXRvIT1udWxsJiYoci5hdXRvPUZlKGUuYXV0bykpLGUucmdiIT1udWxsJiYoci5yZ2I9ZS5yZ2Iuc2xpY2UoLTYpLnRvVXBwZXJDYXNlKCkpLGUuaW5kZXhlZCE9bnVsbCl7ci5pbmRleGVkPXBhcnNlSW50KGUuaW5kZXhlZCwxMCksci5pbmRleD1yLmluZGV4ZWQ7dmFyIHQ9dGFbci5pbmRleGVkXTtyLmluZGV4ZWQ9PTgxJiYodD10YVsxXSksdHx8KHQ9dGFbMV0pLHQmJihyLnJnYj1qYSh0KSl9cmV0dXJuIGUudGhlbWUhPW51bGwmJihyLnRoZW1lPXBhcnNlSW50KGUudGhlbWUsMTApLGUudGludCE9bnVsbCYmKHIudGludD1wYXJzZUZsb2F0KGUudGludCkpLGEmJmEudGhlbWVFbGVtZW50cyYmYS50aGVtZUVsZW1lbnRzLmNsclNjaGVtZSYmYS50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVtyLnRoZW1lXSYmKHIucmF3X3JnYj1hLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW3IudGhlbWVdLnJnYixyLnJnYj14bihyLnJhd19yZ2Isci50aW50fHwwKSkpLGUudGludCE9bnVsbCYmci50aW50PT1udWxsJiYoci50aW50PXBhcnNlRmxvYXQoZS50aW50KSkscn1mdW5jdGlvbiBZYShlLGEpe2lmKCFlKXJldHVybiBlO3ZhciByPVVlKGUpO2lmKHIucmdiJiYoci5yZ2I9KCIiK3IucmdiKS5zbGljZSgtNikudG9VcHBlckNhc2UoKSksci5pbmRleGVkIT1udWxsJiYhci5yZ2Ipe3ZhciB0PXRhW3IuaW5kZXhlZF07ci5pbmRleGVkPT04MSYmKHQ9dGFbMV0pLHR8fCh0PXRhWzFdKSx0JiYoci5yZ2I9amEodCkpfXJldHVybiByLmluZGV4IT1udWxsJiZyLmluZGV4ZWQ9PW51bGwmJihyLmluZGV4ZWQ9ci5pbmRleCksci50aGVtZSE9bnVsbCYmYSYmYS50aGVtZUVsZW1lbnRzJiZhLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lJiZhLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW3IudGhlbWVdJiYoci5yYXdfcmdiPWEudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbci50aGVtZV0ucmdiLHIucmdiPXhuKHIucmF3X3JnYixyLnRpbnR8fDApKSxyfWZ1bmN0aW9uIEUwKGUsYSl7aWYoIWUpcmV0dXJuIGU7dmFyIHI9VWUoZSk7cmV0dXJuIHIuY29sb3ImJihyLmNvbG9yPVlhKHIuY29sb3IsYSkpLHIuZmdDb2xvciYmKHIuZmdDb2xvcj1ZYShyLmZnQ29sb3IsYSkpLHIuYmdDb2xvciYmKHIuYmdDb2xvcj1ZYShyLmJnQ29sb3IsYSkpLFsibGVmdCIsInJpZ2h0IiwidG9wIiwiYm90dG9tIiwiZGlhZ29uYWwiLCJob3Jpem9udGFsIiwidmVydGljYWwiLCJzdGFydCIsImVuZCJdLmZvckVhY2goZnVuY3Rpb24odCl7clt0XSYmclt0XS5jb2xvciYmKHJbdF0uY29sb3I9WWEoclt0XS5jb2xvcixhKSl9KSxyLmdyYWRpZW50RmlsbCYmci5ncmFkaWVudEZpbGwuc3RvcHMmJnIuZ3JhZGllbnRGaWxsLnN0b3BzLmZvckVhY2goZnVuY3Rpb24odCl7dC5jb2xvciYmKHQuY29sb3I9WWEodC5jb2xvcixhKSl9KSxyfXZhciBOcz02LHZoPTE1LHBoPTEscWU9TnM7ZnVuY3Rpb24gX2EoZSl7cmV0dXJuIE1hdGguZmxvb3IoKGUrTWF0aC5yb3VuZCgxMjgvcWUpLzI1NikqcWUpfWZ1bmN0aW9uIEphKGUpe3JldHVybiBNYXRoLmZsb29yKChlLTUpL3FlKjEwMCsuNSkvMTAwfWZ1bmN0aW9uIFphKGUpe3JldHVybiBNYXRoLnJvdW5kKChlKnFlKzUpL3FlKjI1NikvMjU2fWZ1bmN0aW9uIGRuKGUpe3JldHVybiBaYShKYShfYShlKSkpfWZ1bmN0aW9uIHZuKGUpe3ZhciBhPU1hdGguYWJzKGUtZG4oZSkpLHI9cWU7aWYoYT4uMDA1KWZvcihxZT1waDtxZTx2aDsrK3FlKU1hdGguYWJzKGUtZG4oZSkpPD1hJiYoYT1NYXRoLmFicyhlLWRuKGUpKSxyPXFlKTtxZT1yfWZ1bmN0aW9uIHV0KGUpe2Uud2lkdGg/KGUud3B4PV9hKGUud2lkdGgpLGUud2NoPUphKGUud3B4KSxlLk1EVz1xZSk6ZS53cHg/KGUud2NoPUphKGUud3B4KSxlLndpZHRoPVphKGUud2NoKSxlLk1EVz1xZSk6dHlwZW9mIGUud2NoPT0ibnVtYmVyIiYmKGUud2lkdGg9WmEoZS53Y2gpLGUud3B4PV9hKGUud2lkdGgpLGUuTURXPXFlKSxlLmN1c3RvbVdpZHRoJiZkZWxldGUgZS5jdXN0b21XaWR0aH12YXIgcG49MjU1LE1zPTU7ZnVuY3Rpb24gZ2goZSl7cmV0dXJuIGU+cG4/cG46ZTwwPzA6ZX1mdW5jdGlvbiBtaChlKXt2YXIgYT1aYShKYShNYXRoLm1heCgwLGUpKSk7cmV0dXJuIGdoKGEpfWZ1bmN0aW9uIFBzKGUpe3JldHVybiBlP2Uud3B4IT1udWxsP2Uud3B4OmUud2lkdGghPW51bGw/X2EoZS53aWR0aCk6ZS53Y2ghPW51bGw/X2EoWmEoZS53Y2gpKTo2NDo2NH1mdW5jdGlvbiBfaChlLGEpe3JldHVybiBlfHwoZT17fSksZS53cHg9TWF0aC5tYXgoMCxNYXRoLmNlaWwoYSkpLGUud2NoPUphKGUud3B4KSxlLndpZHRoPW1oKGUud3B4KSxlLk1EVz1xZSxlLmJlc3RGaXQ9ITAsZS5jdXN0b21XaWR0aD0hMCxlfWZ1bmN0aW9uIEJ0KGUpe3ZhciBhPWUmJmUuZm9udHx8e30scj0rYS5zejtyZXR1cm4gcj4wP3I6MTF9ZnVuY3Rpb24ga2goZSl7dmFyIGE9ZSYmZS5mb250fHx7fTtyZXR1cm4gYS5uYW1lfHwiQ2FsaWJyaSJ9ZnVuY3Rpb24gTHMoZSl7dmFyIGE9ZSYmZS5mb250fHx7fSxyPVtdO2EuaXRhbGljJiZyLnB1c2goIml0YWxpYyIpLGEuYm9sZCYmci5wdXNoKCJib2xkIiksci5wdXNoKEJ0KGUpKyJwdCIpO3ZhciB0PWtoKGUpO3JldHVybi9bLFxzJyJdLy50ZXN0KHQpJiYodD0nIicrU3RyaW5nKHQpLnJlcGxhY2UoLyIvZywnXFwiJykrJyInKSxyLnB1c2godCksci5qb2luKCIgIil9ZnVuY3Rpb24gd2goZSxhKXt2YXIgcj1lLmNoYXJDb2RlQXQoMCk7cmV0dXJuIHI9PTl8fHI9PTMyP2EqLjMzOnI+PTQ4JiZyPD01Nz9hKi41MjpyPj02NSYmcjw9OTA/YSouNjI6cj49OTcmJnI8PTEyMj8iaWxqdGZyIi5pbmRleE9mKGUpPi0xP2EqLjI4OiJtdyIuaW5kZXhPZihlKT4tMT9hKi44MjphKi41OnI+PTExOTA0P2E6YSouNTJ9ZnVuY3Rpb24gRmgoZSxhKXtmb3IodmFyIHI9SHQoQnQoYSkpLHQ9MCxuPTA7bjxlLmxlbmd0aDsrK24pdCs9d2goZS5jaGFyQXQobikscik7cmV0dXJuIHR9ZnVuY3Rpb24gQnMoZSxhLHIpe3ZhciB0PXJ8fHt9LG49ZT09bnVsbD8iIjpTdHJpbmcoZSksaT1uLnNwbGl0KC9cclxufFxufFxyL2cpLGY9MCxzPTAsYz0wO2lmKHQubWVhc3VyZVRleHQpZm9yKHM9MDtzPGkubGVuZ3RoOysrcyljPSt0Lm1lYXN1cmVUZXh0KGlbc10sTHMoYSksYXx8e30pLGlzRmluaXRlKGMpJiZjPmYmJihmPWMpO2Vsc2V7dmFyIG89dC5jYW52YXMsbD1udWxsO2lmKCFvJiZ0eXBlb2YgZG9jdW1lbnQ8InUiJiZkb2N1bWVudC5jcmVhdGVFbGVtZW50KXRyeXtvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpfWNhdGNoe310cnl7bD1vJiZvLmdldENvbnRleHQmJm8uZ2V0Q29udGV4dCgiMmQiKX1jYXRjaHtsPW51bGx9aWYobCYmbC5tZWFzdXJlVGV4dClmb3IobC5mb250PUxzKGEpLHM9MDtzPGkubGVuZ3RoOysrcyljPWwubWVhc3VyZVRleHQoaVtzXSkud2lkdGgsaXNGaW5pdGUoYykmJmM+ZiYmKGY9Yyk7ZWxzZSBmb3Iocz0wO3M8aS5sZW5ndGg7KytzKWM9RmgoaVtzXSxhfHx7fSksaXNGaW5pdGUoYykmJmM+ZiYmKGY9Yyl9cmV0dXJuIGZ9ZnVuY3Rpb24gVGgoZSxhKXtyZXR1cm4hZXx8ZS52PT1udWxsPyIiOihlLnc9PW51bGwmJmUudCE9InoiJiZnYShlKSxTdHJpbmcoZS53IT1udWxsP2UudzplLnYpKX1mdW5jdGlvbiBFaChlLGEpe3ZhciByPVN0cmluZyhlPz8iIikuc3BsaXQoL1xyXG58XG58XHIvZyksdD1bXSxuPTAsaT0wLGY9bnVsbDtpZighYSlyZXR1cm4gcjtmb3Iobj0wO248ci5sZW5ndGg7KytuKXtmb3IoZj1yW25dLnNwbGl0KC9bXHQgXHUwMEEwXC1cL10rLyksaT0wO2k8Zi5sZW5ndGg7KytpKWZbaV0mJnQucHVzaChmW2ldKTsoIWYubGVuZ3RofHxmLmxlbmd0aD09MSYmIWZbMF0pJiZ0LnB1c2gocltuXSl9cmV0dXJuIHQubGVuZ3RoP3Q6WyIiXX1mdW5jdGlvbiBBaChlLGEscix0KXt2YXIgbj17fSxpPWVbIiFjb2xzIl18fFtdLGY9ZVsiIXJvd3MiXXx8W107cmV0dXJuIGlbdF0mJmlbdF0ucyYma2EobixpW3RdLnMpLGZbcl0mJmZbcl0ucyYma2EobixmW3JdLnMpLGEmJmEucyYma2EobixhLnMpLG59ZnVuY3Rpb24gVXMoZSxhLHIpe2Zvcih2YXIgdD1yfHx7fSxuPVRoKGUpLGk9YSYmYS5hbGlnbm1lbnR8fHt9LGY9ISFpLndyYXBUZXh0LHM9RWgobixmKSxjPTAsbz0wLGw9MDtsPHMubGVuZ3RoOysrbClvPUJzKHNbbF0sYSx0KSxvPmMmJihjPW8pO3ZhciB1PStpLmluZGVudHx8MDt1PjAmJihjKz11KjMqTWF0aC5tYXgoMSxxZSkpO3ZhciB4PStpLnRleHRSb3RhdGlvbnx8MDtpZih4PT0yNTUmJih4PTkwKSx4PjkwJiYoeD05MC14KSx4PDAmJih4PS14KSx4PjAmJng8OTApe3ZhciBoPXgqTWF0aC5QSS8xODAsZz1IdChCdChhKSk7Yz1NYXRoLmFicyhjKk1hdGguY29zKGgpKStNYXRoLmFicyhnKk1hdGguc2luKGgpKX1lbHNlIHg+PTkwJiYoYz1NYXRoLm1heChxZStNcyxIdChCdChhKSkrMikpO3JldHVybiBjKyh0LnBhZGRpbmchPW51bGw/K3QucGFkZGluZzpNcyl9ZnVuY3Rpb24geWgoZSl7Zm9yKHZhciBhPXt9LHI9MDtyPGUubGVuZ3RoOysrcilhW2Vbcl0ucy5yKyI6IitlW3JdLnMuY109ZVtyXTtyZXR1cm4gYX1mdW5jdGlvbiBTaChlLGEscil7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDsrK3Qpe3ZhciBuPWVbdF07aWYobi5zLnI8PWEmJmE8PW4uZS5yJiZuLnMuYzw9ciYmcjw9bi5lLmMpcmV0dXJuIShuLnMucj09YSYmbi5zLmM9PXIpfXJldHVybiExfWZ1bmN0aW9uIGduKGUsYSl7dmFyIHI9YXx8e30sdD1xZTtyLk1EVyYmKHFlPStyLk1EV3x8cWUpO3ZhciBuPXIucmFuZ2U/dHlwZW9mIHIucmFuZ2U9PSJzdHJpbmciP3BhKHIucmFuZ2UpOnIucmFuZ2U6cGEoZVsiIXJlZiJdfHwiQTEiKSxpPWVbIiFjb2xzIl18fFtdLGY9ZVsiIXJvd3MiXXx8W10scz1bXSxjPVtdLG89ci5taW5QeCE9bnVsbD8rci5taW5QeDpyLm1pbiE9bnVsbD9fYShaYSgrci5taW4pKTowLGw9ci5tYXhQeCE9bnVsbD8rci5tYXhQeDpfYShwbiksdT1yLmluY2x1ZGVNZXJnZWQ9PT0hMT9bXTplWyIhbWVyZ2VzIl18fFtdLHg9eWgodSksaD1lWyIhZGF0YSJdIT1udWxsLGc9MCxtPTAsZD0wLHA9bnVsbCx3PTAsXz1udWxsLHk9bnVsbCxSPTAsUD0wO2ZvcihnPW4ucy5jO2c8PW4uZS5jOysrZylzW2ddPVVlKGlbZ118fHt9KSwhKHNbZ10mJnNbZ10uaGlkZGVuJiZyLnNraXBIaWRkZW4pJiYoY1tnXT1zW2ddJiYoc1tnXS53cHghPW51bGx8fHNbZ10ud2lkdGghPW51bGx8fHNbZ10ud2NoIT1udWxsKT9QcyhzW2ddKTpvKTtmb3IobT1uLnMucjttPD1uLmUucjsrK20paWYoIShmW21dJiZmW21dLmhpZGRlbiYmci5za2lwSGlkZGVuKSl7Zm9yKGc9bi5zLmM7Zzw9bi5lLmM7KytnKWlmKCEoc1tnXSYmc1tnXS5oaWRkZW4mJnIuc2tpcEhpZGRlbikmJiFTaCh1LG0sZykmJihfPWg/KGVbIiFkYXRhIl1bbV18fFtdKVtnXTplW0RlKHtyOm0sYzpnfSldLCEoIV98fF8udj09bnVsbCkpKWlmKHk9QWgoZSxfLG0sZyksUj1VcyhfLHkscikseSYmeS5hbGlnbm1lbnQmJnkuYWxpZ25tZW50LnNocmlua1RvRml0JiZjW2ddJiYoUj1NYXRoLm1pbihSLGNbZ10pKSxwPXhbbSsiOiIrZ10sZD1wP3AuZS5jLXAucy5jKzE6MSxkPjEpe2ZvcihQPTAsdz0wO3c8ZDsrK3cpUCs9Y1tnK3ddfHxvO2lmKFI+UClmb3Iodz0wO3c8ZDsrK3cpY1tnK3ddPU1hdGgubWluKGwsTWF0aC5tYXgoY1tnK3ddfHxvLChjW2crd118fG8pKyhSLVApL2QpKX1lbHNlIGNbZ109TWF0aC5taW4obCxNYXRoLm1heChjW2ddfHxvLFIpKX1mb3IoZz1uLnMuYztnPD1uLmUuYzsrK2cpY1tnXSE9bnVsbCYmKHNbZ109X2goc1tnXXx8e30sTWF0aC5taW4obCxNYXRoLm1heChvLGNbZ10pKSkpO3JldHVybiByLnNldD09PSExPyhxZT10LHMpOihlWyIhY29scyJdPXMscWU9dCxzKX12YXIgQ2g9OTYsSHM9Q2g7ZnVuY3Rpb24gV3MoZSl7cmV0dXJuIGUqOTYvSHN9ZnVuY3Rpb24gVXQoZSl7cmV0dXJuIGUqSHMvOTZ9ZnVuY3Rpb24gSHQoZSl7cmV0dXJuIGUqOTYvNzJ9ZnVuY3Rpb24gYmgoZSl7cmV0dXJuIGUqNzIvOTZ9dmFyIEloPXtOb25lOiJub25lIixTb2xpZDoic29saWQiLEdyYXk1MDoibWVkaXVtR3JheSIsR3JheTc1OiJkYXJrR3JheSIsR3JheTI1OiJsaWdodEdyYXkiLEhvcnpTdHJpcGU6ImRhcmtIb3Jpem9udGFsIixWZXJ0U3RyaXBlOiJkYXJrVmVydGljYWwiLFJldmVyc2VEaWFnU3RyaXBlOiJkYXJrRG93biIsRGlhZ1N0cmlwZToiZGFya1VwIixEaWFnQ3Jvc3M6ImRhcmtHcmlkIixUaGlja0RpYWdDcm9zczoiZGFya1RyZWxsaXMiLFRoaW5Ib3J6U3RyaXBlOiJsaWdodEhvcml6b250YWwiLFRoaW5WZXJ0U3RyaXBlOiJsaWdodFZlcnRpY2FsIixUaGluUmV2ZXJzZURpYWdTdHJpcGU6ImxpZ2h0RG93biIsVGhpbkhvcnpDcm9zczoibGlnaHRHcmlkIn07ZnVuY3Rpb24gRGgoZSxhLHIsdCl7YS5Cb3JkZXJzPVtdO3ZhciBuPXt9LGk9IiIsZj0hMTsoZS5tYXRjaChucil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHMpe3ZhciBjPW9lKHMpO3N3aXRjaChBcihjWzBdKSl7Y2FzZSI8Ym9yZGVycyI6Y2FzZSI8Ym9yZGVycz4iOmNhc2UiPC9ib3JkZXJzPiI6YnJlYWs7Y2FzZSI8Ym9yZGVyIjpjYXNlIjxib3JkZXI+IjpjYXNlIjxib3JkZXIvPiI6bj17fSxjLmRpYWdvbmFsVXAmJihuLmRpYWdvbmFsVXA9RmUoYy5kaWFnb25hbFVwKSksYy5kaWFnb25hbERvd24mJihuLmRpYWdvbmFsRG93bj1GZShjLmRpYWdvbmFsRG93bikpLGEuQm9yZGVycy5wdXNoKG4pO2JyZWFrO2Nhc2UiPC9ib3JkZXI+IjpicmVhaztjYXNlIjxsZWZ0Lz4iOm4ubGVmdD17fSxjLnN0eWxlJiYobi5sZWZ0LnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPGxlZnQiOmNhc2UiPGxlZnQ+IjppPSJsZWZ0IixuW2ldPW5baV18fHt9LGMuc3R5bGUmJihuW2ldLnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPC9sZWZ0PiI6aT0iIjticmVhaztjYXNlIjxyaWdodC8+IjpuLnJpZ2h0PXt9LGMuc3R5bGUmJihuLnJpZ2h0LnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPHJpZ2h0IjpjYXNlIjxyaWdodD4iOmk9InJpZ2h0IixuW2ldPW5baV18fHt9LGMuc3R5bGUmJihuW2ldLnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPC9yaWdodD4iOmk9IiI7YnJlYWs7Y2FzZSI8dG9wLz4iOm4udG9wPXt9LGMuc3R5bGUmJihuLnRvcC5zdHlsZT1jLnN0eWxlKTticmVhaztjYXNlIjx0b3AiOmNhc2UiPHRvcD4iOmk9InRvcCIsbltpXT1uW2ldfHx7fSxjLnN0eWxlJiYobltpXS5zdHlsZT1jLnN0eWxlKTticmVhaztjYXNlIjwvdG9wPiI6aT0iIjticmVhaztjYXNlIjxib3R0b20vPiI6bi5ib3R0b209e30sYy5zdHlsZSYmKG4uYm90dG9tLnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPGJvdHRvbSI6Y2FzZSI8Ym90dG9tPiI6aT0iYm90dG9tIixuW2ldPW5baV18fHt9LGMuc3R5bGUmJihuW2ldLnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPC9ib3R0b20+IjppPSIiO2JyZWFrO2Nhc2UiPGRpYWdvbmFsLz4iOm4uZGlhZ29uYWw9e30sYy5zdHlsZSYmKG4uZGlhZ29uYWwuc3R5bGU9Yy5zdHlsZSk7YnJlYWs7Y2FzZSI8ZGlhZ29uYWwiOmNhc2UiPGRpYWdvbmFsPiI6aT0iZGlhZ29uYWwiLG5baV09bltpXXx8e30sYy5zdHlsZSYmKG5baV0uc3R5bGU9Yy5zdHlsZSk7YnJlYWs7Y2FzZSI8L2RpYWdvbmFsPiI6aT0iIjticmVhaztjYXNlIjxob3Jpem9udGFsLz4iOm4uaG9yaXpvbnRhbD17fSxjLnN0eWxlJiYobi5ob3Jpem9udGFsLnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPGhvcml6b250YWwiOmNhc2UiPGhvcml6b250YWw+IjppPSJob3Jpem9udGFsIixuW2ldPW5baV18fHt9LGMuc3R5bGUmJihuW2ldLnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPC9ob3Jpem9udGFsPiI6aT0iIjticmVhaztjYXNlIjx2ZXJ0aWNhbC8+IjpuLnZlcnRpY2FsPXt9LGMuc3R5bGUmJihuLnZlcnRpY2FsLnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPHZlcnRpY2FsIjpjYXNlIjx2ZXJ0aWNhbD4iOmk9InZlcnRpY2FsIixuW2ldPW5baV18fHt9LGMuc3R5bGUmJihuW2ldLnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPC92ZXJ0aWNhbD4iOmk9IiI7YnJlYWs7Y2FzZSI8c3RhcnQvPiI6bi5zdGFydD17fSxjLnN0eWxlJiYobi5zdGFydC5zdHlsZT1jLnN0eWxlKTticmVhaztjYXNlIjxzdGFydCI6Y2FzZSI8c3RhcnQ+IjppPSJzdGFydCIsbltpXT1uW2ldfHx7fSxjLnN0eWxlJiYobltpXS5zdHlsZT1jLnN0eWxlKTticmVhaztjYXNlIjwvc3RhcnQ+IjppPSIiO2JyZWFrO2Nhc2UiPGVuZC8+IjpuLmVuZD17fSxjLnN0eWxlJiYobi5lbmQuc3R5bGU9Yy5zdHlsZSk7YnJlYWs7Y2FzZSI8ZW5kIjpjYXNlIjxlbmQ+IjppPSJlbmQiLG5baV09bltpXXx8e30sYy5zdHlsZSYmKG5baV0uc3R5bGU9Yy5zdHlsZSk7YnJlYWs7Y2FzZSI8L2VuZD4iOmk9IiI7YnJlYWs7Y2FzZSI8Y29sb3IiOmNhc2UiPGNvbG9yPiI6aSYmKG5baV0uY29sb3I9enIoYyxyKSk7YnJlYWs7Y2FzZSI8Y29sb3IvPiI6Y2FzZSI8L2NvbG9yPiI6YnJlYWs7Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6YnJlYWs7Y2FzZSI8ZXh0IjpmPSEwO2JyZWFrO2Nhc2UiPC9leHQ+IjpmPSExO2JyZWFrO2RlZmF1bHQ6aWYodCYmdC5XVEYmJiFmKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrY1swXSsiIGluIGJvcmRlcnMiKX19KX1mdW5jdGlvbiBSaChlLGEscix0KXthLkZpbGxzPVtdO3ZhciBuPXt9LGk9bnVsbCxmPW51bGwscz0hMTsoZS5tYXRjaChucil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGMpe3ZhciBvPW9lKGMpO3N3aXRjaChBcihvWzBdKSl7Y2FzZSI8ZmlsbHMiOmNhc2UiPGZpbGxzPiI6Y2FzZSI8L2ZpbGxzPiI6YnJlYWs7Y2FzZSI8ZmlsbD4iOmNhc2UiPGZpbGwiOmNhc2UiPGZpbGwvPiI6bj17fSxhLkZpbGxzLnB1c2gobik7YnJlYWs7Y2FzZSI8L2ZpbGw+IjpicmVhaztjYXNlIjxncmFkaWVudEZpbGw+IjppPXtzdG9wczpbXX0sbi5ncmFkaWVudEZpbGw9aTticmVhaztjYXNlIjxncmFkaWVudEZpbGwiOmk9e3N0b3BzOltdfSxvLnR5cGUmJihpLnR5cGU9by50eXBlKSxvLmRlZ3JlZSYmKGkuZGVncmVlPXBhcnNlRmxvYXQoby5kZWdyZWUpKSxbImxlZnQiLCJyaWdodCIsInRvcCIsImJvdHRvbSJdLmZvckVhY2goZnVuY3Rpb24obCl7b1tsXSE9bnVsbCYmKGlbbF09cGFyc2VGbG9hdChvW2xdKSl9KSxuLmdyYWRpZW50RmlsbD1pO2JyZWFrO2Nhc2UiPC9ncmFkaWVudEZpbGw+IjppPW51bGw7YnJlYWs7Y2FzZSI8cGF0dGVybkZpbGwiOmNhc2UiPHBhdHRlcm5GaWxsPiI6by5wYXR0ZXJuVHlwZSYmKG4ucGF0dGVyblR5cGU9by5wYXR0ZXJuVHlwZSk7YnJlYWs7Y2FzZSI8cGF0dGVybkZpbGwvPiI6Y2FzZSI8L3BhdHRlcm5GaWxsPiI6YnJlYWs7Y2FzZSI8YmdDb2xvciI6bi5iZ0NvbG9yPXpyKG8scik7YnJlYWs7Y2FzZSI8YmdDb2xvci8+IjpjYXNlIjwvYmdDb2xvcj4iOmJyZWFrO2Nhc2UiPGZnQ29sb3IiOm4uZmdDb2xvcj16cihvLHIpO2JyZWFrO2Nhc2UiPGZnQ29sb3IvPiI6Y2FzZSI8L2ZnQ29sb3I+IjpicmVhaztjYXNlIjxzdG9wIjpmPXt9LG8ucG9zaXRpb24hPW51bGwmJihmLnBvc2l0aW9uPXBhcnNlRmxvYXQoby5wb3NpdGlvbikpLGkmJmkuc3RvcHMucHVzaChmKTticmVhaztjYXNlIjxzdG9wLz4iOmkmJihmPXt9LG8ucG9zaXRpb24hPW51bGwmJihmLnBvc2l0aW9uPXBhcnNlRmxvYXQoby5wb3NpdGlvbikpLGkuc3RvcHMucHVzaChmKSksZj1udWxsO2JyZWFrO2Nhc2UiPC9zdG9wPiI6Zj1udWxsO2JyZWFrO2Nhc2UiPGNvbG9yIjpmJiYoZi5jb2xvcj16cihvLHIpKTticmVhaztjYXNlIjxjb2xvci8+IjpmJiYoZi5jb2xvcj16cihvLHIpKTticmVhaztjYXNlIjwvY29sb3I+IjpicmVhaztjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxleHQiOnM9ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOnM9ITE7YnJlYWs7ZGVmYXVsdDppZih0JiZ0LldURiYmIXMpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitvWzBdKyIgaW4gZmlsbHMiKX19KX1mdW5jdGlvbiBPaChlLGEscix0KXthLkZvbnRzPVtdO3ZhciBuPXt9LGk9ITE7KGUubWF0Y2gobnIpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihmKXt2YXIgcz1vZShmKTtzd2l0Y2goQXIoc1swXSkpe2Nhc2UiPGZvbnRzIjpjYXNlIjxmb250cz4iOmNhc2UiPC9mb250cz4iOmJyZWFrO2Nhc2UiPGZvbnQiOmNhc2UiPGZvbnQ+IjpicmVhaztjYXNlIjwvZm9udD4iOmNhc2UiPGZvbnQvPiI6YS5Gb250cy5wdXNoKG4pLG49e307YnJlYWs7Y2FzZSI8bmFtZSI6cy52YWwmJihuLm5hbWU9VmUocy52YWwpKTticmVhaztjYXNlIjxuYW1lLz4iOmNhc2UiPC9uYW1lPiI6YnJlYWs7Y2FzZSI8YiI6bi5ib2xkPXMudmFsP0ZlKHMudmFsKToxO2JyZWFrO2Nhc2UiPGIvPiI6bi5ib2xkPTE7YnJlYWs7Y2FzZSI8L2I+IjpjYXNlIjwvYiI6YnJlYWs7Y2FzZSI8aSI6bi5pdGFsaWM9cy52YWw/RmUocy52YWwpOjE7YnJlYWs7Y2FzZSI8aS8+IjpuLml0YWxpYz0xO2JyZWFrO2Nhc2UiPC9pPiI6Y2FzZSI8L2kiOmJyZWFrO2Nhc2UiPHUiOnN3aXRjaChzLnZhbCl7Y2FzZSJub25lIjpuLnVuZGVybGluZT0wO2JyZWFrO2Nhc2Uic2luZ2xlIjpuLnVuZGVybGluZT0xO2JyZWFrO2Nhc2UiZG91YmxlIjpuLnVuZGVybGluZT0yO2JyZWFrO2Nhc2Uic2luZ2xlQWNjb3VudGluZyI6bi51bmRlcmxpbmU9MzM7YnJlYWs7Y2FzZSJkb3VibGVBY2NvdW50aW5nIjpuLnVuZGVybGluZT0zNDticmVha31icmVhaztjYXNlIjx1Lz4iOm4udW5kZXJsaW5lPTE7YnJlYWs7Y2FzZSI8L3U+IjpjYXNlIjwvdSI6YnJlYWs7Y2FzZSI8c3RyaWtlIjpuLnN0cmlrZT1zLnZhbD9GZShzLnZhbCk6MTticmVhaztjYXNlIjxzdHJpa2UvPiI6bi5zdHJpa2U9MTticmVhaztjYXNlIjwvc3RyaWtlPiI6Y2FzZSI8L3N0cmlrZSI6YnJlYWs7Y2FzZSI8b3V0bGluZSI6bi5vdXRsaW5lPXMudmFsP0ZlKHMudmFsKToxO2JyZWFrO2Nhc2UiPG91dGxpbmUvPiI6bi5vdXRsaW5lPTE7YnJlYWs7Y2FzZSI8L291dGxpbmU+IjpjYXNlIjwvb3V0bGluZSI6YnJlYWs7Y2FzZSI8c2hhZG93IjpuLnNoYWRvdz1zLnZhbD9GZShzLnZhbCk6MTticmVhaztjYXNlIjxzaGFkb3cvPiI6bi5zaGFkb3c9MTticmVhaztjYXNlIjwvc2hhZG93PiI6Y2FzZSI8L3NoYWRvdyI6YnJlYWs7Y2FzZSI8Y29uZGVuc2UiOm4uY29uZGVuc2U9cy52YWw/RmUocy52YWwpOjE7YnJlYWs7Y2FzZSI8Y29uZGVuc2UvPiI6bi5jb25kZW5zZT0xO2JyZWFrO2Nhc2UiPC9jb25kZW5zZT4iOmNhc2UiPC9jb25kZW5zZSI6YnJlYWs7Y2FzZSI8ZXh0ZW5kIjpuLmV4dGVuZD1zLnZhbD9GZShzLnZhbCk6MTticmVhaztjYXNlIjxleHRlbmQvPiI6bi5leHRlbmQ9MTticmVhaztjYXNlIjwvZXh0ZW5kPiI6Y2FzZSI8L2V4dGVuZCI6YnJlYWs7Y2FzZSI8c3oiOnMudmFsJiYobi5zej0rcy52YWwpO2JyZWFrO2Nhc2UiPHN6Lz4iOmNhc2UiPC9zej4iOmNhc2UiPC9zeiI6YnJlYWs7Y2FzZSI8dmVydEFsaWduIjpzLnZhbCYmKG4udmVydEFsaWduPXMudmFsKTticmVhaztjYXNlIjx2ZXJ0QWxpZ24vPiI6Y2FzZSI8L3ZlcnRBbGlnbj4iOmNhc2UiPC92ZXJ0QWxpZ24iOmJyZWFrO2Nhc2UiPGZhbWlseSI6cy52YWwmJihuLmZhbWlseT1wYXJzZUludChzLnZhbCwxMCkpO2JyZWFrO2Nhc2UiPGZhbWlseS8+IjpjYXNlIjwvZmFtaWx5PiI6Y2FzZSI8L2ZhbWlseSI6YnJlYWs7Y2FzZSI8c2NoZW1lIjpzLnZhbCYmKG4uc2NoZW1lPXMudmFsKTticmVhaztjYXNlIjxzY2hlbWUvPiI6Y2FzZSI8L3NjaGVtZT4iOmNhc2UiPC9zY2hlbWUiOmJyZWFrO2Nhc2UiPGNoYXJzZXQiOmlmKHMudmFsPT0iMSIpYnJlYWs7cy5jb2RlcGFnZT1HMFtwYXJzZUludChzLnZhbCwxMCldO2JyZWFrO2Nhc2UiPGNoYXJzZXQvPiI6Y2FzZSI8L2NoYXJzZXQ+IjpjYXNlIjwvY2hhcnNldCI6YnJlYWs7Y2FzZSI8Y29sb3IiOm4uY29sb3I9enIocyxyKTticmVhaztjYXNlIjxjb2xvci8+IjpjYXNlIjwvY29sb3I+IjpjYXNlIjwvY29sb3IiOmJyZWFrO2Nhc2UiPEFsdGVybmF0ZUNvbnRlbnQiOmk9ITA7YnJlYWs7Y2FzZSI8L0FsdGVybmF0ZUNvbnRlbnQ+IjpjYXNlIjwvQWx0ZXJuYXRlQ29udGVudCI6aT0hMTticmVhaztjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxleHQiOmk9ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOmk9ITE7YnJlYWs7ZGVmYXVsdDppZih0JiZ0LldURiYmIWkpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitzWzBdKyIgaW4gZm9udHMiKX19KX1mdW5jdGlvbiBOaChlLGEscil7YS5OdW1iZXJGbXQ9W107Zm9yKHZhciB0PXByKFRlKSxuPTA7bjx0Lmxlbmd0aDsrK24pYS5OdW1iZXJGbXRbdFtuXV09VGVbdFtuXV07dmFyIGk9ZS5tYXRjaChucik7aWYoaSlmb3Iobj0wO248aS5sZW5ndGg7KytuKXt2YXIgZj1vZShpW25dKTtzd2l0Y2goQXIoZlswXSkpe2Nhc2UiPG51bUZtdHMiOmNhc2UiPC9udW1GbXRzPiI6Y2FzZSI8bnVtRm10cy8+IjpjYXNlIjxudW1GbXRzPiI6YnJlYWs7Y2FzZSI8bnVtRm10Ijp7dmFyIHM9Q2UoVmUoZi5mb3JtYXRDb2RlKSksYz1wYXJzZUludChmLm51bUZtdElkLDEwKTtpZihhLk51bWJlckZtdFtjXT1zLGM+MCl7aWYoYz4zOTIpe2ZvcihjPTM5MjtjPjYwJiZhLk51bWJlckZtdFtjXSE9bnVsbDstLWMpO2EuTnVtYmVyRm10W2NdPXN9TGEocyxjKX19YnJlYWs7Y2FzZSI8L251bUZtdD4iOmJyZWFrO2RlZmF1bHQ6aWYoci5XVEYpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitmWzBdKyIgaW4gbnVtRm10cyIpfX19dmFyIEEwPVsibnVtRm10SWQiLCJmaWxsSWQiLCJmb250SWQiLCJib3JkZXJJZCIsInhmSWQiXSx5MD1bImFwcGx5QWxpZ25tZW50IiwiYXBwbHlCb3JkZXIiLCJhcHBseUZpbGwiLCJhcHBseUZvbnQiLCJhcHBseU51bWJlckZvcm1hdCIsImFwcGx5UHJvdGVjdGlvbiIsInBpdm90QnV0dG9uIiwicXVvdGVQcmVmaXgiXTtmdW5jdGlvbiBWcyhlLGEscix0KXthW3RdPVtdO3ZhciBuLGk9ITE7KGUubWF0Y2gobnIpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihmKXt2YXIgcz1vZShmKSxjPTA7c3dpdGNoKEFyKHNbMF0pKXtjYXNlIjxjZWxsWGZzIjpjYXNlIjxjZWxsWGZzPiI6Y2FzZSI8Y2VsbFhmcy8+IjpjYXNlIjwvY2VsbFhmcz4iOmNhc2UiPGNlbGxTdHlsZVhmcyI6Y2FzZSI8Y2VsbFN0eWxlWGZzPiI6Y2FzZSI8Y2VsbFN0eWxlWGZzLz4iOmNhc2UiPC9jZWxsU3R5bGVYZnM+IjpicmVhaztjYXNlIjx4ZiI6Y2FzZSI8eGYvPiI6Y2FzZSI8eGY+Ijpmb3Iobj1zLGRlbGV0ZSBuWzBdLGM9MDtjPEEwLmxlbmd0aDsrK2MpbltBMFtjXV0mJihuW0EwW2NdXT1wYXJzZUludChuW0EwW2NdXSwxMCkpO2ZvcihjPTA7Yzx5MC5sZW5ndGg7KytjKW5beTBbY11dJiYoblt5MFtjXV09RmUoblt5MFtjXV0pKTtpZihhLk51bWJlckZtdCYmbi5udW1GbXRJZD4zOTIpe2ZvcihjPTM5MjtjPjYwOy0tYylpZihhLk51bWJlckZtdFtuLm51bUZtdElkXT09YS5OdW1iZXJGbXRbY10pe24ubnVtRm10SWQ9YzticmVha319YVt0XS5wdXNoKG4pO2JyZWFrO2Nhc2UiPC94Zj4iOmJyZWFrO2Nhc2UiPGFsaWdubWVudCI6Y2FzZSI8YWxpZ25tZW50Lz4iOmNhc2UiPGFsaWdubWVudD4iOnZhciBvPXt9O3MudmVydGljYWwmJihvLnZlcnRpY2FsPXMudmVydGljYWwpLHMuaG9yaXpvbnRhbCYmKG8uaG9yaXpvbnRhbD1zLmhvcml6b250YWwpLHMudGV4dFJvdGF0aW9uIT1udWxsJiYoby50ZXh0Um90YXRpb249cGFyc2VJbnQocy50ZXh0Um90YXRpb24sMTApKSxzLmluZGVudCYmKG8uaW5kZW50PXBhcnNlSW50KHMuaW5kZW50LDEwKSkscy5yZWxhdGl2ZUluZGVudCYmKG8ucmVsYXRpdmVJbmRlbnQ9cGFyc2VJbnQocy5yZWxhdGl2ZUluZGVudCwxMCkpLHMucmVhZGluZ09yZGVyJiYoby5yZWFkaW5nT3JkZXI9cGFyc2VJbnQocy5yZWFkaW5nT3JkZXIsMTApKSxzLndyYXBUZXh0JiYoby53cmFwVGV4dD1GZShzLndyYXBUZXh0KSkscy5zaHJpbmtUb0ZpdCYmKG8uc2hyaW5rVG9GaXQ9RmUocy5zaHJpbmtUb0ZpdCkpLHMuanVzdGlmeUxhc3RMaW5lJiYoby5qdXN0aWZ5TGFzdExpbmU9RmUocy5qdXN0aWZ5TGFzdExpbmUpKSxuLmFsaWdubWVudD1vO2JyZWFrO2Nhc2UiPC9hbGlnbm1lbnQ+IjpicmVhaztjYXNlIjxwcm90ZWN0aW9uIjpjYXNlIjxwcm90ZWN0aW9uPiI6dmFyIGw9e307cy5sb2NrZWQhPW51bGwmJihsLmxvY2tlZD1GZShzLmxvY2tlZCkpLHMuaGlkZGVuIT1udWxsJiYobC5oaWRkZW49RmUocy5oaWRkZW4pKSxuLnByb3RlY3Rpb249bDticmVhaztjYXNlIjxwcm90ZWN0aW9uLz4iOmw9e30scy5sb2NrZWQhPW51bGwmJihsLmxvY2tlZD1GZShzLmxvY2tlZCkpLHMuaGlkZGVuIT1udWxsJiYobC5oaWRkZW49RmUocy5oaWRkZW4pKSxuLnByb3RlY3Rpb249bDticmVhaztjYXNlIjwvcHJvdGVjdGlvbj4iOmJyZWFrO2Nhc2UiPEFsdGVybmF0ZUNvbnRlbnQiOmNhc2UiPEFsdGVybmF0ZUNvbnRlbnQ+IjppPSEwO2JyZWFrO2Nhc2UiPC9BbHRlcm5hdGVDb250ZW50PiI6aT0hMTticmVhaztjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxleHQiOmk9ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOmk9ITE7YnJlYWs7ZGVmYXVsdDppZihyJiZyLldURiYmIWkpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitzWzBdKyIgaW4gY2VsbFhmcyIpfX0pfWZ1bmN0aW9uIE1oKGUsYSxyKXtWcyhlLGEsciwiQ2VsbFhmIil9ZnVuY3Rpb24gUGgoZSxhLHIpe1ZzKGUsYSxyLCJDZWxsU3R5bGVYZiIpfWZ1bmN0aW9uIExoKGUsYSxyKXthLkNlbGxTdHlsZXM9W10sKGUubWF0Y2gobnIpfHxbXSkuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgbj1vZSh0KTtzd2l0Y2goQXIoblswXSkpe2Nhc2UiPGNlbGxTdHlsZXMiOmNhc2UiPGNlbGxTdHlsZXM+IjpjYXNlIjxjZWxsU3R5bGVzLz4iOmNhc2UiPC9jZWxsU3R5bGVzPiI6YnJlYWs7Y2FzZSI8Y2VsbFN0eWxlIjpjYXNlIjxjZWxsU3R5bGUvPiI6ZGVsZXRlIG5bMF0sbi54ZklkIT1udWxsJiYobi54ZklkPXBhcnNlSW50KG4ueGZJZCwxMCkpLG4uYnVpbHRpbklkIT1udWxsJiYobi5idWlsdGluSWQ9cGFyc2VJbnQobi5idWlsdGluSWQsMTApKSxuLmlMZXZlbCE9bnVsbCYmKG4uaUxldmVsPXBhcnNlSW50KG4uaUxldmVsLDEwKSksbi5jdXN0b21CdWlsdGluIT1udWxsJiYobi5jdXN0b21CdWlsdGluPUZlKG4uY3VzdG9tQnVpbHRpbikpLG4uaGlkZGVuIT1udWxsJiYobi5oaWRkZW49RmUobi5oaWRkZW4pKSxuLm5hbWUmJihuLm5hbWU9VmUobi5uYW1lKSksYS5DZWxsU3R5bGVzLnB1c2gobik7YnJlYWs7Y2FzZSI8L2NlbGxTdHlsZT4iOmJyZWFrO2RlZmF1bHQ6aWYociYmci5XVEYpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIituWzBdKyIgaW4gY2VsbFN0eWxlcyIpfX0pfWZ1bmN0aW9uIEJoKGUsYSxyLHQpe2EuRHhmcz1bXTt2YXIgbj1udWxsLGk9bnVsbCxmPW51bGwscz1udWxsLGM9IiIsbz0hMTsoZS5tYXRjaChucil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGwpe3ZhciB1PW9lKGwpO3N3aXRjaChBcih1WzBdKSl7Y2FzZSI8ZHhmcyI6Y2FzZSI8ZHhmcz4iOmNhc2UiPGR4ZnMvPiI6Y2FzZSI8L2R4ZnM+IjpicmVhaztjYXNlIjxkeGYiOmNhc2UiPGR4Zj4iOm49e30sYS5EeGZzLnB1c2gobik7YnJlYWs7Y2FzZSI8ZHhmLz4iOmEuRHhmcy5wdXNoKHt9KSxuPW51bGw7YnJlYWs7Y2FzZSI8L2R4Zj4iOm49bnVsbDticmVhaztjYXNlIjxmb250IjpjYXNlIjxmb250PiI6aT17fSxuJiYobi5mb250PWkpO2JyZWFrO2Nhc2UiPC9mb250PiI6Y2FzZSI8Zm9udC8+IjppPW51bGw7YnJlYWs7Y2FzZSI8bmFtZSI6aSYmdS52YWwmJihpLm5hbWU9VmUodS52YWwpKTticmVhaztjYXNlIjxuYW1lLz4iOmNhc2UiPC9uYW1lPiI6YnJlYWs7Y2FzZSI8YiI6aSYmKGkuYm9sZD11LnZhbD9GZSh1LnZhbCk6MSk7YnJlYWs7Y2FzZSI8Yi8+IjppJiYoaS5ib2xkPTEpO2JyZWFrO2Nhc2UiPC9iPiI6YnJlYWs7Y2FzZSI8aSI6aSYmKGkuaXRhbGljPXUudmFsP0ZlKHUudmFsKToxKTticmVhaztjYXNlIjxpLz4iOmkmJihpLml0YWxpYz0xKTticmVhaztjYXNlIjwvaT4iOmJyZWFrO2Nhc2UiPHUiOmkmJihpLnVuZGVybGluZT11LnZhbHx8MSk7YnJlYWs7Y2FzZSI8dS8+IjppJiYoaS51bmRlcmxpbmU9MSk7YnJlYWs7Y2FzZSI8L3U+IjpicmVhaztjYXNlIjxzdHJpa2UiOmkmJihpLnN0cmlrZT11LnZhbD9GZSh1LnZhbCk6MSk7YnJlYWs7Y2FzZSI8c3RyaWtlLz4iOmkmJihpLnN0cmlrZT0xKTticmVhaztjYXNlIjwvc3RyaWtlPiI6YnJlYWs7Y2FzZSI8c3oiOmkmJnUudmFsJiYoaS5zej0rdS52YWwpO2JyZWFrO2Nhc2UiPHN6Lz4iOmNhc2UiPC9zej4iOmJyZWFrO2Nhc2UiPG91dGxpbmUiOmkmJihpLm91dGxpbmU9dS52YWw/RmUodS52YWwpOjEpO2JyZWFrO2Nhc2UiPG91dGxpbmUvPiI6aSYmKGkub3V0bGluZT0xKTticmVhaztjYXNlIjwvb3V0bGluZT4iOmJyZWFrO2Nhc2UiPHNoYWRvdyI6aSYmKGkuc2hhZG93PXUudmFsP0ZlKHUudmFsKToxKTticmVhaztjYXNlIjxzaGFkb3cvPiI6aSYmKGkuc2hhZG93PTEpO2JyZWFrO2Nhc2UiPC9zaGFkb3c+IjpicmVhaztjYXNlIjxjb25kZW5zZSI6aSYmKGkuY29uZGVuc2U9dS52YWw/RmUodS52YWwpOjEpO2JyZWFrO2Nhc2UiPGNvbmRlbnNlLz4iOmkmJihpLmNvbmRlbnNlPTEpO2JyZWFrO2Nhc2UiPC9jb25kZW5zZT4iOmJyZWFrO2Nhc2UiPGV4dGVuZCI6aSYmKGkuZXh0ZW5kPXUudmFsP0ZlKHUudmFsKToxKTticmVhaztjYXNlIjxleHRlbmQvPiI6aSYmKGkuZXh0ZW5kPTEpO2JyZWFrO2Nhc2UiPC9leHRlbmQ+IjpicmVhaztjYXNlIjx2ZXJ0QWxpZ24iOmkmJnUudmFsJiYoaS52ZXJ0QWxpZ249dS52YWwpO2JyZWFrO2Nhc2UiPHZlcnRBbGlnbi8+IjpjYXNlIjwvdmVydEFsaWduPiI6YnJlYWs7Y2FzZSI8ZmFtaWx5IjppJiZ1LnZhbCYmKGkuZmFtaWx5PXBhcnNlSW50KHUudmFsLDEwKSk7YnJlYWs7Y2FzZSI8ZmFtaWx5Lz4iOmNhc2UiPC9mYW1pbHk+IjpicmVhaztjYXNlIjxzY2hlbWUiOmkmJnUudmFsJiYoaS5zY2hlbWU9dS52YWwpO2JyZWFrO2Nhc2UiPHNjaGVtZS8+IjpjYXNlIjwvc2NoZW1lPiI6YnJlYWs7Y2FzZSI8Y2hhcnNldCI6aSYmdS52YWwhPW51bGwmJihpLmNoYXJzZXQ9cGFyc2VJbnQodS52YWwsMTApKTticmVhaztjYXNlIjxjaGFyc2V0Lz4iOmNhc2UiPC9jaGFyc2V0PiI6YnJlYWs7Y2FzZSI8Y29sb3IiOmk/aS5jb2xvcj16cih1LHIpOmMmJnMmJihzW2NdLmNvbG9yPXpyKHUscikpO2JyZWFrO2Nhc2UiPGNvbG9yLz4iOmNhc2UiPC9jb2xvcj4iOmJyZWFrO2Nhc2UiPGZpbGwiOmNhc2UiPGZpbGw+IjpmPXt9LG4mJihuLmZpbGw9Zik7YnJlYWs7Y2FzZSI8ZmlsbC8+IjpmPW51bGw7YnJlYWs7Y2FzZSI8L2ZpbGw+IjpmPW51bGw7YnJlYWs7Y2FzZSI8cGF0dGVybkZpbGwiOmNhc2UiPHBhdHRlcm5GaWxsPiI6ZiYmdS5wYXR0ZXJuVHlwZSYmKGYucGF0dGVyblR5cGU9dS5wYXR0ZXJuVHlwZSk7YnJlYWs7Y2FzZSI8cGF0dGVybkZpbGwvPiI6Y2FzZSI8L3BhdHRlcm5GaWxsPiI6YnJlYWs7Y2FzZSI8ZmdDb2xvciI6ZiYmKGYuZmdDb2xvcj16cih1LHIpKTticmVhaztjYXNlIjxmZ0NvbG9yLz4iOmNhc2UiPC9mZ0NvbG9yPiI6YnJlYWs7Y2FzZSI8YmdDb2xvciI6ZiYmKGYuYmdDb2xvcj16cih1LHIpKTticmVhaztjYXNlIjxiZ0NvbG9yLz4iOmNhc2UiPC9iZ0NvbG9yPiI6YnJlYWs7Y2FzZSI8Ym9yZGVyIjpjYXNlIjxib3JkZXI+IjpzPXt9LG4mJihuLmJvcmRlcj1zKTticmVhaztjYXNlIjxib3JkZXIvPiI6cz1udWxsO2JyZWFrO2Nhc2UiPC9ib3JkZXI+IjpzPW51bGw7YnJlYWs7Y2FzZSI8bGVmdCI6Y2FzZSI8bGVmdD4iOmNhc2UiPGxlZnQvPiI6Yz0ibGVmdCIscyYmKHNbY109c1tjXXx8e30sdS5zdHlsZSYmKHNbY10uc3R5bGU9dS5zdHlsZSkpLHVbMF0uc2xpY2UoLTIpPT0iLz4iJiYoYz0iIik7YnJlYWs7Y2FzZSI8L2xlZnQ+IjpjPSIiO2JyZWFrO2Nhc2UiPHJpZ2h0IjpjYXNlIjxyaWdodD4iOmNhc2UiPHJpZ2h0Lz4iOmM9InJpZ2h0IixzJiYoc1tjXT1zW2NdfHx7fSx1LnN0eWxlJiYoc1tjXS5zdHlsZT11LnN0eWxlKSksdVswXS5zbGljZSgtMik9PSIvPiImJihjPSIiKTticmVhaztjYXNlIjwvcmlnaHQ+IjpjPSIiO2JyZWFrO2Nhc2UiPHRvcCI6Y2FzZSI8dG9wPiI6Y2FzZSI8dG9wLz4iOmM9InRvcCIscyYmKHNbY109c1tjXXx8e30sdS5zdHlsZSYmKHNbY10uc3R5bGU9dS5zdHlsZSkpLHVbMF0uc2xpY2UoLTIpPT0iLz4iJiYoYz0iIik7YnJlYWs7Y2FzZSI8L3RvcD4iOmM9IiI7YnJlYWs7Y2FzZSI8Ym90dG9tIjpjYXNlIjxib3R0b20+IjpjYXNlIjxib3R0b20vPiI6Yz0iYm90dG9tIixzJiYoc1tjXT1zW2NdfHx7fSx1LnN0eWxlJiYoc1tjXS5zdHlsZT11LnN0eWxlKSksdVswXS5zbGljZSgtMik9PSIvPiImJihjPSIiKTticmVhaztjYXNlIjwvYm90dG9tPiI6Yz0iIjticmVhaztjYXNlIjxkaWFnb25hbCI6Y2FzZSI8ZGlhZ29uYWw+IjpjYXNlIjxkaWFnb25hbC8+IjpjPSJkaWFnb25hbCIscyYmKHNbY109c1tjXXx8e30sdS5zdHlsZSYmKHNbY10uc3R5bGU9dS5zdHlsZSkpLHVbMF0uc2xpY2UoLTIpPT0iLz4iJiYoYz0iIik7YnJlYWs7Y2FzZSI8L2RpYWdvbmFsPiI6Yz0iIjticmVhaztjYXNlIjxob3Jpem9udGFsIjpjYXNlIjxob3Jpem9udGFsPiI6Y2FzZSI8aG9yaXpvbnRhbC8+IjpjPSJob3Jpem9udGFsIixzJiYoc1tjXT1zW2NdfHx7fSx1LnN0eWxlJiYoc1tjXS5zdHlsZT11LnN0eWxlKSksdVswXS5zbGljZSgtMik9PSIvPiImJihjPSIiKTticmVhaztjYXNlIjwvaG9yaXpvbnRhbD4iOmM9IiI7YnJlYWs7Y2FzZSI8dmVydGljYWwiOmNhc2UiPHZlcnRpY2FsPiI6Y2FzZSI8dmVydGljYWwvPiI6Yz0idmVydGljYWwiLHMmJihzW2NdPXNbY118fHt9LHUuc3R5bGUmJihzW2NdLnN0eWxlPXUuc3R5bGUpKSx1WzBdLnNsaWNlKC0yKT09Ii8+IiYmKGM9IiIpO2JyZWFrO2Nhc2UiPC92ZXJ0aWNhbD4iOmM9IiI7YnJlYWs7Y2FzZSI8c3RhcnQiOmNhc2UiPHN0YXJ0PiI6Y2FzZSI8c3RhcnQvPiI6Yz0ic3RhcnQiLHMmJihzW2NdPXNbY118fHt9LHUuc3R5bGUmJihzW2NdLnN0eWxlPXUuc3R5bGUpKSx1WzBdLnNsaWNlKC0yKT09Ii8+IiYmKGM9IiIpO2JyZWFrO2Nhc2UiPC9zdGFydD4iOmM9IiI7YnJlYWs7Y2FzZSI8ZW5kIjpjYXNlIjxlbmQ+IjpjYXNlIjxlbmQvPiI6Yz0iZW5kIixzJiYoc1tjXT1zW2NdfHx7fSx1LnN0eWxlJiYoc1tjXS5zdHlsZT11LnN0eWxlKSksdVswXS5zbGljZSgtMik9PSIvPiImJihjPSIiKTticmVhaztjYXNlIjwvZW5kPiI6Yz0iIjticmVhaztjYXNlIjxhbGlnbm1lbnQiOm4mJihuLmFsaWdubWVudD17fSx1LnZlcnRpY2FsJiYobi5hbGlnbm1lbnQudmVydGljYWw9dS52ZXJ0aWNhbCksdS5ob3Jpem9udGFsJiYobi5hbGlnbm1lbnQuaG9yaXpvbnRhbD11Lmhvcml6b250YWwpLHUud3JhcFRleHQmJihuLmFsaWdubWVudC53cmFwVGV4dD1GZSh1LndyYXBUZXh0KSkpO2JyZWFrO2Nhc2UiPGFsaWdubWVudC8+IjpjYXNlIjwvYWxpZ25tZW50PiI6YnJlYWs7Y2FzZSI8bnVtRm10IjpuJiYobi5udW1GbXQ9e251bUZtdElkOnUubnVtRm10SWQhPW51bGw/cGFyc2VJbnQodS5udW1GbXRJZCwxMCk6dm9pZCAwLGZvcm1hdENvZGU6dS5mb3JtYXRDb2RlP0NlKFZlKHUuZm9ybWF0Q29kZSkpOnZvaWQgMH0pO2JyZWFrO2Nhc2UiPG51bUZtdC8+IjpjYXNlIjwvbnVtRm10PiI6YnJlYWs7Y2FzZSI8cHJvdGVjdGlvbiI6biYmKG4ucHJvdGVjdGlvbj17fSx1LmxvY2tlZCE9bnVsbCYmKG4ucHJvdGVjdGlvbi5sb2NrZWQ9RmUodS5sb2NrZWQpKSx1LmhpZGRlbiE9bnVsbCYmKG4ucHJvdGVjdGlvbi5oaWRkZW49RmUodS5oaWRkZW4pKSk7YnJlYWs7Y2FzZSI8cHJvdGVjdGlvbi8+IjpjYXNlIjwvcHJvdGVjdGlvbj4iOmJyZWFrO2Nhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmJyZWFrO2Nhc2UiPGV4dCI6bz0hMDticmVhaztjYXNlIjwvZXh0PiI6bz0hMTticmVhaztkZWZhdWx0OmlmKHQmJnQuV1RGJiYhbyl0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCAiK3VbMF0rIiBpbiBkeGZzIil9fSl9ZnVuY3Rpb24gVWgoZSxhLHIsdCl7YS5Db2xvcnM9e2luZGV4ZWRDb2xvcnM6W10sbXJ1Q29sb3JzOltdLHRoZW1lQ29sb3JzOltdfTt2YXIgbj1udWxsLGk9ITE7KGUubWF0Y2gobnIpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihmKXt2YXIgcz1vZShmKTtzd2l0Y2goQXIoc1swXSkpe2Nhc2UiPGNvbG9ycyI6Y2FzZSI8Y29sb3JzPiI6Y2FzZSI8L2NvbG9ycz4iOmJyZWFrO2Nhc2UiPGluZGV4ZWRDb2xvcnMiOmNhc2UiPGluZGV4ZWRDb2xvcnM+IjpuPWEuQ29sb3JzLmluZGV4ZWRDb2xvcnM7YnJlYWs7Y2FzZSI8L2luZGV4ZWRDb2xvcnM+IjpuPW51bGw7YnJlYWs7Y2FzZSI8dGhlbWVDb2xvcnMiOmNhc2UiPHRoZW1lQ29sb3JzPiI6bj1hLkNvbG9ycy50aGVtZUNvbG9yczticmVhaztjYXNlIjwvdGhlbWVDb2xvcnM+IjpuPW51bGw7YnJlYWs7Y2FzZSI8bXJ1Q29sb3JzIjpjYXNlIjxtcnVDb2xvcnM+IjpuPWEuQ29sb3JzLm1ydUNvbG9yczticmVhaztjYXNlIjwvbXJ1Q29sb3JzPiI6bj1udWxsO2JyZWFrO2Nhc2UiPHJnYkNvbG9yIjpjYXNlIjxyZ2JDb2xvci8+IjpuJiZuLnB1c2goenIocyxyKSk7YnJlYWs7Y2FzZSI8L3JnYkNvbG9yPiI6YnJlYWs7Y2FzZSI8Y29sb3IiOmNhc2UiPGNvbG9yLz4iOm4mJm4ucHVzaCh6cihzLHIpKTticmVhaztjYXNlIjwvY29sb3I+IjpicmVhaztjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxleHQiOmk9ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOmk9ITE7YnJlYWs7ZGVmYXVsdDppZih0JiZ0LldURiYmIWkpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitzWzBdKyIgaW4gY29sb3JzIil9fSl9dmFyIEhoPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHIsdCxuKXt2YXIgaT17fTtpZighcilyZXR1cm4gaTtyPVowKEN0KHIsIjwhLS0iLCItLT4iKSk7dmFyIGY7cmV0dXJuKGY9TGUociwibnVtRm10cyIpKSYmTmgoZlswXSxpLG4pLChmPUxlKHIsImZvbnRzIikpJiZPaChmWzBdLGksdCxuKSwoZj1MZShyLCJmaWxscyIpKSYmUmgoZlswXSxpLHQsbiksKGY9TGUociwiYm9yZGVycyIpKSYmRGgoZlswXSxpLHQsbiksKGY9TGUociwiY2VsbFN0eWxlWGZzIikpJiZQaChmWzBdLGksbiksKGY9TGUociwiY2VsbFN0eWxlcyIpKSYmTGgoZlswXSxpLG4pLChmPUxlKHIsImNlbGxYZnMiKSkmJk1oKGZbMF0saSxuKSwoZj1MZShyLCJkeGZzIikpJiZCaChmWzBdLGksdCxuKSwoZj1MZShyLCJjb2xvcnMiKSkmJlVoKGZbMF0saSx0LG4pLGl9fSgpO2Z1bmN0aW9uIFdoKGUsYSl7dmFyIHI9ZS5yZWFkX3NoaWZ0KDIpLHQ9bXIoZSk7cmV0dXJuW3IsdF19ZnVuY3Rpb24gVmgoZSxhLHIpe3ZhciB0PXt9O3Quc3o9ZS5yZWFkX3NoaWZ0KDIpLzIwO3ZhciBuPVJvKGUpO24uZkl0YWxpYyYmKHQuaXRhbGljPTEpLG4uZkNvbmRlbnNlJiYodC5jb25kZW5zZT0xKSxuLmZFeHRlbmQmJih0LmV4dGVuZD0xKSxuLmZTaGFkb3cmJih0LnNoYWRvdz0xKSxuLmZPdXRsaW5lJiYodC5vdXRsaW5lPTEpLG4uZlN0cmlrZW91dCYmKHQuc3RyaWtlPTEpO3ZhciBpPWUucmVhZF9zaGlmdCgyKTtzd2l0Y2goaT09PTcwMCYmKHQuYm9sZD0xKSxlLnJlYWRfc2hpZnQoMikpe2Nhc2UgMTp0LnZlcnRBbGlnbj0ic3VwZXJzY3JpcHQiO2JyZWFrO2Nhc2UgMjp0LnZlcnRBbGlnbj0ic3Vic2NyaXB0IjticmVha312YXIgZj1lLnJlYWRfc2hpZnQoMSk7ZiE9MCYmKHQudW5kZXJsaW5lPWYpO3ZhciBzPWUucmVhZF9zaGlmdCgxKTtzPjAmJih0LmZhbWlseT1zKTt2YXIgYz1lLnJlYWRfc2hpZnQoMSk7c3dpdGNoKGM+MCYmKHQuY2hhcnNldD1jKSxlLmwrKyx0LmNvbG9yPURvKGUpLGUucmVhZF9zaGlmdCgxKSl7Y2FzZSAxOnQuc2NoZW1lPSJtYWpvciI7YnJlYWs7Y2FzZSAyOnQuc2NoZW1lPSJtaW5vciI7YnJlYWt9cmV0dXJuIHQubmFtZT1tcihlKSx0fXZhciBHaD15cjtmdW5jdGlvbiBYaChlLGEpe3ZhciByPWUubCthLHQ9ZS5yZWFkX3NoaWZ0KDIpLG49ZS5yZWFkX3NoaWZ0KDIpO3JldHVybiBlLmw9cix7aXhmZTp0LG51bUZtdElkOm59fXZhciB6aD15cjtmdW5jdGlvbiAkaChlLGEscil7dmFyIHQ9e307dC5OdW1iZXJGbXQ9W107Zm9yKHZhciBuIGluIFRlKXQuTnVtYmVyRm10W25dPVRlW25dO3QuQ2VsbFhmPVtdLHQuRm9udHM9W107dmFyIGk9W10sZj0hMTtyZXR1cm4gdmEoZSxmdW5jdGlvbihjLG8sbCl7c3dpdGNoKGwpe2Nhc2UgNDQ6dC5OdW1iZXJGbXRbY1swXV09Y1sxXSxMYShjWzFdLGNbMF0pO2JyZWFrO2Nhc2UgNDM6dC5Gb250cy5wdXNoKGMpLGMuY29sb3IudGhlbWUhPW51bGwmJmEmJmEudGhlbWVFbGVtZW50cyYmYS50aGVtZUVsZW1lbnRzLmNsclNjaGVtZSYmKGMuY29sb3IucmdiPXhuKGEudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbYy5jb2xvci50aGVtZV0ucmdiLGMuY29sb3IudGludHx8MCkpO2JyZWFrO2Nhc2UgMTAyNTpicmVhaztjYXNlIDQ1OmJyZWFrO2Nhc2UgNDY6YnJlYWs7Y2FzZSA0NzppW2kubGVuZ3RoLTFdPT02MTcmJnQuQ2VsbFhmLnB1c2goYyk7YnJlYWs7Y2FzZSA0ODpjYXNlIDUwNzpjYXNlIDU3MjpjYXNlIDQ3NTpicmVhaztjYXNlIDExNzE6Y2FzZSAyMTAyOmNhc2UgMTEzMDpjYXNlIDUxMjpjYXNlIDIwOTU6Y2FzZSAzMDcyOmJyZWFrO2Nhc2UgMzU6Zj0hMDticmVhaztjYXNlIDM2OmY9ITE7YnJlYWs7Y2FzZSAzNzppLnB1c2gobCksZj0hMDticmVhaztjYXNlIDM4OmkucG9wKCksZj0hMTticmVhaztkZWZhdWx0OmlmKG8uVD4wKWkucHVzaChsKTtlbHNlIGlmKG8uVDwwKWkucG9wKCk7ZWxzZSBpZighZnx8ci5XVEYmJmlbaS5sZW5ndGgtMV0hPTM3KXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCByZWNvcmQgMHgiK2wudG9TdHJpbmcoMTYpKX19KSx0fXZhciBLaD1bIjwvYTpsdDE+IiwiPC9hOmRrMT4iLCI8L2E6bHQyPiIsIjwvYTpkazI+IiwiPC9hOmFjY2VudDE+IiwiPC9hOmFjY2VudDI+IiwiPC9hOmFjY2VudDM+IiwiPC9hOmFjY2VudDQ+IiwiPC9hOmFjY2VudDU+IiwiPC9hOmFjY2VudDY+IiwiPC9hOmhsaW5rPiIsIjwvYTpmb2xIbGluaz4iXTtmdW5jdGlvbiBqaChlLGEscil7YS50aGVtZUVsZW1lbnRzLmNsclNjaGVtZT1bXTt2YXIgdD17fTsoZVswXS5tYXRjaChucil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3ZhciBpPW9lKG4pO3N3aXRjaChpWzBdKXtjYXNlIjxhOmNsclNjaGVtZSI6Y2FzZSI8L2E6Y2xyU2NoZW1lPiI6YnJlYWs7Y2FzZSI8YTpzcmdiQ2xyIjp0LnJnYj1pLnZhbDticmVhaztjYXNlIjwvYTpzcmdiQ2xyPiI6YnJlYWs7Y2FzZSI8YTpzeXNDbHIiOnQucmdiPWkubGFzdENscjticmVhaztjYXNlIjwvYTpzeXNDbHI+IjpicmVhaztjYXNlIjwvYTpkazE+IjpjYXNlIjwvYTpsdDE+IjpjYXNlIjxhOmRrMT4iOmNhc2UiPGE6bHQxPiI6Y2FzZSI8YTpkazI+IjpjYXNlIjwvYTpkazI+IjpjYXNlIjxhOmx0Mj4iOmNhc2UiPC9hOmx0Mj4iOmNhc2UiPGE6YWNjZW50MT4iOmNhc2UiPC9hOmFjY2VudDE+IjpjYXNlIjxhOmFjY2VudDI+IjpjYXNlIjwvYTphY2NlbnQyPiI6Y2FzZSI8YTphY2NlbnQzPiI6Y2FzZSI8L2E6YWNjZW50Mz4iOmNhc2UiPGE6YWNjZW50ND4iOmNhc2UiPC9hOmFjY2VudDQ+IjpjYXNlIjxhOmFjY2VudDU+IjpjYXNlIjwvYTphY2NlbnQ1PiI6Y2FzZSI8YTphY2NlbnQ2PiI6Y2FzZSI8L2E6YWNjZW50Nj4iOmNhc2UiPGE6aGxpbms+IjpjYXNlIjwvYTpobGluaz4iOmNhc2UiPGE6Zm9sSGxpbms+IjpjYXNlIjwvYTpmb2xIbGluaz4iOmlbMF0uY2hhckF0KDEpPT09Ii8iPyhhLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW0toLmluZGV4T2YoaVswXSldPXQsdD17fSk6dC5uYW1lPWlbMF0uc2xpY2UoMyxpWzBdLmxlbmd0aC0xKTticmVhaztkZWZhdWx0OmlmKHImJnIuV1RGKXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkICIraVswXSsiIGluIGNsclNjaGVtZSIpfX0pfWZ1bmN0aW9uIFloKGUsYSxyKXthLnRoZW1lRWxlbWVudHM9e307dmFyIHQ7aWYoISh0PUhhKGUsImE6Y2xyU2NoZW1lIikpKXRocm93IG5ldyBFcnJvcigiY2xyU2NoZW1lIG5vdCBmb3VuZCBpbiB0aGVtZUVsZW1lbnRzIik7aWYoamgodCxhLHIpLCEodD1IYShlLCJhOmZvbnRTY2hlbWUiKSkpdGhyb3cgbmV3IEVycm9yKCJmb250U2NoZW1lIG5vdCBmb3VuZCBpbiB0aGVtZUVsZW1lbnRzIik7aWYoISh0PUhhKGUsImE6Zm10U2NoZW1lIikpKXRocm93IG5ldyBFcnJvcigiZm10U2NoZW1lIG5vdCBmb3VuZCBpbiB0aGVtZUVsZW1lbnRzIil9ZnVuY3Rpb24gR3MoZSxhKXsoIWV8fGUubGVuZ3RoPT09MCkmJihlPUpoKCkpO3ZhciByLHQ9e307aWYoIShyPUhhKGUsImE6dGhlbWVFbGVtZW50cyIpKSl0aHJvdyBuZXcgRXJyb3IoInRoZW1lRWxlbWVudHMgbm90IGZvdW5kIGluIHRoZW1lIik7cmV0dXJuIFloKHJbMF0sdCxhKSx0LnJhdz1lLHR9ZnVuY3Rpb24gSmgoZSxhKXtpZihhJiZhLnRoZW1lWExTWClyZXR1cm4gYS50aGVtZVhMU1g7aWYoZSYmdHlwZW9mIGUucmF3PT0ic3RyaW5nIilyZXR1cm4gZS5yYXc7dmFyIHI9W19pXTtyZXR1cm4gcltyLmxlbmd0aF09JzxhOnRoZW1lIHhtbG5zOmE9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9kcmF3aW5nbWwvMjAwNi9tYWluIiBuYW1lPSJPZmZpY2UgVGhlbWUiPicscltyLmxlbmd0aF09IjxhOnRoZW1lRWxlbWVudHM+IixyW3IubGVuZ3RoXT0nPGE6Y2xyU2NoZW1lIG5hbWU9Ik9mZmljZSI+JyxyW3IubGVuZ3RoXT0nPGE6ZGsxPjxhOnN5c0NsciB2YWw9IndpbmRvd1RleHQiIGxhc3RDbHI9IjAwMDAwMCIvPjwvYTpkazE+JyxyW3IubGVuZ3RoXT0nPGE6bHQxPjxhOnN5c0NsciB2YWw9IndpbmRvdyIgbGFzdENscj0iRkZGRkZGIi8+PC9hOmx0MT4nLHJbci5sZW5ndGhdPSc8YTpkazI+PGE6c3JnYkNsciB2YWw9IjFGNDk3RCIvPjwvYTpkazI+JyxyW3IubGVuZ3RoXT0nPGE6bHQyPjxhOnNyZ2JDbHIgdmFsPSJFRUVDRTEiLz48L2E6bHQyPicscltyLmxlbmd0aF09JzxhOmFjY2VudDE+PGE6c3JnYkNsciB2YWw9IjRGODFCRCIvPjwvYTphY2NlbnQxPicscltyLmxlbmd0aF09JzxhOmFjY2VudDI+PGE6c3JnYkNsciB2YWw9IkMwNTA0RCIvPjwvYTphY2NlbnQyPicscltyLmxlbmd0aF09JzxhOmFjY2VudDM+PGE6c3JnYkNsciB2YWw9IjlCQkI1OSIvPjwvYTphY2NlbnQzPicscltyLmxlbmd0aF09JzxhOmFjY2VudDQ+PGE6c3JnYkNsciB2YWw9IjgwNjRBMiIvPjwvYTphY2NlbnQ0PicscltyLmxlbmd0aF09JzxhOmFjY2VudDU+PGE6c3JnYkNsciB2YWw9IjRCQUNDNiIvPjwvYTphY2NlbnQ1PicscltyLmxlbmd0aF09JzxhOmFjY2VudDY+PGE6c3JnYkNsciB2YWw9IkY3OTY0NiIvPjwvYTphY2NlbnQ2PicscltyLmxlbmd0aF09JzxhOmhsaW5rPjxhOnNyZ2JDbHIgdmFsPSIwMDAwRkYiLz48L2E6aGxpbms+JyxyW3IubGVuZ3RoXT0nPGE6Zm9sSGxpbms+PGE6c3JnYkNsciB2YWw9IjgwMDA4MCIvPjwvYTpmb2xIbGluaz4nLHJbci5sZW5ndGhdPSI8L2E6Y2xyU2NoZW1lPiIscltyLmxlbmd0aF09JzxhOmZvbnRTY2hlbWUgbmFtZT0iT2ZmaWNlIj4nLHJbci5sZW5ndGhdPSI8YTptYWpvckZvbnQ+IixyW3IubGVuZ3RoXT0nPGE6bGF0aW4gdHlwZWZhY2U9IkNhbWJyaWEiLz4nLHJbci5sZW5ndGhdPSc8YTplYSB0eXBlZmFjZT0iIi8+JyxyW3IubGVuZ3RoXT0nPGE6Y3MgdHlwZWZhY2U9IiIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJKcGFuIiB0eXBlZmFjZT0i77yt77yzIO+8sOOCtOOCt+ODg+OCryIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJIYW5nIiB0eXBlZmFjZT0i66eR7J2AIOqzoOuUlSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJIYW5zIiB0eXBlZmFjZT0i5a6L5L2TIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkhhbnQiIHR5cGVmYWNlPSLmlrDntLDmmI7pq5QiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iQXJhYiIgdHlwZWZhY2U9IlRpbWVzIE5ldyBSb21hbiIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJIZWJyIiB0eXBlZmFjZT0iVGltZXMgTmV3IFJvbWFuIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRoYWkiIHR5cGVmYWNlPSJUYWhvbWEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iRXRoaSIgdHlwZWZhY2U9Ik55YWxhIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkJlbmciIHR5cGVmYWNlPSJWcmluZGEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iR3VqciIgdHlwZWZhY2U9IlNocnV0aSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJLaG1yIiB0eXBlZmFjZT0iTW9vbEJvcmFuIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IktuZGEiIHR5cGVmYWNlPSJUdW5nYSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJHdXJ1IiB0eXBlZmFjZT0iUmFhdmkiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iQ2FucyIgdHlwZWZhY2U9IkV1cGhlbWlhIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkNoZXIiIHR5cGVmYWNlPSJQbGFudGFnZW5ldCBDaGVyb2tlZSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJZaWlpIiB0eXBlZmFjZT0iTWljcm9zb2Z0IFlpIEJhaXRpIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRpYnQiIHR5cGVmYWNlPSJNaWNyb3NvZnQgSGltYWxheWEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGhhYSIgdHlwZWZhY2U9Ik1WIEJvbGkiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iRGV2YSIgdHlwZWZhY2U9Ik1hbmdhbCIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJUZWx1IiB0eXBlZmFjZT0iR2F1dGFtaSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJUYW1sIiB0eXBlZmFjZT0iTGF0aGEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iU3lyYyIgdHlwZWZhY2U9IkVzdHJhbmdlbG8gRWRlc3NhIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ik9yeWEiIHR5cGVmYWNlPSJLYWxpbmdhIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ik1seW0iIHR5cGVmYWNlPSJLYXJ0aWthIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ikxhb28iIHR5cGVmYWNlPSJEb2tDaGFtcGEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iU2luaCIgdHlwZWZhY2U9Iklza29vbGEgUG90YSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJNb25nIiB0eXBlZmFjZT0iTW9uZ29saWFuIEJhaXRpIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlZpZXQiIHR5cGVmYWNlPSJUaW1lcyBOZXcgUm9tYW4iLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVWlnaCIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBVaWdodXIiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iR2VvciIgdHlwZWZhY2U9IlN5bGZhZW4iLz4nLHJbci5sZW5ndGhdPSI8L2E6bWFqb3JGb250PiIscltyLmxlbmd0aF09IjxhOm1pbm9yRm9udD4iLHJbci5sZW5ndGhdPSc8YTpsYXRpbiB0eXBlZmFjZT0iQ2FsaWJyaSIvPicscltyLmxlbmd0aF09JzxhOmVhIHR5cGVmYWNlPSIiLz4nLHJbci5sZW5ndGhdPSc8YTpjcyB0eXBlZmFjZT0iIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkpwYW4iIHR5cGVmYWNlPSLvvK3vvLMg77yw44K044K344OD44KvIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkhhbmciIHR5cGVmYWNlPSLrp5HsnYAg6rOg65SVIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkhhbnMiIHR5cGVmYWNlPSLlrovkvZMiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iSGFudCIgdHlwZWZhY2U9IuaWsOe0sOaYjumrlCIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJBcmFiIiB0eXBlZmFjZT0iQXJpYWwiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iSGViciIgdHlwZWZhY2U9IkFyaWFsIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRoYWkiIHR5cGVmYWNlPSJUYWhvbWEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iRXRoaSIgdHlwZWZhY2U9Ik55YWxhIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkJlbmciIHR5cGVmYWNlPSJWcmluZGEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iR3VqciIgdHlwZWZhY2U9IlNocnV0aSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJLaG1yIiB0eXBlZmFjZT0iRGF1blBlbmgiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iS25kYSIgdHlwZWZhY2U9IlR1bmdhIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ikd1cnUiIHR5cGVmYWNlPSJSYWF2aSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJDYW5zIiB0eXBlZmFjZT0iRXVwaGVtaWEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iQ2hlciIgdHlwZWZhY2U9IlBsYW50YWdlbmV0IENoZXJva2VlIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IllpaWkiIHR5cGVmYWNlPSJNaWNyb3NvZnQgWWkgQmFpdGkiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGlidCIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBIaW1hbGF5YSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJUaGFhIiB0eXBlZmFjZT0iTVYgQm9saSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJEZXZhIiB0eXBlZmFjZT0iTWFuZ2FsIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRlbHUiIHR5cGVmYWNlPSJHYXV0YW1pIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRhbWwiIHR5cGVmYWNlPSJMYXRoYSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJTeXJjIiB0eXBlZmFjZT0iRXN0cmFuZ2VsbyBFZGVzc2EiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iT3J5YSIgdHlwZWZhY2U9IkthbGluZ2EiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iTWx5bSIgdHlwZWZhY2U9IkthcnRpa2EiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iTGFvbyIgdHlwZWZhY2U9IkRva0NoYW1wYSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJTaW5oIiB0eXBlZmFjZT0iSXNrb29sYSBQb3RhIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ik1vbmciIHR5cGVmYWNlPSJNb25nb2xpYW4gQmFpdGkiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVmlldCIgdHlwZWZhY2U9IkFyaWFsIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlVpZ2giIHR5cGVmYWNlPSJNaWNyb3NvZnQgVWlnaHVyIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ikdlb3IiIHR5cGVmYWNlPSJTeWxmYWVuIi8+JyxyW3IubGVuZ3RoXT0iPC9hOm1pbm9yRm9udD4iLHJbci5sZW5ndGhdPSI8L2E6Zm9udFNjaGVtZT4iLHJbci5sZW5ndGhdPSc8YTpmbXRTY2hlbWUgbmFtZT0iT2ZmaWNlIj4nLHJbci5sZW5ndGhdPSI8YTpmaWxsU3R5bGVMc3Q+IixyW3IubGVuZ3RoXT0nPGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIi8+PC9hOnNvbGlkRmlsbD4nLHJbci5sZW5ndGhdPSc8YTpncmFkRmlsbCByb3RXaXRoU2hhcGU9IjEiPicscltyLmxlbmd0aF09IjxhOmdzTHN0PiIscltyLmxlbmd0aF09JzxhOmdzIHBvcz0iMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSI1MDAwMCIvPjxhOnNhdE1vZCB2YWw9IjMwMDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicscltyLmxlbmd0aF09JzxhOmdzIHBvcz0iMzUwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTp0aW50IHZhbD0iMzcwMDAiLz48YTpzYXRNb2QgdmFsPSIzMDAwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLHJbci5sZW5ndGhdPSc8YTpncyBwb3M9IjEwMDAwMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSIxNTAwMCIvPjxhOnNhdE1vZCB2YWw9IjM1MDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicscltyLmxlbmd0aF09IjwvYTpnc0xzdD4iLHJbci5sZW5ndGhdPSc8YTpsaW4gYW5nPSIxNjIwMDAwMCIgc2NhbGVkPSIxIi8+JyxyW3IubGVuZ3RoXT0iPC9hOmdyYWRGaWxsPiIscltyLmxlbmd0aF09JzxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT0iMSI+JyxyW3IubGVuZ3RoXT0iPGE6Z3NMc3Q+IixyW3IubGVuZ3RoXT0nPGE6Z3MgcG9zPSIwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6dGludCB2YWw9IjEwMDAwMCIvPjxhOnNoYWRlIHZhbD0iMTAwMDAwIi8+PGE6c2F0TW9kIHZhbD0iMTMwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+JyxyW3IubGVuZ3RoXT0nPGE6Z3MgcG9zPSIxMDAwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTp0aW50IHZhbD0iNTAwMDAiLz48YTpzaGFkZSB2YWw9IjEwMDAwMCIvPjxhOnNhdE1vZCB2YWw9IjM1MDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicscltyLmxlbmd0aF09IjwvYTpnc0xzdD4iLHJbci5sZW5ndGhdPSc8YTpsaW4gYW5nPSIxNjIwMDAwMCIgc2NhbGVkPSIwIi8+JyxyW3IubGVuZ3RoXT0iPC9hOmdyYWRGaWxsPiIscltyLmxlbmd0aF09IjwvYTpmaWxsU3R5bGVMc3Q+IixyW3IubGVuZ3RoXT0iPGE6bG5TdHlsZUxzdD4iLHJbci5sZW5ndGhdPSc8YTpsbiB3PSI5NTI1IiBjYXA9ImZsYXQiIGNtcGQ9InNuZyIgYWxnbj0iY3RyIj48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnNoYWRlIHZhbD0iOTUwMDAiLz48YTpzYXRNb2QgdmFsPSIxMDUwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpzb2xpZEZpbGw+PGE6cHJzdERhc2ggdmFsPSJzb2xpZCIvPjwvYTpsbj4nLHJbci5sZW5ndGhdPSc8YTpsbiB3PSIyNTQwMCIgY2FwPSJmbGF0IiBjbXBkPSJzbmciIGFsZ249ImN0ciI+PGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIi8+PC9hOnNvbGlkRmlsbD48YTpwcnN0RGFzaCB2YWw9InNvbGlkIi8+PC9hOmxuPicscltyLmxlbmd0aF09JzxhOmxuIHc9IjM4MTAwIiBjYXA9ImZsYXQiIGNtcGQ9InNuZyIgYWxnbj0iY3RyIj48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiLz48L2E6c29saWRGaWxsPjxhOnByc3REYXNoIHZhbD0ic29saWQiLz48L2E6bG4+JyxyW3IubGVuZ3RoXT0iPC9hOmxuU3R5bGVMc3Q+IixyW3IubGVuZ3RoXT0iPGE6ZWZmZWN0U3R5bGVMc3Q+IixyW3IubGVuZ3RoXT0iPGE6ZWZmZWN0U3R5bGU+IixyW3IubGVuZ3RoXT0iPGE6ZWZmZWN0THN0PiIscltyLmxlbmd0aF09JzxhOm91dGVyU2hkdyBibHVyUmFkPSI0MDAwMCIgZGlzdD0iMjAwMDAiIGRpcj0iNTQwMDAwMCIgcm90V2l0aFNoYXBlPSIwIj48YTpzcmdiQ2xyIHZhbD0iMDAwMDAwIj48YTphbHBoYSB2YWw9IjM4MDAwIi8+PC9hOnNyZ2JDbHI+PC9hOm91dGVyU2hkdz4nLHJbci5sZW5ndGhdPSI8L2E6ZWZmZWN0THN0PiIscltyLmxlbmd0aF09IjwvYTplZmZlY3RTdHlsZT4iLHJbci5sZW5ndGhdPSI8YTplZmZlY3RTdHlsZT4iLHJbci5sZW5ndGhdPSI8YTplZmZlY3RMc3Q+IixyW3IubGVuZ3RoXT0nPGE6b3V0ZXJTaGR3IGJsdXJSYWQ9IjQwMDAwIiBkaXN0PSIyMzAwMCIgZGlyPSI1NDAwMDAwIiByb3RXaXRoU2hhcGU9IjAiPjxhOnNyZ2JDbHIgdmFsPSIwMDAwMDAiPjxhOmFscGhhIHZhbD0iMzUwMDAiLz48L2E6c3JnYkNscj48L2E6b3V0ZXJTaGR3PicscltyLmxlbmd0aF09IjwvYTplZmZlY3RMc3Q+IixyW3IubGVuZ3RoXT0iPC9hOmVmZmVjdFN0eWxlPiIscltyLmxlbmd0aF09IjxhOmVmZmVjdFN0eWxlPiIscltyLmxlbmd0aF09IjxhOmVmZmVjdExzdD4iLHJbci5sZW5ndGhdPSc8YTpvdXRlclNoZHcgYmx1clJhZD0iNDAwMDAiIGRpc3Q9IjIzMDAwIiBkaXI9IjU0MDAwMDAiIHJvdFdpdGhTaGFwZT0iMCI+PGE6c3JnYkNsciB2YWw9IjAwMDAwMCI+PGE6YWxwaGEgdmFsPSIzNTAwMCIvPjwvYTpzcmdiQ2xyPjwvYTpvdXRlclNoZHc+JyxyW3IubGVuZ3RoXT0iPC9hOmVmZmVjdExzdD4iLHJbci5sZW5ndGhdPSc8YTpzY2VuZTNkPjxhOmNhbWVyYSBwcnN0PSJvcnRob2dyYXBoaWNGcm9udCI+PGE6cm90IGxhdD0iMCIgbG9uPSIwIiByZXY9IjAiLz48L2E6Y2FtZXJhPjxhOmxpZ2h0UmlnIHJpZz0idGhyZWVQdCIgZGlyPSJ0Ij48YTpyb3QgbGF0PSIwIiBsb249IjAiIHJldj0iMTIwMDAwMCIvPjwvYTpsaWdodFJpZz48L2E6c2NlbmUzZD4nLHJbci5sZW5ndGhdPSc8YTpzcDNkPjxhOmJldmVsVCB3PSI2MzUwMCIgaD0iMjU0MDAiLz48L2E6c3AzZD4nLHJbci5sZW5ndGhdPSI8L2E6ZWZmZWN0U3R5bGU+IixyW3IubGVuZ3RoXT0iPC9hOmVmZmVjdFN0eWxlTHN0PiIscltyLmxlbmd0aF09IjxhOmJnRmlsbFN0eWxlTHN0PiIscltyLmxlbmd0aF09JzxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPSJwaENsciIvPjwvYTpzb2xpZEZpbGw+JyxyW3IubGVuZ3RoXT0nPGE6Z3JhZEZpbGwgcm90V2l0aFNoYXBlPSIxIj4nLHJbci5sZW5ndGhdPSI8YTpnc0xzdD4iLHJbci5sZW5ndGhdPSc8YTpncyBwb3M9IjAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTp0aW50IHZhbD0iNDAwMDAiLz48YTpzYXRNb2QgdmFsPSIzNTAwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLHJbci5sZW5ndGhdPSc8YTpncyBwb3M9IjQwMDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6dGludCB2YWw9IjQ1MDAwIi8+PGE6c2hhZGUgdmFsPSI5OTAwMCIvPjxhOnNhdE1vZCB2YWw9IjM1MDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicscltyLmxlbmd0aF09JzxhOmdzIHBvcz0iMTAwMDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6c2hhZGUgdmFsPSIyMDAwMCIvPjxhOnNhdE1vZCB2YWw9IjI1NTAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicscltyLmxlbmd0aF09IjwvYTpnc0xzdD4iLHJbci5sZW5ndGhdPSc8YTpwYXRoIHBhdGg9ImNpcmNsZSI+PGE6ZmlsbFRvUmVjdCBsPSI1MDAwMCIgdD0iLTgwMDAwIiByPSI1MDAwMCIgYj0iMTgwMDAwIi8+PC9hOnBhdGg+JyxyW3IubGVuZ3RoXT0iPC9hOmdyYWRGaWxsPiIscltyLmxlbmd0aF09JzxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT0iMSI+JyxyW3IubGVuZ3RoXT0iPGE6Z3NMc3Q+IixyW3IubGVuZ3RoXT0nPGE6Z3MgcG9zPSIwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6dGludCB2YWw9IjgwMDAwIi8+PGE6c2F0TW9kIHZhbD0iMzAwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+JyxyW3IubGVuZ3RoXT0nPGE6Z3MgcG9zPSIxMDAwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTpzaGFkZSB2YWw9IjMwMDAwIi8+PGE6c2F0TW9kIHZhbD0iMjAwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+JyxyW3IubGVuZ3RoXT0iPC9hOmdzTHN0PiIscltyLmxlbmd0aF09JzxhOnBhdGggcGF0aD0iY2lyY2xlIj48YTpmaWxsVG9SZWN0IGw9IjUwMDAwIiB0PSI1MDAwMCIgcj0iNTAwMDAiIGI9IjUwMDAwIi8+PC9hOnBhdGg+JyxyW3IubGVuZ3RoXT0iPC9hOmdyYWRGaWxsPiIscltyLmxlbmd0aF09IjwvYTpiZ0ZpbGxTdHlsZUxzdD4iLHJbci5sZW5ndGhdPSI8L2E6Zm10U2NoZW1lPiIscltyLmxlbmd0aF09IjwvYTp0aGVtZUVsZW1lbnRzPiIscltyLmxlbmd0aF09IjxhOm9iamVjdERlZmF1bHRzPiIscltyLmxlbmd0aF09IjxhOnNwRGVmPiIscltyLmxlbmd0aF09JzxhOnNwUHIvPjxhOmJvZHlQci8+PGE6bHN0U3R5bGUvPjxhOnN0eWxlPjxhOmxuUmVmIGlkeD0iMSI+PGE6c2NoZW1lQ2xyIHZhbD0iYWNjZW50MSIvPjwvYTpsblJlZj48YTpmaWxsUmVmIGlkeD0iMyI+PGE6c2NoZW1lQ2xyIHZhbD0iYWNjZW50MSIvPjwvYTpmaWxsUmVmPjxhOmVmZmVjdFJlZiBpZHg9IjIiPjxhOnNjaGVtZUNsciB2YWw9ImFjY2VudDEiLz48L2E6ZWZmZWN0UmVmPjxhOmZvbnRSZWYgaWR4PSJtaW5vciI+PGE6c2NoZW1lQ2xyIHZhbD0ibHQxIi8+PC9hOmZvbnRSZWY+PC9hOnN0eWxlPicscltyLmxlbmd0aF09IjwvYTpzcERlZj4iLHJbci5sZW5ndGhdPSI8YTpsbkRlZj4iLHJbci5sZW5ndGhdPSc8YTpzcFByLz48YTpib2R5UHIvPjxhOmxzdFN0eWxlLz48YTpzdHlsZT48YTpsblJlZiBpZHg9IjIiPjxhOnNjaGVtZUNsciB2YWw9ImFjY2VudDEiLz48L2E6bG5SZWY+PGE6ZmlsbFJlZiBpZHg9IjAiPjxhOnNjaGVtZUNsciB2YWw9ImFjY2VudDEiLz48L2E6ZmlsbFJlZj48YTplZmZlY3RSZWYgaWR4PSIxIj48YTpzY2hlbWVDbHIgdmFsPSJhY2NlbnQxIi8+PC9hOmVmZmVjdFJlZj48YTpmb250UmVmIGlkeD0ibWlub3IiPjxhOnNjaGVtZUNsciB2YWw9InR4MSIvPjwvYTpmb250UmVmPjwvYTpzdHlsZT4nLHJbci5sZW5ndGhdPSI8L2E6bG5EZWY+IixyW3IubGVuZ3RoXT0iPC9hOm9iamVjdERlZmF1bHRzPiIscltyLmxlbmd0aF09IjxhOmV4dHJhQ2xyU2NoZW1lTHN0Lz4iLHJbci5sZW5ndGhdPSI8L2E6dGhlbWU+IixyLmpvaW4oIiIpfWZ1bmN0aW9uIFpoKGUsYSxyKXt2YXIgdD1lLmwrYSxuPWUucmVhZF9zaGlmdCg0KTtpZihuIT09MTI0MjI2KXtpZighci5jZWxsU3R5bGVzKXtlLmw9dDtyZXR1cm59dmFyIGk9ZS5zbGljZShlLmwpO2UubD10O3ZhciBmO3RyeXtmPW1pKGkse3R5cGU6ImFycmF5In0pfWNhdGNoe3JldHVybn12YXIgcz1scihmLCJ0aGVtZS90aGVtZS90aGVtZTEueG1sIiwhMCk7aWYocylyZXR1cm4gR3MocyxyKX19ZnVuY3Rpb24gcWgoZSl7cmV0dXJuIGUucmVhZF9zaGlmdCg0KX1mdW5jdGlvbiBRaChlKXt2YXIgYT17fTtzd2l0Y2goYS54Y2xyVHlwZT1lLnJlYWRfc2hpZnQoMiksYS5uVGludFNoYWRlPWUucmVhZF9zaGlmdCgyLCJpIiksYS54Y2xyVHlwZSl7Y2FzZSAwOmUubCs9NDticmVhaztjYXNlIDE6YS54Y2xyVmFsdWU9ZTEoZSw0KTticmVhaztjYXNlIDI6YS54Y2xyVmFsdWU9dnMoZSk7YnJlYWs7Y2FzZSAzOmEueGNsclZhbHVlPXFoKGUpO2JyZWFrO2Nhc2UgNDplLmwrPTQ7YnJlYWt9cmV0dXJuIGUubCs9OCxhfWZ1bmN0aW9uIGUxKGUsYSl7dmFyIHI9ZS5sK2EsdD1lLnJlYWRfc2hpZnQoMikmMTI3O3JldHVybiBlLmw9cix0fWZ1bmN0aW9uIHIxKGUsYSl7cmV0dXJuIHlyKGUsYSl9ZnVuY3Rpb24gYTEoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDIpLTQsdD1bYV07c3dpdGNoKGEpe2Nhc2UgNDpjYXNlIDU6Y2FzZSA3OmNhc2UgODpjYXNlIDk6Y2FzZSAxMDpjYXNlIDExOmNhc2UgMTM6dFsxXT1RaChlKTticmVhaztjYXNlIDY6dFsxXT1yMShlLHIpO2JyZWFrO2Nhc2UgMTQ6Y2FzZSAxNTp0WzFdPWUucmVhZF9zaGlmdChyPT09MT8xOjIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgRXh0UHJvcCB0eXBlOiAiK2ErIiAiK3IpfXJldHVybiB0fWZ1bmN0aW9uIHQxKGUsYSl7dmFyIHI9ZS5sK2E7ZS5sKz0yO3ZhciB0PWUucmVhZF9zaGlmdCgyKTtlLmwrPTI7Zm9yKHZhciBuPWUucmVhZF9zaGlmdCgyKSxpPVtdO24tLSA+MDspaS5wdXNoKGExKGUsci1lLmwpKTtyZXR1cm57aXhmZTp0LGV4dDppfX1mdW5jdGlvbiBuMShlLGEpe2UmJihlLmRhdGF8fChlLmRhdGE9e30pLGEuZm9yRWFjaChmdW5jdGlvbihyKXtzd2l0Y2goclswXSl7Y2FzZSA0OmUuZGF0YS54ZmV4dEZvcmU9clsxXTticmVhaztjYXNlIDU6ZS5kYXRhLnhmZXh0QmFjaz1yWzFdO2JyZWFrO2Nhc2UgNjplLmRhdGEuZ3JhZGllbnRGaWxsPXJbMV07YnJlYWs7Y2FzZSA3OmUuZGF0YS54ZmV4dFRvcD1yWzFdO2JyZWFrO2Nhc2UgODplLmRhdGEueGZleHRCb3R0b209clsxXTticmVhaztjYXNlIDk6ZS5kYXRhLnhmZXh0TGVmdD1yWzFdO2JyZWFrO2Nhc2UgMTA6ZS5kYXRhLnhmZXh0UmlnaHQ9clsxXTticmVhaztjYXNlIDExOmUuZGF0YS54ZmV4dERpYWc9clsxXTticmVhaztjYXNlIDEzOmUueGZleHRGb250PXJbMV07YnJlYWs7Y2FzZSAxNDplLmZvbnRTY2hlbWU9clsxXTticmVhaztjYXNlIDE1OmUuZGF0YS5jSW5kZW50PXJbMV07YnJlYWt9fSkpfWZ1bmN0aW9uIGkxKGUsYSl7cmV0dXJue2ZsYWdzOmUucmVhZF9zaGlmdCg0KSx2ZXJzaW9uOmUucmVhZF9zaGlmdCg0KSxuYW1lOm1yKGUpfX1mdW5jdGlvbiBzMShlKXtmb3IodmFyIGE9W10scj1lLnJlYWRfc2hpZnQoNCk7ci0tID4wOylhLnB1c2goW2UucmVhZF9zaGlmdCg0KSxlLnJlYWRfc2hpZnQoNCldKTtyZXR1cm4gYX1mdW5jdGlvbiBmMShlKXtyZXR1cm4gZS5sKz00LGUucmVhZF9zaGlmdCg0KSE9MH1mdW5jdGlvbiBjMShlLGEscil7dmFyIHQ9e1R5cGVzOltdLENlbGw6W10sVmFsdWU6W119LG49cnx8e30saT1bXSxmPSExLHM9MjtyZXR1cm4gdmEoZSxmdW5jdGlvbihjLG8sbCl7c3dpdGNoKGwpe2Nhc2UgNTg6YnJlYWs7Y2FzZSA1OTpicmVhaztjYXNlIDMzNTp0LlR5cGVzLnB1c2goe25hbWU6Yy5uYW1lfSk7YnJlYWs7Y2FzZSA1MTpjLmZvckVhY2goZnVuY3Rpb24odSl7cz09MT90LkNlbGwucHVzaCh7dHlwZTp0LlR5cGVzW3VbMF0tMV0ubmFtZSxpbmRleDp1WzFdfSk6cz09MCYmdC5WYWx1ZS5wdXNoKHt0eXBlOnQuVHlwZXNbdVswXS0xXS5uYW1lLGluZGV4OnVbMV19KX0pO2JyZWFrO2Nhc2UgMzM3OnM9Yz8xOjA7YnJlYWs7Y2FzZSAzMzg6cz0yO2JyZWFrO2Nhc2UgMzU6aS5wdXNoKGwpLGY9ITA7YnJlYWs7Y2FzZSAzNjppLnBvcCgpLGY9ITE7YnJlYWs7ZGVmYXVsdDppZighby5UKXtpZighZnx8bi5XVEYmJmlbaS5sZW5ndGgtMV0hPTM1KXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCByZWNvcmQgMHgiK2wudG9TdHJpbmcoMTYpKX19fSksdH1mdW5jdGlvbiBvMShlLGEscil7dmFyIHQ9e1R5cGVzOltdLENlbGw6W10sVmFsdWU6W119O2lmKCFlKXJldHVybiB0O3ZhciBuPSExLGk9MixmO3JldHVybiBlLnJlcGxhY2UobnIsZnVuY3Rpb24ocyl7dmFyIGM9b2Uocyk7c3dpdGNoKEFyKGNbMF0pKXtjYXNlIjw/eG1sIjpicmVhaztjYXNlIjxtZXRhZGF0YSI6Y2FzZSI8L21ldGFkYXRhPiI6YnJlYWs7Y2FzZSI8bWV0YWRhdGFUeXBlcyI6Y2FzZSI8L21ldGFkYXRhVHlwZXM+IjpicmVhaztjYXNlIjxtZXRhZGF0YVR5cGUiOnQuVHlwZXMucHVzaCh7bmFtZTpjLm5hbWV9KTticmVhaztjYXNlIjwvbWV0YWRhdGFUeXBlPiI6YnJlYWs7Y2FzZSI8ZnV0dXJlTWV0YWRhdGEiOmZvcih2YXIgbz0wO288dC5UeXBlcy5sZW5ndGg7KytvKXQuVHlwZXNbb10ubmFtZT09Yy5uYW1lJiYoZj10LlR5cGVzW29dKTticmVhaztjYXNlIjwvZnV0dXJlTWV0YWRhdGE+IjpicmVhaztjYXNlIjxiaz4iOmJyZWFrO2Nhc2UiPC9iaz4iOmJyZWFrO2Nhc2UiPHJjIjppPT0xP3QuQ2VsbC5wdXNoKHt0eXBlOnQuVHlwZXNbYy50LTFdLm5hbWUsaW5kZXg6K2Mudn0pOmk9PTAmJnQuVmFsdWUucHVzaCh7dHlwZTp0LlR5cGVzW2MudC0xXS5uYW1lLGluZGV4OitjLnZ9KTticmVhaztjYXNlIjwvcmM+IjpicmVhaztjYXNlIjxjZWxsTWV0YWRhdGEiOmk9MTticmVhaztjYXNlIjwvY2VsbE1ldGFkYXRhPiI6aT0yO2JyZWFrO2Nhc2UiPHZhbHVlTWV0YWRhdGEiOmk9MDticmVhaztjYXNlIjwvdmFsdWVNZXRhZGF0YT4iOmk9MjticmVhaztjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpjYXNlIjxleHRMc3QvPiI6YnJlYWs7Y2FzZSI8ZXh0IjpuPSEwO2JyZWFrO2Nhc2UiPC9leHQ+IjpuPSExO2JyZWFrO2Nhc2UiPHJ2YiI6aWYoIWYpYnJlYWs7Zi5vZmZzZXRzfHwoZi5vZmZzZXRzPVtdKSxmLm9mZnNldHMucHVzaCgrYy5pKTticmVhaztkZWZhdWx0OmlmKCFuJiZyPy5XVEYpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitjWzBdKyIgaW4gbWV0YWRhdGEiKX1yZXR1cm4gc30pLHR9ZnVuY3Rpb24gbDEoZSl7dmFyIGE9W107aWYoIWUpcmV0dXJuIGE7dmFyIHI9MTtyZXR1cm4oZS5tYXRjaChucil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBuPW9lKHQpO3N3aXRjaChuWzBdKXtjYXNlIjw/eG1sIjpicmVhaztjYXNlIjxjYWxjQ2hhaW4iOmNhc2UiPGNhbGNDaGFpbj4iOmNhc2UiPC9jYWxjQ2hhaW4+IjpicmVhaztjYXNlIjxjIjpkZWxldGUgblswXSxuLmk/cj1uLmk6bi5pPXIsYS5wdXNoKG4pO2JyZWFrfX0pLGF9ZnVuY3Rpb24gdTEoZSl7dmFyIGE9e307YS5pPWUucmVhZF9zaGlmdCg0KTt2YXIgcj17fTtyLnI9ZS5yZWFkX3NoaWZ0KDQpLHIuYz1lLnJlYWRfc2hpZnQoNCksYS5yPURlKHIpO3ZhciB0PWUucmVhZF9zaGlmdCgxKTtyZXR1cm4gdCYyJiYoYS5sPSIxIiksdCY4JiYoYS5hPSIxIiksYX1mdW5jdGlvbiBoMShlLGEscil7dmFyIHQ9W107cmV0dXJuIHZhKGUsZnVuY3Rpb24oaSxmLHMpe3N3aXRjaChzKXtjYXNlIDYzOnQucHVzaChpKTticmVhaztkZWZhdWx0OmlmKCFmLlQpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAweCIrcy50b1N0cmluZygxNikpfX0pLHR9ZnVuY3Rpb24gZGcoKXt9ZnVuY3Rpb24geDEoZSxhLHIsdCl7aWYoIWUpcmV0dXJuIGU7dmFyIG49dHx8e30saT0hMTt2YShlLGZ1bmN0aW9uKHMsYyxvKXtzd2l0Y2gobyl7Y2FzZSAzNTk6Y2FzZSAzNjM6Y2FzZSAzNjQ6Y2FzZSAzNjY6Y2FzZSAzNjc6Y2FzZSAzNjg6Y2FzZSAzNjk6Y2FzZSAzNzA6Y2FzZSAzNzE6Y2FzZSA0NzI6Y2FzZSA1Nzc6Y2FzZSA1Nzg6Y2FzZSA1Nzk6Y2FzZSA1ODA6Y2FzZSA1ODE6Y2FzZSA1ODI6Y2FzZSA1ODM6Y2FzZSA1ODQ6Y2FzZSA1ODU6Y2FzZSA1ODY6Y2FzZSA1ODc6Y2FzZSA1MTA4OmJyZWFrO2Nhc2UgMzU6aT0hMDticmVhaztjYXNlIDM2Omk9ITE7YnJlYWs7ZGVmYXVsdDppZighYy5UKXtpZighaXx8bi5XVEYpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAweCIrby50b1N0cmluZygxNikpfX19LG4pfWZ1bmN0aW9uIFhzKGUsYSl7aWYoIWUpcmV0dXJue2NoYXJ0czpbXSxpbWFnZXM6W10sc2hhcGVzOltdLHJhdzoiIn07dmFyIHI9e2NoYXJ0czpbXSxpbWFnZXM6W10sc2hhcGVzOltdLHJhdzplfTthfHwoYT17IiFpZCI6e319KTt2YXIgdD0vPCg/Olx3KzopPyh0d29DZWxsQW5jaG9yfG9uZUNlbGxBbmNob3J8YWJzb2x1dGVBbmNob3IpXGJbXj5dKj5bXHNcU10qPzxcLyg/Olx3KzopP1wxPi9nLG49ZS5tYXRjaCh0KXx8W2VdO3JldHVybiBuLmZvckVhY2goZnVuY3Rpb24oaSl7dmFyIGY9ZDEoaSk7KGkubWF0Y2goLzxjOmNoYXJ0XGJbXjw+XSpyOmlkPSIoW148PiJdKikiL2cpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihjKXt2YXIgbz1jLm1hdGNoKC9yOmlkPSIoW148PiJdKikiLyk7aWYobyl7dmFyIGw9YVsiIWlkIl1bb1sxXV18fHt9O3IuY2hhcnRzLnB1c2goe2lkOm9bMV0scmVsOmwsdGFyZ2V0OmwuVGFyZ2V0LGFuY2hvcjpmfSl9fSksKGkubWF0Y2goLzxhOmJsaXBcYltePD5dKig/OnI6ZW1iZWR8cjpsaW5rKT0iKFtePD4iXSopIi9nKXx8W10pLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIG89Yy5tYXRjaCgvKD86cjplbWJlZHxyOmxpbmspPSIoW148PiJdKikiLyk7aWYobyl7dmFyIGw9YVsiIWlkIl1bb1sxXV18fHt9O3IuaW1hZ2VzLnB1c2goe2lkOm9bMV0scmVsOmwsdGFyZ2V0OmwuVGFyZ2V0LGFuY2hvcjpmfSl9fSk7dmFyIHM9djEoaSk7cyYmci5zaGFwZXMucHVzaCh7dGV4dDpzLGFuY2hvcjpmLHJhdzppfSl9KSxyLmNoYXJ0PXIuY2hhcnRzWzBdJiZyLmNoYXJ0c1swXS50YXJnZXQscn1mdW5jdGlvbiB6cyhlLGEpe3ZhciByPUxlKGUsYSksdD1yJiZyWzFdfHwiIjtmdW5jdGlvbiBuKGkpe3ZhciBmPUxlKHQsaSk7cmV0dXJuIGYmJmZbMV0hPW51bGw/cGFyc2VJbnQoZlsxXSwxMCk6MH1yZXR1cm57Y29sOm4oImNvbCIpLGNvbE9mZjpuKCJjb2xPZmYiKSxyb3c6bigicm93Iikscm93T2ZmOm4oInJvd09mZiIpfX1mdW5jdGlvbiBkMShlKXt2YXIgYT0oZS5tYXRjaCgvXjwoPzpcdys6KT8oXHcrKS8pfHxbXSlbMV18fCJhbmNob3IiLHI9e3R5cGU6YX07KGUuaW5kZXhPZigiPHhkcjpmcm9tIik+PTB8fGUuaW5kZXhPZigiPGZyb20iKT49MCkmJihyLmZyb209enMoZSwiZnJvbSIpKSwoZS5pbmRleE9mKCI8eGRyOnRvIik+PTB8fGUuaW5kZXhPZigiPHRvIik+PTApJiYoci50bz16cyhlLCJ0byIpKTt2YXIgdD1lLm1hdGNoKC88KD86XHcrOik/cG9zXGJbXjw+XSpcLz4vKTtpZih0KXt2YXIgbj1vZSh0WzBdKTtyLnBvcz17eDpuLng/cGFyc2VJbnQobi54LDEwKTowLHk6bi55P3BhcnNlSW50KG4ueSwxMCk6MH19dmFyIGk9ZS5tYXRjaCgvPCg/Olx3KzopP2V4dFxiW148Pl0qXC8+Lyk7aWYoaSl7dmFyIGY9b2UoaVswXSk7ci5leHQ9e2N4OmYuY3g/cGFyc2VJbnQoZi5jeCwxMCk6MCxjeTpmLmN5P3BhcnNlSW50KGYuY3ksMTApOjB9fXJldHVybiByfWZ1bmN0aW9uIHYxKGUpe3ZhciBhPVtdO3JldHVybihlLm1hdGNoKC88YTp0XGJbXj5dKj5bXHNcU10qPzxcL2E6dD4vZyl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe2EucHVzaChDZShyLnJlcGxhY2UoLzxbXj5dKj4vZywiIikpKX0pLGEuam9pbigiIil9ZnVuY3Rpb24gcDEoZSxhLHIpe3ZhciB0PWUuc2xpY2UoZS5sLGUubCthKTtyZXR1cm4gZS5sKz1hLCFyfHwhci5kcmF3aW5ncyYmIXIuY2hhcnRzP3tyYXc6dCxibGlwczpbXSxzaGFwZXM6W10saW1hZ2VzOltdLGNoYXJ0czpbXSxncm91cHM6ITB9OiRzKHQsITApfWZ1bmN0aW9uIGcxKGUsYSxyKXt2YXIgdD1lLnNsaWNlKGUubCxlLmwrYSk7cmV0dXJuIGUubCs9YSwhcnx8IXIuZHJhd2luZ3MmJiFyLmNoYXJ0cz97cmF3OnQsYmxpcHM6W10sc2hhcGVzOltdLGltYWdlczpbXSxjaGFydHM6W10sZ3JvdXBzOiExfTokcyh0LCExKX1mdW5jdGlvbiBNcihlLGEpe3JldHVybiBlW2FdfGVbYSsxXTw8OH1mdW5jdGlvbiBodChlLGEpe3JldHVybihlW2FdfGVbYSsxXTw8OHxlW2ErMl08PDE2fGVbYSszXTw8MjQpPj4+MH1mdW5jdGlvbiAkcyhlLGEpe3ZhciByPXtyYXc6ZSxibGlwczpbXSxzaGFwZXM6W10saW1hZ2VzOltdLGNoYXJ0czpbXSxncm91cHM6ISFhfSx0PXtvdXQ6cixjdXJyZW50Om51bGx9O3RyeXttbihlLDAsZS5sZW5ndGgsdCl9Y2F0Y2gobil7ci5lcnJvcj1uLm1lc3NhZ2V8fFN0cmluZyhuKX1yZXR1cm4gcn1mdW5jdGlvbiBtbihlLGEscix0KXtmb3IodmFyIG49YTtuKzg8PXImJm4rODw9ZS5sZW5ndGg7KXt2YXIgaT1NcihlLG4pLGY9TXIoZSxuKzIpLHM9aHQoZSxuKzQpLGM9aSYxNSxvPWk+PjQsbD1uKzgsdT1sK3M7aWYodT5lLmxlbmd0aCYmKHU9ZS5sZW5ndGgpLGY9PTYxNDQ0KXt2YXIgeD17cmF3OmUuc2xpY2Uobix1KSxwcm9wczp7fX07dC5vdXQuc2hhcGVzLnB1c2goeCk7dmFyIGg9dC5jdXJyZW50O3QuY3VycmVudD14LG1uKGUsbCx1LHQpLHQuY3VycmVudD1ofWVsc2UgZj09NjE0NDc/dC5vdXQuYmxpcHMucHVzaChrMShlLGwsdSxvKSk6Zj09NjE0NTAmJnQuY3VycmVudD8odC5jdXJyZW50LnNwaWQ9aHQoZSxsKSx0LmN1cnJlbnQuZmxhZ3M9aHQoZSxsKzQpKTpmPT02MTQ1MSYmdC5jdXJyZW50Pyh0LmN1cnJlbnQucHJvcHM9bTEoZSxsLHUsbyksdC5jdXJyZW50LnByb3BzLnBpYiE9bnVsbCYmKHQuY3VycmVudC5ibGlwSWQ9dC5jdXJyZW50LnByb3BzLnBpYikpOmY9PTYxNDU2JiZ0LmN1cnJlbnQ/dC5jdXJyZW50LmFuY2hvcj1fMShlLGwsdSk6Zj09NjE0NTcmJnQuY3VycmVudD90LmN1cnJlbnQuY2xpZW50RGF0YT1lLnNsaWNlKGwsdSk6Yz09MTUmJm1uKGUsbCx1LHQpO249dX19ZnVuY3Rpb24gbTEoZSxhLHIsdCl7Zm9yKHZhciBuPXt9LGk9W10sZj1hLHM9MDtzPHQmJmYrNjw9cjsrK3MsZis9Nil7dmFyIGM9TXIoZSxmKSxvPWh0KGUsZisyKSxsPWMmMTYzODM7bltsXT1vLGMmMTYzODQmJmkucHVzaChbbCxvXSksbD09MjYwJiYobi5waWI9byksbD09MjYxJiYobi5waWJOYW1lPW8pLGw9PTg5NiYmKG4uZmlsbENvbG9yPW8pLGw9PTg5NyYmKG4uZmlsbE9wYWNpdHk9byksbD09OTU5JiYobi5saW5lQ29sb3I9byl9cmV0dXJuIGkuZm9yRWFjaChmdW5jdGlvbih1KXtmK3VbMV08PXImJihuWyJjb21wbGV4XyIrdVswXV09ZS5zbGljZShmLGYrdVsxXSkpLGYrPXVbMV19KSxufWZ1bmN0aW9uIF8xKGUsYSxyKXtpZihyLWE8MTgpcmV0dXJue307dmFyIHQ9YSxuPU1yKGUsdCk7dCs9Mjt2YXIgaT1NcihlLHQpLGY9TXIoZSx0KzIpLHM9TXIoZSx0KzQpLGM9TXIoZSx0KzYpO3QrPTg7dmFyIG89TXIoZSx0KSxsPU1yKGUsdCsyKSx1PU1yKGUsdCs0KSx4PU1yKGUsdCs2KTtyZXR1cm57dHlwZToidHdvQ2VsbEFuY2hvciIsZmxhZ3M6bixmcm9tOntjb2w6aSxjb2xPZmY6Zio5NTI1LzEwMjQscm93OnMscm93T2ZmOmMqOTUyNS8yNTZ9LHRvOntjb2w6byxjb2xPZmY6bCo5NTI1LzEwMjQscm93OnUscm93T2ZmOngqOTUyNS8yNTZ9fX1mdW5jdGlvbiBLcyhlLGEscil7Zm9yKHZhciB0PWE7dCs4PD1yOysrdCl7aWYoZVt0XT09MTM3JiZlW3QrMV09PTgwJiZlW3QrMl09PTc4JiZlW3QrM109PTcxKXJldHVyblt0LCJpbWFnZS9wbmciXTtpZihlW3RdPT0yNTUmJmVbdCsxXT09MjE2JiZlW3QrMl09PTI1NSlyZXR1cm5bdCwiaW1hZ2UvanBlZyJdO2lmKGVbdF09PTY2JiZlW3QrMV09PTc3KXJldHVyblt0LCJpbWFnZS9ibXAiXX1yZXR1cm5bYSwiIl19ZnVuY3Rpb24gazEoZSxhLHIsdCl7dmFyIG49e2luZGV4OnQscmF3OmUuc2xpY2UoYSxyKX07aWYoci1hPDM2KXJldHVybiBuO24uYnRXaW4zMj1lW2FdLG4uYnRNYWNPUz1lW2ErMV0sbi5zaXplPWh0KGUsYSsyMCksbi5jUmVmPWh0KGUsYSsyNCk7dmFyIGk9YSszNjtpZihpKzg8PXIpe24uYmxpcFR5cGU9TXIoZSxpKzIpO3ZhciBmPWkrOCxzPXIsYz1LcyhlLGYscyk7Y1sxXSYmKG4uY29udGVudFR5cGU9Y1sxXSxuLmRhdGE9ZS5zbGljZShjWzBdLHMpLG4uZGF0YVVSST0iZGF0YToiK24uY29udGVudFR5cGUrIjtiYXNlNjQsIit6MChuLmRhdGEpKX1yZXR1cm4gbn1mdW5jdGlvbiB3MShlLGEscil7dmFyIHQ9MDsoZGkoZSwiKD86c2hhcGV8cmVjdCkiKXx8W10pLmZvckVhY2goZnVuY3Rpb24obil7dmFyIGk9IiIsZj0hMCxzPS0xLGM9LTEsbz0tMTtzd2l0Y2gobi5yZXBsYWNlKG5yLGZ1bmN0aW9uKHUseCl7dmFyIGg9b2UodSk7c3dpdGNoKEFyKGhbMF0pKXtjYXNlIjxDbGllbnREYXRhIjpoLk9iamVjdFR5cGUmJihpPWguT2JqZWN0VHlwZSk7YnJlYWs7Y2FzZSI8VmlzaWJsZSI6Y2FzZSI8VmlzaWJsZS8+IjpmPSExO2JyZWFrO2Nhc2UiPFJvdyI6Y2FzZSI8Um93PiI6cz14K3UubGVuZ3RoO2JyZWFrO2Nhc2UiPC9Sb3c+IjpjPStuLnNsaWNlKHMseCkudHJpbSgpO2JyZWFrO2Nhc2UiPENvbHVtbiI6Y2FzZSI8Q29sdW1uPiI6cz14K3UubGVuZ3RoO2JyZWFrO2Nhc2UiPC9Db2x1bW4+IjpvPStuLnNsaWNlKHMseCkudHJpbSgpO2JyZWFrfXJldHVybiIifSksaSl7Y2FzZSJOb3RlIjp2YXIgbD1KdChhLGM+PTAmJm8+PTA/RGUoe3I6YyxjOm99KTpyW3RdLnJlZik7bC5jJiYobC5jLmhpZGRlbj1mKSwrK3Q7YnJlYWt9fSl9ZnVuY3Rpb24ganMoZSxhLHIsdCl7dmFyIG49ZVsiIWRhdGEiXSE9bnVsbCxpO2EuZm9yRWFjaChmdW5jdGlvbihmKXt2YXIgcz1ncihmLnJlZik7aWYoIShzLnI8MHx8cy5jPDApKXtpZihuPyhlWyIhZGF0YSJdW3Mucl18fChlWyIhZGF0YSJdW3Mucl09W10pLGk9ZVsiIWRhdGEiXVtzLnJdW3MuY10pOmk9ZVtmLnJlZl0sIWkpe2k9e3Q6InoifSxuP2VbIiFkYXRhIl1bcy5yXVtzLmNdPWk6ZVtmLnJlZl09aTt2YXIgYz1aZShlWyIhcmVmIl18fCJCRFdHTzEwMDAwMDE6QTEiKTtjLnMucj5zLnImJihjLnMucj1zLnIpLGMuZS5yPHMuciYmKGMuZS5yPXMuciksYy5zLmM+cy5jJiYoYy5zLmM9cy5jKSxjLmUuYzxzLmMmJihjLmUuYz1zLmMpO3ZhciBvPUllKGMpO2VbIiFyZWYiXT1vfWkuY3x8KGkuYz1bXSk7dmFyIGw9e2E6Zi5hdXRob3IsdDpmLnQscjpmLnIsVDpyfTtmLmgmJihsLmg9Zi5oKTtmb3IodmFyIHU9aS5jLmxlbmd0aC0xO3U+PTA7LS11KXtpZighciYmaS5jW3VdLlQpcmV0dXJuO3ImJiFpLmNbdV0uVCYmaS5jLnNwbGljZSh1LDEpfWlmKHImJnQpe2Zvcih1PTA7dTx0Lmxlbmd0aDsrK3UpaWYobC5hPT10W3VdLmlkKXtsLmE9dFt1XS5uYW1lfHxsLmE7YnJlYWt9fWkuYy5wdXNoKGwpfX0pfWZ1bmN0aW9uIEYxKGUsYSl7aWYoZS5tYXRjaCgvPCg/Olx3KzopP2NvbW1lbnRzICpcLz4vKSlyZXR1cm5bXTt2YXIgcj1bXSx0PVtdLG49TGUoZSwiYXV0aG9ycyIpO24mJm5bMV0mJm5bMV0uc3BsaXQoLzxcL1x3Kjo/YXV0aG9yPi8pLmZvckVhY2goZnVuY3Rpb24oZil7aWYoIShmPT09IiJ8fGYudHJpbSgpPT09IiIpKXt2YXIgcz1mLm1hdGNoKC88KD86XHcrOik/YXV0aG9yW148Pl0qPiguKikvKTtzJiZyLnB1c2goc1sxXSl9fSk7dmFyIGk9TGUoZSwiY29tbWVudExpc3QiKTtyZXR1cm4gaSYmaVsxXSYmaVsxXS5zcGxpdCgvPFwvXHcqOj9jb21tZW50Pi8pLmZvckVhY2goZnVuY3Rpb24oZil7aWYoIShmPT09IiJ8fGYudHJpbSgpPT09IiIpKXt2YXIgcz1mLm1hdGNoKC88KD86XHcrOik/Y29tbWVudFtePD5dKj4vKTtpZihzKXt2YXIgYz1vZShzWzBdKSxvPXthdXRob3I6Yy5hdXRob3JJZCYmcltjLmF1dGhvcklkXXx8InNoZWV0anNnaG9zdCIscmVmOmMucmVmLGd1aWQ6Yy5ndWlkfSxsPWdyKGMucmVmKTtpZighKGEuc2hlZXRSb3dzJiZhLnNoZWV0Um93czw9bC5yKSl7dmFyIHU9TGUoZiwidGV4dCIpLHg9ISF1JiYhIXVbMV0mJmhuKHVbMV0pfHx7cjoiIix0OiIiLGg6IiJ9O28ucj14LnIseC5yPT0iPHQ+PC90PiImJih4LnQ9eC5oPSIiKSxvLnQ9KHgudHx8IiIpLnJlcGxhY2UoL1xyXG4vZyxgCmApLnJlcGxhY2UoL1xyL2csYApgKSxhLmNlbGxIVE1MJiYoby5oPXguaCksdC5wdXNoKG8pfX19fSksdH1mdW5jdGlvbiBUMShlLGEpe3ZhciByPVtdLHQ9ITEsbj17fSxpPTA7cmV0dXJuIGUucmVwbGFjZShucixmdW5jdGlvbihzLGMpe3ZhciBvPW9lKHMpO3N3aXRjaChBcihvWzBdKSl7Y2FzZSI8P3htbCI6YnJlYWs7Y2FzZSI8VGhyZWFkZWRDb21tZW50cyI6YnJlYWs7Y2FzZSI8L1RocmVhZGVkQ29tbWVudHM+IjpicmVhaztjYXNlIjx0aHJlYWRlZENvbW1lbnQiOm49e2F1dGhvcjpvLnBlcnNvbklkLGd1aWQ6by5pZCxyZWY6by5yZWYsVDoxfTticmVhaztjYXNlIjwvdGhyZWFkZWRDb21tZW50PiI6bi50IT1udWxsJiZyLnB1c2gobik7YnJlYWs7Y2FzZSI8dGV4dD4iOmNhc2UiPHRleHQiOmk9YytzLmxlbmd0aDticmVhaztjYXNlIjwvdGV4dD4iOm4udD1lLnNsaWNlKGksYykucmVwbGFjZSgvXHJcbi9nLGAKYCkucmVwbGFjZSgvXHIvZyxgCmApO2JyZWFrO2Nhc2UiPG1lbnRpb25zIjpjYXNlIjxtZW50aW9ucz4iOnQ9ITA7YnJlYWs7Y2FzZSI8L21lbnRpb25zPiI6dD0hMTticmVhaztjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpjYXNlIjxleHRMc3QvPiI6YnJlYWs7Y2FzZSI8ZXh0Ijp0PSEwO2JyZWFrO2Nhc2UiPC9leHQ+Ijp0PSExO2JyZWFrO2RlZmF1bHQ6aWYoIXQmJmEuV1RGKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrb1swXSsiIGluIHRocmVhZGVkIGNvbW1lbnRzIil9cmV0dXJuIHN9KSxyfWZ1bmN0aW9uIEUxKGUsYSl7dmFyIHI9W10sdD0hMTtyZXR1cm4gZS5yZXBsYWNlKG5yLGZ1bmN0aW9uKGkpe3ZhciBmPW9lKGkpO3N3aXRjaChBcihmWzBdKSl7Y2FzZSI8P3htbCI6YnJlYWs7Y2FzZSI8cGVyc29uTGlzdCI6YnJlYWs7Y2FzZSI8L3BlcnNvbkxpc3Q+IjpicmVhaztjYXNlIjxwZXJzb24iOnIucHVzaCh7bmFtZTpmLmRpc3BsYXluYW1lLGlkOmYuaWR9KTticmVhaztjYXNlIjwvcGVyc29uPiI6YnJlYWs7Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6Y2FzZSI8ZXh0THN0Lz4iOmJyZWFrO2Nhc2UiPGV4dCI6dD0hMDticmVhaztjYXNlIjwvZXh0PiI6dD0hMTticmVhaztkZWZhdWx0OmlmKCF0JiZhLldURil0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCAiK2ZbMF0rIiBpbiB0aHJlYWRlZCBjb21tZW50cyIpfXJldHVybiBpfSkscn1mdW5jdGlvbiBBMShlKXt2YXIgYT17fTthLmlhdXRob3I9ZS5yZWFkX3NoaWZ0KDQpO3ZhciByPUdhKGUpO3JldHVybiBhLnJmeD1yLnMsYS5yZWY9RGUoci5zKSxlLmwrPTE2LGF9dmFyIHkxPW1yO2Z1bmN0aW9uIFMxKGUsYSl7dmFyIHI9W10sdD1bXSxuPXt9LGk9ITE7cmV0dXJuIHZhKGUsZnVuY3Rpb24ocyxjLG8pe3N3aXRjaChvKXtjYXNlIDYzMjp0LnB1c2gocyk7YnJlYWs7Y2FzZSA2MzU6bj1zO2JyZWFrO2Nhc2UgNjM3Om4udD1zLnQsbi5oPXMuaCxuLnI9cy5yO2JyZWFrO2Nhc2UgNjM2OmlmKG4uYXV0aG9yPXRbbi5pYXV0aG9yXSxkZWxldGUgbi5pYXV0aG9yLGEuc2hlZXRSb3dzJiZuLnJmeCYmYS5zaGVldFJvd3M8PW4ucmZ4LnIpYnJlYWs7bi50fHwobi50PSIiKSxkZWxldGUgbi5yZngsci5wdXNoKG4pO2JyZWFrO2Nhc2UgMzA3MjpicmVhaztjYXNlIDM1Omk9ITA7YnJlYWs7Y2FzZSAzNjppPSExO2JyZWFrO2Nhc2UgMzc6YnJlYWs7Y2FzZSAzODpicmVhaztkZWZhdWx0OmlmKCFjLlQpe2lmKCFpfHxhLldURil0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgcmVjb3JkIDB4IitvLnRvU3RyaW5nKDE2KSl9fX0pLHJ9dmFyIEMxPSJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLnZiYVByb2plY3QiO2Z1bmN0aW9uIGIxKGUpe3ZhciBhPU1lLnV0aWxzLmNmYl9uZXcoe3Jvb3Q6IlIifSk7cmV0dXJuIGUuRnVsbFBhdGhzLmZvckVhY2goZnVuY3Rpb24ocix0KXtpZighKHIuc2xpY2UoLTEpPT09Ii8ifHwhci5tYXRjaCgvX1ZCQV9QUk9KRUNUX0NVUi8pKSl7dmFyIG49ci5yZXBsYWNlKC9eW15cL10qLywiUiIpLnJlcGxhY2UoL1wvX1ZCQV9QUk9KRUNUX0NVUlx1MDAwMCovLCIiKTtNZS51dGlscy5jZmJfYWRkKGEsbixlLkZpbGVJbmRleFt0XS5jb250ZW50KX19KSxNZS53cml0ZShhKX1mdW5jdGlvbiBJMSgpe3JldHVybnsiIXR5cGUiOiJkaWFsb2cifX1mdW5jdGlvbiBEMSgpe3JldHVybnsiIXR5cGUiOiJkaWFsb2cifX1mdW5jdGlvbiBSMSgpe3JldHVybnsiIXR5cGUiOiJtYWNybyJ9fWZ1bmN0aW9uIE8xKCl7cmV0dXJueyIhdHlwZSI6Im1hY3JvIn19dmFyIHFhPWZ1bmN0aW9uKCl7dmFyIGU9LyhefFteQS1aYS16X10pUihcWz8tP1xkK1xdfFsxLTldXGQqfClDKFxbPy0/XGQrXF18WzEtOV1cZCp8KSg/IVtBLVphLXowLTlfXSkvZyxhPXtyOjAsYzowfTtmdW5jdGlvbiByKHQsbixpLGYpe3ZhciBzPSExLGM9ITE7aS5sZW5ndGg9PTA/Yz0hMDppLmNoYXJBdCgwKT09IlsiJiYoYz0hMCxpPWkuc2xpY2UoMSwtMSkpLGYubGVuZ3RoPT0wP3M9ITA6Zi5jaGFyQXQoMCk9PSJbIiYmKHM9ITAsZj1mLnNsaWNlKDEsLTEpKTt2YXIgbz1pLmxlbmd0aD4wP3BhcnNlSW50KGksMTApfDA6MCxsPWYubGVuZ3RoPjA/cGFyc2VJbnQoZiwxMCl8MDowO3JldHVybiBzP2wrPWEuYzotLWwsYz9vKz1hLnI6LS1vLG4rKHM/IiI6IiQiKStIZShsKSsoYz8iIjoiJCIpK0dlKG8pfXJldHVybiBmdW5jdGlvbihuLGkpe3JldHVybiBhPWksbi5yZXBsYWNlKGUscil9fSgpLF9uPS8oXnxbXi5fQS1aYS16MC05XSkoXCQ/KShbQS1aXXsxLDJ9fFtBLVddW0EtWl17Mn18WFtBLUVdW0EtWl18WEZbQS1EXSkoXCQ/KShcZHsxLDd9KSg/IVtfLlwoQS1aYS16MC05XSkvZzt0cnl7X249LyhefFteLl9BLVphLXowLTldKShbJF0/KShbQS1aXXsxLDJ9fFtBLVddW0EtWl17Mn18WFtBLUVdW0EtWl18WEZbQS1EXSkoWyRdPykoMTBbMC0zXVxkezR9fDEwNFswLTddXGR7M318MTA0OFswLTRdXGR7Mn18MTA0ODVbMC02XVxkfDEwNDg1N1swLTZdfFsxLTldXGR7MCw1fSkoPyFbXy5cKEEtWmEtejAtOV0pL2d9Y2F0Y2h7fXZhciBOMT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhLHIpe3JldHVybiBhLnJlcGxhY2UoX24sZnVuY3Rpb24odCxuLGksZixzLGMpe3ZhciBvPXNuKGYpLShpPzA6ci5jKSxsPW5uKGMpLShzPzA6ci5yKSx1PXM9PSIkIj9sKzE6bD09MD8iIjoiWyIrbCsiXSIseD1pPT0iJCI/bysxOm89PTA/IiI6IlsiK28rIl0iO3JldHVybiBuKyJSIit1KyJDIit4fSl9fSgpO2Z1bmN0aW9uIFlzKGUsYSl7cmV0dXJuIGUucmVwbGFjZShfbixmdW5jdGlvbihyLHQsbixpLGYscyl7cmV0dXJuIHQrKG49PSIkIj9uK2k6SGUoc24oaSkrYS5jKSkrKGY9PSIkIj9mK3M6R2Uobm4ocykrYS5yKSl9KX1mdW5jdGlvbiBKcyhlLGEscil7dmFyIHQ9cGEoYSksbj10LnMsaT1ncihyKSxmPXtyOmkuci1uLnIsYzppLmMtbi5jfTtyZXR1cm4gWXMoZSxmKX1mdW5jdGlvbiBNMShlKXtyZXR1cm4gZS5sZW5ndGghPTF9ZnVuY3Rpb24gWnMoZSl7cmV0dXJuIGUucmVwbGFjZSgvX3hsZm5cLi9nLCIiKX1mdW5jdGlvbiBjcihlKXtlLmwrPTF9ZnVuY3Rpb24gSWEoZSxhKXt2YXIgcj1lLnJlYWRfc2hpZnQoYT09MT8xOjIpO3JldHVybltyJjE2MzgzLHI+PjE0JjEscj4+MTUmMV19ZnVuY3Rpb24gcXMoZSxhLHIpe3ZhciB0PTI7aWYocil7aWYoci5iaWZmPj0yJiZyLmJpZmY8PTUpcmV0dXJuIFFzKGUpO3IuYmlmZj09MTImJih0PTQpfXZhciBuPWUucmVhZF9zaGlmdCh0KSxpPWUucmVhZF9zaGlmdCh0KSxmPUlhKGUsMikscz1JYShlLDIpO3JldHVybntzOntyOm4sYzpmWzBdLGNSZWw6ZlsxXSxyUmVsOmZbMl19LGU6e3I6aSxjOnNbMF0sY1JlbDpzWzFdLHJSZWw6c1syXX19fWZ1bmN0aW9uIFFzKGUpe3ZhciBhPUlhKGUsMikscj1JYShlLDIpLHQ9ZS5yZWFkX3NoaWZ0KDEpLG49ZS5yZWFkX3NoaWZ0KDEpO3JldHVybntzOntyOmFbMF0sYzp0LGNSZWw6YVsxXSxyUmVsOmFbMl19LGU6e3I6clswXSxjOm4sY1JlbDpyWzFdLHJSZWw6clsyXX19fWZ1bmN0aW9uIFAxKGUsYSxyKXtpZihyLmJpZmY8OClyZXR1cm4gUXMoZSk7dmFyIHQ9ZS5yZWFkX3NoaWZ0KHIuYmlmZj09MTI/NDoyKSxuPWUucmVhZF9zaGlmdChyLmJpZmY9PTEyPzQ6MiksaT1JYShlLDIpLGY9SWEoZSwyKTtyZXR1cm57czp7cjp0LGM6aVswXSxjUmVsOmlbMV0sclJlbDppWzJdfSxlOntyOm4sYzpmWzBdLGNSZWw6ZlsxXSxyUmVsOmZbMl19fX1mdW5jdGlvbiBlZihlLGEscil7aWYociYmci5iaWZmPj0yJiZyLmJpZmY8PTUpcmV0dXJuIEwxKGUpO3ZhciB0PWUucmVhZF9zaGlmdChyJiZyLmJpZmY9PTEyPzQ6Miksbj1JYShlLDIpO3JldHVybntyOnQsYzpuWzBdLGNSZWw6blsxXSxyUmVsOm5bMl19fWZ1bmN0aW9uIEwxKGUpe3ZhciBhPUlhKGUsMikscj1lLnJlYWRfc2hpZnQoMSk7cmV0dXJue3I6YVswXSxjOnIsY1JlbDphWzFdLHJSZWw6YVsyXX19ZnVuY3Rpb24gQjEoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDIpO3JldHVybntyOmEsYzpyJjI1NSxmUXVvdGVkOiEhKHImMTYzODQpLGNSZWw6cj4+MTUsclJlbDpyPj4xNX19ZnVuY3Rpb24gVTEoZSxhLHIpe3ZhciB0PXImJnIuYmlmZj9yLmJpZmY6ODtpZih0Pj0yJiZ0PD01KXJldHVybiBIMShlKTt2YXIgbj1lLnJlYWRfc2hpZnQodD49MTI/NDoyKSxpPWUucmVhZF9zaGlmdCgyKSxmPShpJjE2Mzg0KT4+MTQscz0oaSYzMjc2OCk+PjE1O2lmKGkmPTE2MzgzLHM9PTEpZm9yKDtuPjUyNDI4Nzspbi09MTA0ODU3NjtpZihmPT0xKWZvcig7aT44MTkxOylpPWktMTYzODQ7cmV0dXJue3I6bixjOmksY1JlbDpmLHJSZWw6c319ZnVuY3Rpb24gSDEoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDEpLHQ9KGEmMzI3NjgpPj4xNSxuPShhJjE2Mzg0KT4+MTQ7cmV0dXJuIGEmPTE2MzgzLHQ9PTEmJmE+PTgxOTImJihhPWEtMTYzODQpLG49PTEmJnI+PTEyOCYmKHI9ci0yNTYpLHtyOmEsYzpyLGNSZWw6bixyUmVsOnR9fWZ1bmN0aW9uIFcxKGUsYSxyKXt2YXIgdD0oZVtlLmwrK10mOTYpPj41LG49cXMoZSxyLmJpZmY+PTImJnIuYmlmZjw9NT82Ojgscik7cmV0dXJuW3Qsbl19ZnVuY3Rpb24gVjEoZSxhLHIpe3ZhciB0PShlW2UubCsrXSY5Nik+PjUsbj1lLnJlYWRfc2hpZnQoMiwiaSIpLGk9ODtpZihyKXN3aXRjaChyLmJpZmYpe2Nhc2UgNTplLmwrPTEyLGk9NjticmVhaztjYXNlIDEyOmk9MTI7YnJlYWt9dmFyIGY9cXMoZSxpLHIpO3JldHVyblt0LG4sZl19ZnVuY3Rpb24gRzEoZSxhLHIpe3ZhciB0PShlW2UubCsrXSY5Nik+PjU7cmV0dXJuIGUubCs9ciYmci5iaWZmPjg/MTI6ci5iaWZmPDg/Njo4LFt0XX1mdW5jdGlvbiBYMShlLGEscil7dmFyIHQ9KGVbZS5sKytdJjk2KT4+NSxuPWUucmVhZF9zaGlmdCgyKSxpPTg7aWYocilzd2l0Y2goci5iaWZmKXtjYXNlIDU6ZS5sKz0xMixpPTY7YnJlYWs7Y2FzZSAxMjppPTEyO2JyZWFrfXJldHVybiBlLmwrPWksW3Qsbl19ZnVuY3Rpb24gejEoZSxhLHIpe3ZhciB0PShlW2UubCsrXSY5Nik+PjUsbj1QMShlLGEtMSxyKTtyZXR1cm5bdCxuXX1mdW5jdGlvbiAkMShlLGEscil7dmFyIHQ9KGVbZS5sKytdJjk2KT4+NTtyZXR1cm4gZS5sKz1yLmJpZmY9PTI/NjpyLmJpZmY9PTEyPzE0OjcsW3RdfWZ1bmN0aW9uIHJmKGUpe3ZhciBhPWVbZS5sKzFdJjEscj0xO3JldHVybiBlLmwrPTQsW2Escl19ZnVuY3Rpb24gSzEoZSxhLHIpe2UubCs9Mjtmb3IodmFyIHQ9ZS5yZWFkX3NoaWZ0KHImJnIuYmlmZj09Mj8xOjIpLG49W10saT0wO2k8PXQ7KytpKW4ucHVzaChlLnJlYWRfc2hpZnQociYmci5iaWZmPT0yPzE6MikpO3JldHVybiBufWZ1bmN0aW9uIGoxKGUsYSxyKXt2YXIgdD1lW2UubCsxXSYyNTU/MTowO3JldHVybiBlLmwrPTIsW3QsZS5yZWFkX3NoaWZ0KHImJnIuYmlmZj09Mj8xOjIpXX1mdW5jdGlvbiBZMShlLGEscil7dmFyIHQ9ZVtlLmwrMV0mMjU1PzE6MDtyZXR1cm4gZS5sKz0yLFt0LGUucmVhZF9zaGlmdChyJiZyLmJpZmY9PTI/MToyKV19ZnVuY3Rpb24gSjEoZSl7dmFyIGE9ZVtlLmwrMV0mMjU1PzE6MDtyZXR1cm4gZS5sKz0yLFthLGUucmVhZF9zaGlmdCgyKV19ZnVuY3Rpb24gWjEoZSxhLHIpe3ZhciB0PWVbZS5sKzFdJjI1NT8xOjA7cmV0dXJuIGUubCs9ciYmci5iaWZmPT0yPzM6NCxbdF19ZnVuY3Rpb24gYWYoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDEpLHI9ZS5yZWFkX3NoaWZ0KDEpO3JldHVyblthLHJdfWZ1bmN0aW9uIHExKGUpe3JldHVybiBlLnJlYWRfc2hpZnQoMiksYWYoZSl9ZnVuY3Rpb24gUTEoZSl7cmV0dXJuIGUucmVhZF9zaGlmdCgyKSxhZihlKX1mdW5jdGlvbiBleChlLGEscil7dmFyIHQ9KGVbZS5sXSY5Nik+PjU7ZS5sKz0xO3ZhciBuPWVmKGUsMCxyKTtyZXR1cm5bdCxuXX1mdW5jdGlvbiByeChlLGEscil7dmFyIHQ9KGVbZS5sXSY5Nik+PjU7ZS5sKz0xO3ZhciBuPVUxKGUsMCxyKTtyZXR1cm5bdCxuXX1mdW5jdGlvbiBheChlLGEscil7dmFyIHQ9KGVbZS5sXSY5Nik+PjU7ZS5sKz0xO3ZhciBuPWUucmVhZF9zaGlmdCgyKTtyJiZyLmJpZmY9PTUmJihlLmwrPTEyKTt2YXIgaT1lZihlLDAscik7cmV0dXJuW3QsbixpXX1mdW5jdGlvbiB0eChlLGEscil7dmFyIHQ9KGVbZS5sXSY5Nik+PjU7ZS5sKz0xO3ZhciBuPWUucmVhZF9zaGlmdChyJiZyLmJpZmY8PTM/MToyKTtyZXR1cm5bbmRbbl0sY2Zbbl0sdF19ZnVuY3Rpb24gbngoZSxhLHIpe3ZhciB0PWVbZS5sKytdLG49ZS5yZWFkX3NoaWZ0KDEpLGk9ciYmci5iaWZmPD0zP1t0PT04OD8tMTowLGUucmVhZF9zaGlmdCgxKV06aXgoZSk7cmV0dXJuW24sKGlbMF09PT0wP2NmOnRkKVtpWzFdXV19ZnVuY3Rpb24gaXgoZSl7cmV0dXJuW2VbZS5sKzFdPj43LGUucmVhZF9zaGlmdCgyKSYzMjc2N119ZnVuY3Rpb24gc3goZSxhLHIpe2UubCs9ciYmci5iaWZmPT0yPzM6NH1mdW5jdGlvbiBmeChlLGEscil7aWYoZS5sKyssciYmci5iaWZmPT0xMilyZXR1cm5bZS5yZWFkX3NoaWZ0KDQsImkiKSwwXTt2YXIgdD1lLnJlYWRfc2hpZnQoMiksbj1lLnJlYWRfc2hpZnQociYmci5iaWZmPT0yPzE6Mik7cmV0dXJuW3Qsbl19ZnVuY3Rpb24gY3goZSl7cmV0dXJuIGUubCsrLGJyW2UucmVhZF9zaGlmdCgxKV19ZnVuY3Rpb24gb3goZSl7cmV0dXJuIGUubCsrLGUucmVhZF9zaGlmdCgyKX1mdW5jdGlvbiBseChlKXtyZXR1cm4gZS5sKyssZS5yZWFkX3NoaWZ0KDEpIT09MH1mdW5jdGlvbiB1eChlKXtyZXR1cm4gZS5sKyssX3IoZSl9ZnVuY3Rpb24gaHgoZSxhLHIpe3JldHVybiBlLmwrKyx6YShlLGEtMSxyKX1mdW5jdGlvbiB4eChlLGEpe3ZhciByPVtlLnJlYWRfc2hpZnQoMSldO2lmKGE9PTEyKXN3aXRjaChyWzBdKXtjYXNlIDI6clswXT00O2JyZWFrO2Nhc2UgNDpyWzBdPTE2O2JyZWFrO2Nhc2UgMDpyWzBdPTE7YnJlYWs7Y2FzZSAxOnJbMF09MjticmVha31zd2l0Y2goclswXSl7Y2FzZSA0OnJbMV09YXIoZSwxKT8iVFJVRSI6IkZBTFNFIixhIT0xMiYmKGUubCs9Nyk7YnJlYWs7Y2FzZSAzNzpjYXNlIDE2OnJbMV09YnJbZVtlLmxdXSxlLmwrPWE9PTEyPzQ6ODticmVhaztjYXNlIDA6ZS5sKz04O2JyZWFrO2Nhc2UgMTpyWzFdPV9yKGUpO2JyZWFrO2Nhc2UgMjpyWzFdPUthKGUsMCx7YmlmZjphPjAmJmE8OD8yOmF9KTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiQmFkIFNlckFyOiAiK3JbMF0pfXJldHVybiByfWZ1bmN0aW9uIGR4KGUsYSxyKXtmb3IodmFyIHQ9ZS5yZWFkX3NoaWZ0KHIuYmlmZj09MTI/NDoyKSxuPVtdLGk9MDtpIT10OysraSluLnB1c2goKHIuYmlmZj09MTI/R2E6dzApKGUpKTtyZXR1cm4gbn1mdW5jdGlvbiB2eChlLGEscil7dmFyIHQ9MCxuPTA7ci5iaWZmPT0xMj8odD1lLnJlYWRfc2hpZnQoNCksbj1lLnJlYWRfc2hpZnQoNCkpOihuPTErZS5yZWFkX3NoaWZ0KDEpLHQ9MStlLnJlYWRfc2hpZnQoMikpLHIuYmlmZj49MiYmci5iaWZmPDgmJigtLXQsLS1uPT0wJiYobj0yNTYpKTtmb3IodmFyIGk9MCxmPVtdO2khPXQmJihmW2ldPVtdKTsrK2kpZm9yKHZhciBzPTA7cyE9bjsrK3MpZltpXVtzXT14eChlLHIuYmlmZik7cmV0dXJuIGZ9ZnVuY3Rpb24gcHgoZSxhLHIpe3ZhciB0PWUucmVhZF9zaGlmdCgxKT4+PjUmMyxuPSFyfHxyLmJpZmY+PTg/NDoyLGk9ZS5yZWFkX3NoaWZ0KG4pO3N3aXRjaChyLmJpZmYpe2Nhc2UgMjplLmwrPTU7YnJlYWs7Y2FzZSAzOmNhc2UgNDplLmwrPTg7YnJlYWs7Y2FzZSA1OmUubCs9MTI7YnJlYWt9cmV0dXJuW3QsMCxpXX1mdW5jdGlvbiBneChlLGEscil7aWYoci5iaWZmPT01KXJldHVybiBteChlKTt2YXIgdD1lLnJlYWRfc2hpZnQoMSk+Pj41JjMsbj1lLnJlYWRfc2hpZnQoMiksaT1lLnJlYWRfc2hpZnQoNCk7cmV0dXJuW3QsbixpXX1mdW5jdGlvbiBteChlKXt2YXIgYT1lLnJlYWRfc2hpZnQoMSk+Pj41JjMscj1lLnJlYWRfc2hpZnQoMiwiaSIpO2UubCs9ODt2YXIgdD1lLnJlYWRfc2hpZnQoMik7cmV0dXJuIGUubCs9MTIsW2Escix0XX1mdW5jdGlvbiBfeChlLGEscil7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDEpPj4+NSYzO2UubCs9ciYmci5iaWZmPT0yPzM6NDt2YXIgbj1lLnJlYWRfc2hpZnQociYmci5iaWZmPT0yPzE6Mik7cmV0dXJuW3Qsbl19ZnVuY3Rpb24ga3goZSxhLHIpe3ZhciB0PWUucmVhZF9zaGlmdCgxKT4+PjUmMyxuPWUucmVhZF9zaGlmdChyJiZyLmJpZmY9PTI/MToyKTtyZXR1cm5bdCxuXX1mdW5jdGlvbiB3eChlLGEscil7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDEpPj4+NSYzO3JldHVybiBlLmwrPTQsci5iaWZmPDgmJmUubC0tLHIuYmlmZj09MTImJihlLmwrPTIpLFt0XX1mdW5jdGlvbiBGeChlLGEscil7dmFyIHQ9KGVbZS5sKytdJjk2KT4+NSxuPWUucmVhZF9zaGlmdCgyKSxpPTQ7aWYocilzd2l0Y2goci5iaWZmKXtjYXNlIDU6aT0xNTticmVhaztjYXNlIDEyOmk9NjticmVha31yZXR1cm4gZS5sKz1pLFt0LG5dfXZhciBUeD15cixFeD15cixBeD15cjtmdW5jdGlvbiBXdChlLGEscil7cmV0dXJuIGUubCs9MixbQjEoZSldfWZ1bmN0aW9uIGtuKGUpe3JldHVybiBlLmwrPTYsW119dmFyIHl4PVd0LFN4PWtuLEN4PWtuLGJ4PVd0O2Z1bmN0aW9uIHRmKGUpe3JldHVybiBlLmwrPTIsW2VyKGUpLGUucmVhZF9zaGlmdCgyKSYxXX12YXIgSXg9V3QsRHg9dGYsUng9a24sT3g9V3QsTng9V3QsTXg9WyJEYXRhIiwiQWxsIiwiSGVhZGVycyIsIj8/IiwiP0RhdGEyIiwiPz8iLCI/RGF0YUhlYWRlcnMiLCI/PyIsIlRvdGFscyIsIj8/IiwiPz8iLCI/PyIsIj9EYXRhVG90YWxzIiwiPz8iLCI/PyIsIj8/IiwiP0N1cnJlbnQiXTtmdW5jdGlvbiBQeChlKXtlLmwrPTI7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDIpLHQ9ZS5yZWFkX3NoaWZ0KDQpLG49ZS5yZWFkX3NoaWZ0KDIpLGk9ZS5yZWFkX3NoaWZ0KDIpLGY9TXhbcj4+MiYzMV07cmV0dXJue2l4dGk6YSxjb2x0eXBlOnImMyxydDpmLGlkeDp0LGM6bixDOml9fWZ1bmN0aW9uIEx4KGUpe3JldHVybiBlLmwrPTIsW2UucmVhZF9zaGlmdCg0KV19ZnVuY3Rpb24gQngoZSxhLHIpe3JldHVybiBlLmwrPTUsZS5sKz0yLGUubCs9ci5iaWZmPT0yPzE6NCxbIlBUR1NIRUVUIl19ZnVuY3Rpb24gVXgoZSxhLHIpe3JldHVybiBlLmwrPXIuYmlmZj09Mj80OjUsWyJQVEdFTkRTSEVFVCJdfWZ1bmN0aW9uIEh4KGUpe3ZhciBhPWUucmVhZF9zaGlmdCgxKT4+PjUmMyxyPWUucmVhZF9zaGlmdCgyKTtyZXR1cm5bYSxyXX1mdW5jdGlvbiBXeChlKXt2YXIgYT1lLnJlYWRfc2hpZnQoMSk+Pj41JjMscj1lLnJlYWRfc2hpZnQoMik7cmV0dXJuW2Escl19ZnVuY3Rpb24gVngoZSl7cmV0dXJuIGUubCs9NCxbMCwwXX12YXIgbmY9ezE6e246IlB0Z0V4cCIsZjpmeH0sMjp7bjoiUHRnVGJsIixmOkF4fSwzOntuOiJQdGdBZGQiLGY6Y3J9LDQ6e246IlB0Z1N1YiIsZjpjcn0sNTp7bjoiUHRnTXVsIixmOmNyfSw2OntuOiJQdGdEaXYiLGY6Y3J9LDc6e246IlB0Z1Bvd2VyIixmOmNyfSw4OntuOiJQdGdDb25jYXQiLGY6Y3J9LDk6e246IlB0Z0x0IixmOmNyfSwxMDp7bjoiUHRnTGUiLGY6Y3J9LDExOntuOiJQdGdFcSIsZjpjcn0sMTI6e246IlB0Z0dlIixmOmNyfSwxMzp7bjoiUHRnR3QiLGY6Y3J9LDE0OntuOiJQdGdOZSIsZjpjcn0sMTU6e246IlB0Z0lzZWN0IixmOmNyfSwxNjp7bjoiUHRnVW5pb24iLGY6Y3J9LDE3OntuOiJQdGdSYW5nZSIsZjpjcn0sMTg6e246IlB0Z1VwbHVzIixmOmNyfSwxOTp7bjoiUHRnVW1pbnVzIixmOmNyfSwyMDp7bjoiUHRnUGVyY2VudCIsZjpjcn0sMjE6e246IlB0Z1BhcmVuIixmOmNyfSwyMjp7bjoiUHRnTWlzc0FyZyIsZjpjcn0sMjM6e246IlB0Z1N0ciIsZjpoeH0sMjY6e246IlB0Z1NoZWV0IixmOkJ4fSwyNzp7bjoiUHRnRW5kU2hlZXQiLGY6VXh9LDI4OntuOiJQdGdFcnIiLGY6Y3h9LDI5OntuOiJQdGdCb29sIixmOmx4fSwzMDp7bjoiUHRnSW50IixmOm94fSwzMTp7bjoiUHRnTnVtIixmOnV4fSwzMjp7bjoiUHRnQXJyYXkiLGY6JDF9LDMzOntuOiJQdGdGdW5jIixmOnR4fSwzNDp7bjoiUHRnRnVuY1ZhciIsZjpueH0sMzU6e246IlB0Z05hbWUiLGY6cHh9LDM2OntuOiJQdGdSZWYiLGY6ZXh9LDM3OntuOiJQdGdBcmVhIixmOlcxfSwzODp7bjoiUHRnTWVtQXJlYSIsZjpfeH0sMzk6e246IlB0Z01lbUVyciIsZjpUeH0sNDA6e246IlB0Z01lbU5vTWVtIixmOkV4fSw0MTp7bjoiUHRnTWVtRnVuYyIsZjpreH0sNDI6e246IlB0Z1JlZkVyciIsZjp3eH0sNDM6e246IlB0Z0FyZWFFcnIiLGY6RzF9LDQ0OntuOiJQdGdSZWZOIixmOnJ4fSw0NTp7bjoiUHRnQXJlYU4iLGY6ejF9LDQ2OntuOiJQdGdNZW1BcmVhTiIsZjpIeH0sNDc6e246IlB0Z01lbU5vTWVtTiIsZjpXeH0sNTc6e246IlB0Z05hbWVYIixmOmd4fSw1ODp7bjoiUHRnUmVmM2QiLGY6YXh9LDU5OntuOiJQdGdBcmVhM2QiLGY6VjF9LDYwOntuOiJQdGdSZWZFcnIzZCIsZjpGeH0sNjE6e246IlB0Z0FyZWFFcnIzZCIsZjpYMX0sMjU1Ont9fSxHeD17NjQ6MzIsOTY6MzIsNjU6MzMsOTc6MzMsNjY6MzQsOTg6MzQsNjc6MzUsOTk6MzUsNjg6MzYsMTAwOjM2LDY5OjM3LDEwMTozNyw3MDozOCwxMDI6MzgsNzE6MzksMTAzOjM5LDcyOjQwLDEwNDo0MCw3Mzo0MSwxMDU6NDEsNzQ6NDIsMTA2OjQyLDc1OjQzLDEwNzo0Myw3Njo0NCwxMDg6NDQsNzc6NDUsMTA5OjQ1LDc4OjQ2LDExMDo0Niw3OTo0NywxMTE6NDcsODg6MzQsMTIwOjM0LDg5OjU3LDEyMTo1Nyw5MDo1OCwxMjI6NTgsOTE6NTksMTIzOjU5LDkyOjYwLDEyNDo2MCw5Mzo2MSwxMjU6NjF9LFh4PXsxOntuOiJQdGdFbGZMZWwiLGY6dGZ9LDI6e246IlB0Z0VsZlJ3IixmOk94fSwzOntuOiJQdGdFbGZDb2wiLGY6eXh9LDY6e246IlB0Z0VsZlJ3ViIsZjpOeH0sNzp7bjoiUHRnRWxmQ29sViIsZjpieH0sMTA6e246IlB0Z0VsZlJhZGljYWwiLGY6SXh9LDExOntuOiJQdGdFbGZSYWRpY2FsUyIsZjpSeH0sMTM6e246IlB0Z0VsZkNvbFMiLGY6U3h9LDE1OntuOiJQdGdFbGZDb2xTViIsZjpDeH0sMTY6e246IlB0Z0VsZlJhZGljYWxMZWwiLGY6RHh9LDI1OntuOiJQdGdMaXN0IixmOlB4fSwyOTp7bjoiUHRnU3hOYW1lIixmOkx4fSwyNTU6e319LHp4PXswOntuOiJQdGdBdHRyTm9vcCIsZjpWeH0sMTp7bjoiUHRnQXR0clNlbWkiLGY6WjF9LDI6e246IlB0Z0F0dHJJZiIsZjpZMX0sNDp7bjoiUHRnQXR0ckNob29zZSIsZjpLMX0sODp7bjoiUHRnQXR0ckdvdG8iLGY6ajF9LDE2OntuOiJQdGdBdHRyU3VtIixmOnN4fSwzMjp7bjoiUHRnQXR0ckJheGNlbCIsZjpyZn0sMzM6e246IlB0Z0F0dHJCYXhjZWwiLGY6cmZ9LDY0OntuOiJQdGdBdHRyU3BhY2UiLGY6cTF9LDY1OntuOiJQdGdBdHRyU3BhY2VTZW1pIixmOlExfSwxMjg6e246IlB0Z0F0dHJJZkVycm9yIixmOkoxfSwyNTU6e319O2Z1bmN0aW9uIFZ0KGUsYSxyLHQpe2lmKHQuYmlmZjw4KXJldHVybiB5cihlLGEpO2Zvcih2YXIgbj1lLmwrYSxpPVtdLGY9MDtmIT09ci5sZW5ndGg7KytmKXN3aXRjaChyW2ZdWzBdKXtjYXNlIlB0Z0FycmF5IjpyW2ZdWzFdPXZ4KGUsMCx0KSxpLnB1c2gocltmXVsxXSk7YnJlYWs7Y2FzZSJQdGdNZW1BcmVhIjpyW2ZdWzJdPWR4KGUscltmXVsxXSx0KSxpLnB1c2gocltmXVsyXSk7YnJlYWs7Y2FzZSJQdGdFeHAiOnQmJnQuYmlmZj09MTImJihyW2ZdWzFdWzFdPWUucmVhZF9zaGlmdCg0KSxpLnB1c2gocltmXVsxXSkpO2JyZWFrO2Nhc2UiUHRnTGlzdCI6Y2FzZSJQdGdFbGZSYWRpY2FsUyI6Y2FzZSJQdGdFbGZDb2xTIjpjYXNlIlB0Z0VsZkNvbFNWIjp0aHJvdyJVbnN1cHBvcnRlZCAiK3JbZl1bMF19cmV0dXJuIGE9bi1lLmwsYSE9PTAmJmkucHVzaCh5cihlLGEpKSxpfWZ1bmN0aW9uIEd0KGUsYSxyKXtmb3IodmFyIHQ9ZS5sK2EsbixpLGY9W107dCE9ZS5sOylhPXQtZS5sLGk9ZVtlLmxdLG49bmZbaV18fG5mW0d4W2ldXSwoaT09PTI0fHxpPT09MjUpJiYobj0oaT09PTI0P1h4Onp4KVtlW2UubCsxXV0pLCFufHwhbi5mP3lyKGUsYSk6Zi5wdXNoKFtuLm4sbi5mKGUsYSxyKV0pO3JldHVybiBmfWZ1bmN0aW9uICR4KGUpe2Zvcih2YXIgYT1bXSxyPTA7cjxlLmxlbmd0aDsrK3Ipe2Zvcih2YXIgdD1lW3JdLG49W10saT0wO2k8dC5sZW5ndGg7KytpKXt2YXIgZj10W2ldO2lmKGYpc3dpdGNoKGZbMF0pe2Nhc2UgMjpuLnB1c2goJyInK2ZbMV0ucmVwbGFjZSgvIi9nLCciIicpKyciJyk7YnJlYWs7ZGVmYXVsdDpuLnB1c2goZlsxXSl9ZWxzZSBuLnB1c2goIiIpfWEucHVzaChuLmpvaW4oIiwiKSl9cmV0dXJuIGEuam9pbigiOyIpfXZhciBLeD17UHRnQWRkOiIrIixQdGdDb25jYXQ6IiYiLFB0Z0RpdjoiLyIsUHRnRXE6Ij0iLFB0Z0dlOiI+PSIsUHRnR3Q6Ij4iLFB0Z0xlOiI8PSIsUHRnTHQ6IjwiLFB0Z011bDoiKiIsUHRnTmU6Ijw+IixQdGdQb3dlcjoiXiIsUHRnU3ViOiItIn07ZnVuY3Rpb24gangoZSxhKXt2YXIgcj1lLmxhc3RJbmRleE9mKCIhIiksdD1hLmxhc3RJbmRleE9mKCIhIik7cmV0dXJuIHI9PS0xJiZ0PT0tMT9lKyI6IithOnI+MCYmdD4wJiZlLnNsaWNlKDAscikudG9Mb3dlckNhc2UoKT09YS5zbGljZSgwLHQpLnRvTG93ZXJDYXNlKCk/ZSsiOiIrYS5zbGljZSh0KzEpOihjb25zb2xlLmVycm9yKCJDYW5ub3QgaHlkcmF0ZSByYW5nZSIsZSxhKSxlKyI6IithKX1mdW5jdGlvbiBzZihlLGEscil7aWYoIWUpcmV0dXJuIlNIMzNUSlNFUlIwIjtpZihyLmJpZmY+OCYmKCFlLlhUSXx8IWUuWFRJW2FdKSlyZXR1cm4gZS5TaGVldE5hbWVzW2FdO2lmKCFlLlhUSSlyZXR1cm4iU0gzM1RKU0VSUjYiO3ZhciB0PWUuWFRJW2FdO2lmKHIuYmlmZjw4KXJldHVybiBhPjFlNCYmKGEtPTY1NTM2KSxhPDAmJihhPS1hKSxhPT0wPyIiOmUuWFRJW2EtMV07aWYoIXQpcmV0dXJuIlNIMzNUSlNFUlIxIjt2YXIgbj0iIjtpZihyLmJpZmY+OClzd2l0Y2goZVt0WzBdXVswXSl7Y2FzZSAzNTc6cmV0dXJuIG49dFsxXT09LTE/IiNSRUYiOmUuU2hlZXROYW1lc1t0WzFdXSx0WzFdPT10WzJdP246bisiOiIrZS5TaGVldE5hbWVzW3RbMl1dO2Nhc2UgMzU4OnJldHVybiByLlNJRCE9bnVsbD9lLlNoZWV0TmFtZXNbci5TSURdOiJTSDMzVEpTU0FNRSIrZVt0WzBdXVswXTtjYXNlIDM1NTpkZWZhdWx0OnJldHVybiJTSDMzVEpTU1JDIitlW3RbMF1dWzBdfXN3aXRjaChlW3RbMF1dWzBdWzBdKXtjYXNlIDEwMjU6cmV0dXJuIG49dFsxXT09LTE/IiNSRUYiOmUuU2hlZXROYW1lc1t0WzFdXXx8IlNIMzNUSlNFUlIzIix0WzFdPT10WzJdP246bisiOiIrZS5TaGVldE5hbWVzW3RbMl1dO2Nhc2UgMTQ4NDk6cmV0dXJuIGVbdFswXV0uc2xpY2UoMSkubWFwKGZ1bmN0aW9uKGkpe3JldHVybiBpLk5hbWV9KS5qb2luKCI7OyIpO2RlZmF1bHQ6cmV0dXJuIGVbdFswXV1bMF1bM10/KG49dFsxXT09LTE/IiNSRUYiOmVbdFswXV1bMF1bM11bdFsxXV18fCJTSDMzVEpTRVJSNCIsdFsxXT09dFsyXT9uOm4rIjoiK2VbdFswXV1bMF1bM11bdFsyXV0pOiJTSDMzVEpTRVJSMiJ9fWZ1bmN0aW9uIGZmKGUsYSxyKXt2YXIgdD1zZihlLGEscik7cmV0dXJuIHQ9PSIjUkVGIj90OkVvKHQscil9ZnVuY3Rpb24gd3IoZSxhLHIsdCxuKXt2YXIgaT1uJiZuLmJpZmZ8fDgsZj17czp7YzowLHI6MH0sZTp7YzowLHI6MH19LHM9W10sYyxvLGwsdT0wLHg9MCxoLGc9IiI7aWYoIWVbMF18fCFlWzBdWzBdKXJldHVybiIiO2Zvcih2YXIgbT0tMSxkPSIiLHA9MCx3PWVbMF0ubGVuZ3RoO3A8dzsrK3Ape3ZhciBfPWVbMF1bcF07c3dpdGNoKF9bMF0pe2Nhc2UiUHRnVW1pbnVzIjpzLnB1c2goIi0iK3MucG9wKCkpO2JyZWFrO2Nhc2UiUHRnVXBsdXMiOnMucHVzaCgiKyIrcy5wb3AoKSk7YnJlYWs7Y2FzZSJQdGdQZXJjZW50IjpzLnB1c2gocy5wb3AoKSsiJSIpO2JyZWFrO2Nhc2UiUHRnQWRkIjpjYXNlIlB0Z0NvbmNhdCI6Y2FzZSJQdGdEaXYiOmNhc2UiUHRnRXEiOmNhc2UiUHRnR2UiOmNhc2UiUHRnR3QiOmNhc2UiUHRnTGUiOmNhc2UiUHRnTHQiOmNhc2UiUHRnTXVsIjpjYXNlIlB0Z05lIjpjYXNlIlB0Z1Bvd2VyIjpjYXNlIlB0Z1N1YiI6aWYoYz1zLnBvcCgpLG89cy5wb3AoKSxtPj0wKXtzd2l0Y2goZVswXVttXVsxXVswXSl7Y2FzZSAwOmQ9UGUoIiAiLGVbMF1bbV1bMV1bMV0pO2JyZWFrO2Nhc2UgMTpkPVBlKCJcciIsZVswXVttXVsxXVsxXSk7YnJlYWs7ZGVmYXVsdDppZihkPSIiLG4uV1RGKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBQdGdBdHRyU3BhY2VUeXBlICIrZVswXVttXVsxXVswXSl9bz1vK2QsbT0tMX1zLnB1c2gobytLeFtfWzBdXStjKTticmVhaztjYXNlIlB0Z0lzZWN0IjpjPXMucG9wKCksbz1zLnBvcCgpLHMucHVzaChvKyIgIitjKTticmVhaztjYXNlIlB0Z1VuaW9uIjpjPXMucG9wKCksbz1zLnBvcCgpLHMucHVzaChvKyIsIitjKTticmVhaztjYXNlIlB0Z1JhbmdlIjpjPXMucG9wKCksbz1zLnBvcCgpLHMucHVzaChqeChvLGMpKTticmVhaztjYXNlIlB0Z0F0dHJDaG9vc2UiOmJyZWFrO2Nhc2UiUHRnQXR0ckdvdG8iOmJyZWFrO2Nhc2UiUHRnQXR0cklmIjpicmVhaztjYXNlIlB0Z0F0dHJJZkVycm9yIjpicmVhaztjYXNlIlB0Z1JlZiI6bD1SdChfWzFdWzFdLGYsbikscy5wdXNoKE90KGwsaSkpO2JyZWFrO2Nhc2UiUHRnUmVmTiI6bD1yP1J0KF9bMV1bMV0scixuKTpfWzFdWzFdLHMucHVzaChPdChsLGkpKTticmVhaztjYXNlIlB0Z1JlZjNkIjp1PV9bMV1bMV0sbD1SdChfWzFdWzJdLGYsbiksZz1mZih0LHUsbikscy5wdXNoKGcrIiEiK090KGwsaSkpO2JyZWFrO2Nhc2UiUHRnRnVuYyI6Y2FzZSJQdGdGdW5jVmFyIjp2YXIgeT1fWzFdWzBdLFI9X1sxXVsxXTt5fHwoeT0wKSx5Jj0xMjc7dmFyIFA9eT09MD9bXTpzLnNsaWNlKC15KTtzLmxlbmd0aC09eSxSPT09IlVzZXIiJiYoUj1QLnNoaWZ0KCkpLHMucHVzaChSKyIoIitQLmpvaW4oIiwiKSsiKSIpO2JyZWFrO2Nhc2UiUHRnQm9vbCI6cy5wdXNoKF9bMV0/IlRSVUUiOiJGQUxTRSIpO2JyZWFrO2Nhc2UiUHRnSW50IjpzLnB1c2goX1sxXSk7YnJlYWs7Y2FzZSJQdGdOdW0iOnMucHVzaChTdHJpbmcoX1sxXSkpO2JyZWFrO2Nhc2UiUHRnU3RyIjpzLnB1c2goJyInK19bMV0ucmVwbGFjZSgvIi9nLCciIicpKyciJyk7YnJlYWs7Y2FzZSJQdGdFcnIiOnMucHVzaChfWzFdKTticmVhaztjYXNlIlB0Z0FyZWFOIjpoPVlpKF9bMV1bMV0scj97czpyfTpmLG4pLHMucHVzaCh0bihoLG4pKTticmVhaztjYXNlIlB0Z0FyZWEiOmg9WWkoX1sxXVsxXSxmLG4pLHMucHVzaCh0bihoLG4pKTticmVhaztjYXNlIlB0Z0FyZWEzZCI6dT1fWzFdWzFdLGg9X1sxXVsyXSxnPWZmKHQsdSxuKSxzLnB1c2goZysiISIrdG4oaCxuKSk7YnJlYWs7Y2FzZSJQdGdBdHRyU3VtIjpzLnB1c2goIlNVTSgiK3MucG9wKCkrIikiKTticmVhaztjYXNlIlB0Z0F0dHJCYXhjZWwiOmNhc2UiUHRnQXR0clNlbWkiOmJyZWFrO2Nhc2UiUHRnTmFtZSI6eD1fWzFdWzJdO3ZhciBiPSh0Lm5hbWVzfHxbXSlbeC0xXXx8KHRbMF18fFtdKVt4XSxOPWI/Yi5OYW1lOiJTSDMzVEpTTkFNRSIrU3RyaW5nKHgpO04mJk4uc2xpY2UoMCw2KT09Il94bGZuLiImJiFuLnhsZm4mJihOPU4uc2xpY2UoNikpLHMucHVzaChOKTticmVhaztjYXNlIlB0Z05hbWVYIjp2YXIgST1fWzFdWzFdO3g9X1sxXVsyXTt2YXIgQjtpZihuLmJpZmY8PTUpSTwwJiYoST0tSSksdFtJXSYmKEI9dFtJXVt4XSk7ZWxzZXt2YXIgTD0iIjtpZigoKHRbSV18fFtdKVswXXx8W10pWzBdPT0xNDg0OXx8KCgodFtJXXx8W10pWzBdfHxbXSlbMF09PTEwMjU/dFtJXVt4XSYmdFtJXVt4XS5pdGFiPjAmJihMPXQuU2hlZXROYW1lc1t0W0ldW3hdLml0YWItMV0rIiEiKTpMPXQuU2hlZXROYW1lc1t4LTFdKyIhIiksdFtJXSYmdFtJXVt4XSlMKz10W0ldW3hdLk5hbWU7ZWxzZSBpZih0WzBdJiZ0WzBdW3hdKUwrPXRbMF1beF0uTmFtZTtlbHNle3ZhciBHPShzZih0LEksbil8fCIiKS5zcGxpdCgiOzsiKTtHW3gtMV0/TD1HW3gtMV06TCs9IlNIMzNUSlNFUlJYIn1zLnB1c2goTCk7YnJlYWt9Qnx8KEI9e05hbWU6IlNIMzNUSlNFUlJZIn0pLHMucHVzaChCLk5hbWUpO2JyZWFrO2Nhc2UiUHRnUGFyZW4iOnZhciBpZT0iKCIsbmU9IikiO2lmKG0+PTApe3N3aXRjaChkPSIiLGVbMF1bbV1bMV1bMF0pe2Nhc2UgMjppZT1QZSgiICIsZVswXVttXVsxXVsxXSkraWU7YnJlYWs7Y2FzZSAzOmllPVBlKCJcciIsZVswXVttXVsxXVsxXSkraWU7YnJlYWs7Y2FzZSA0Om5lPVBlKCIgIixlWzBdW21dWzFdWzFdKStuZTticmVhaztjYXNlIDU6bmU9UGUoIlxyIixlWzBdW21dWzFdWzFdKStuZTticmVhaztkZWZhdWx0OmlmKG4uV1RGKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBQdGdBdHRyU3BhY2VUeXBlICIrZVswXVttXVsxXVswXSl9bT0tMX1zLnB1c2goaWUrcy5wb3AoKStuZSk7YnJlYWs7Y2FzZSJQdGdSZWZFcnIiOnMucHVzaCgiI1JFRiEiKTticmVhaztjYXNlIlB0Z1JlZkVycjNkIjpzLnB1c2goIiNSRUYhIik7YnJlYWs7Y2FzZSJQdGdFeHAiOmw9e2M6X1sxXVsxXSxyOl9bMV1bMF19O3ZhciBxPXtjOnIuYyxyOnIucn07aWYodC5zaGFyZWRmW0RlKGwpXSl7dmFyIGxlPXQuc2hhcmVkZltEZShsKV07cy5wdXNoKHdyKGxlLGYscSx0LG4pKX1lbHNle3ZhciBRPSExO2ZvcihjPTA7YyE9dC5hcnJheWYubGVuZ3RoOysrYylpZihvPXQuYXJyYXlmW2NdLCEobC5jPG9bMF0ucy5jfHxsLmM+b1swXS5lLmMpJiYhKGwucjxvWzBdLnMucnx8bC5yPm9bMF0uZS5yKSl7cy5wdXNoKHdyKG9bMV0sZixxLHQsbikpLFE9ITA7YnJlYWt9UXx8cy5wdXNoKF9bMV0pfWJyZWFrO2Nhc2UiUHRnQXJyYXkiOnMucHVzaCgieyIrJHgoX1sxXSkrIn0iKTticmVhaztjYXNlIlB0Z01lbUFyZWEiOmJyZWFrO2Nhc2UiUHRnQXR0clNwYWNlIjpjYXNlIlB0Z0F0dHJTcGFjZVNlbWkiOm09cDticmVhaztjYXNlIlB0Z1RibCI6YnJlYWs7Y2FzZSJQdGdNZW1FcnIiOmJyZWFrO2Nhc2UiUHRnTWlzc0FyZyI6cy5wdXNoKCIiKTticmVhaztjYXNlIlB0Z0FyZWFFcnIiOnMucHVzaCgiI1JFRiEiKTticmVhaztjYXNlIlB0Z0FyZWFFcnIzZCI6cy5wdXNoKCIjUkVGISIpO2JyZWFrO2Nhc2UiUHRnTGlzdCI6cy5wdXNoKCJUYWJsZSIrX1sxXS5pZHgrIlsjIitfWzFdLnJ0KyJdIik7YnJlYWs7Y2FzZSJQdGdNZW1BcmVhTiI6Y2FzZSJQdGdNZW1Ob01lbU4iOmNhc2UiUHRnQXR0ck5vb3AiOmNhc2UiUHRnU2hlZXQiOmNhc2UiUHRnRW5kU2hlZXQiOmJyZWFrO2Nhc2UiUHRnTWVtRnVuYyI6YnJlYWs7Y2FzZSJQdGdNZW1Ob01lbSI6YnJlYWs7Y2FzZSJQdGdFbGZDb2wiOmNhc2UiUHRnRWxmQ29sUyI6Y2FzZSJQdGdFbGZDb2xTViI6Y2FzZSJQdGdFbGZDb2xWIjpjYXNlIlB0Z0VsZkxlbCI6Y2FzZSJQdGdFbGZSYWRpY2FsIjpjYXNlIlB0Z0VsZlJhZGljYWxMZWwiOmNhc2UiUHRnRWxmUmFkaWNhbFMiOmNhc2UiUHRnRWxmUnciOmNhc2UiUHRnRWxmUndWIjp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIEVMRnMiKTtjYXNlIlB0Z1N4TmFtZSI6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgRm9ybXVsYSBUb2tlbjogIitTdHJpbmcoXykpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgRm9ybXVsYSBUb2tlbjogIitTdHJpbmcoXykpfXZhciBnZT1bIlB0Z0F0dHJTcGFjZSIsIlB0Z0F0dHJTcGFjZVNlbWkiLCJQdGdBdHRyR290byJdO2lmKG4uYmlmZiE9MyYmbT49MCYmZ2UuaW5kZXhPZihlWzBdW3BdWzBdKT09LTEpe189ZVswXVttXTt2YXIgdWU9ITA7c3dpdGNoKF9bMV1bMF0pe2Nhc2UgNDp1ZT0hMTtjYXNlIDA6ZD1QZSgiICIsX1sxXVsxXSk7YnJlYWs7Y2FzZSA1OnVlPSExO2Nhc2UgMTpkPVBlKCJcciIsX1sxXVsxXSk7YnJlYWs7ZGVmYXVsdDppZihkPSIiLG4uV1RGKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBQdGdBdHRyU3BhY2VUeXBlICIrX1sxXVswXSl9cy5wdXNoKCh1ZT9kOiIiKStzLnBvcCgpKyh1ZT8iIjpkKSksbT0tMX19aWYocy5sZW5ndGg+MSYmbi5XVEYpdGhyb3cgbmV3IEVycm9yKCJiYWQgZm9ybXVsYSBzdGFjayIpO3JldHVybiBzWzBdPT0iVFJVRSI/ITA6c1swXT09IkZBTFNFIj8hMTpzWzBdfWZ1bmN0aW9uIFl4KGUsYSxyKXt2YXIgdD1lLmwrYSxuPXIuYmlmZj09Mj8xOjIsaSxmPWUucmVhZF9zaGlmdChuKTtpZihmPT02NTUzNSlyZXR1cm5bW10seXIoZSxhLTIpXTt2YXIgcz1HdChlLGYscik7cmV0dXJuIGEhPT1mK24mJihpPVZ0KGUsYS1mLW4scyxyKSksZS5sPXQsW3MsaV19ZnVuY3Rpb24gSngoZSxhLHIpe3ZhciB0PWUubCthLG49ci5iaWZmPT0yPzE6MixpLGY9ZS5yZWFkX3NoaWZ0KG4pO2lmKGY9PTY1NTM1KXJldHVybltbXSx5cihlLGEtMildO3ZhciBzPUd0KGUsZixyKTtyZXR1cm4gYSE9PWYrbiYmKGk9VnQoZSxhLWYtbixzLHIpKSxlLmw9dCxbcyxpXX1mdW5jdGlvbiBaeChlLGEscix0KXt2YXIgbj1lLmwrYSxpPUd0KGUsdCxyKSxmO3JldHVybiBuIT09ZS5sJiYoZj1WdChlLG4tZS5sLGkscikpLFtpLGZdfWZ1bmN0aW9uIHF4KGUsYSxyKXt2YXIgdD1lLmwrYSxuLGk9ZS5yZWFkX3NoaWZ0KDIpLGY9R3QoZSxpLHIpO3JldHVybiBpPT02NTUzNT9bW10seXIoZSxhLTIpXTooYSE9PWkrMiYmKG49VnQoZSx0LWktMixmLHIpKSxbZixuXSl9ZnVuY3Rpb24gUXgoZSl7dmFyIGE7aWYoZGEoZSxlLmwrNikhPT02NTUzNSlyZXR1cm5bX3IoZSksIm4iXTtzd2l0Y2goZVtlLmxdKXtjYXNlIDA6cmV0dXJuIGUubCs9OCxbIlN0cmluZyIsInMiXTtjYXNlIDE6cmV0dXJuIGE9ZVtlLmwrMl09PT0xLGUubCs9OCxbYSwiYiJdO2Nhc2UgMjpyZXR1cm4gYT1lW2UubCsyXSxlLmwrPTgsW2EsImUiXTtjYXNlIDM6cmV0dXJuIGUubCs9OCxbIiIsInMiXX1yZXR1cm5bXX1mdW5jdGlvbiB3bihlLGEscil7dmFyIHQ9ZS5sK2Esbj1xcihlLDYsciksaT1ReChlKSxmPWUucmVhZF9zaGlmdCgxKTtyLmJpZmYhPTImJihlLnJlYWRfc2hpZnQoMSksci5iaWZmPj01JiZlLnJlYWRfc2hpZnQoNCkpO3ZhciBzPUp4KGUsdC1lLmwscik7cmV0dXJue2NlbGw6bix2YWw6aVswXSxmb3JtdWxhOnMsc2hhcmVkOmY+PjMmMSx0dDppWzFdfX1mdW5jdGlvbiBTMChlLGEscil7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDQpLG49R3QoZSx0LHIpLGk9ZS5yZWFkX3NoaWZ0KDQpLGY9aT4wP1Z0KGUsaSxuLHIpOm51bGw7cmV0dXJuW24sZl19dmFyIGVkPVMwLEMwPVMwLHJkPVMwLGFkPVMwLHRkPXswOiJCRUVQIiwxOiJPUEVOIiwyOiJPUEVOLkxJTktTIiwzOiJDTE9TRS5BTEwiLDQ6IlNBVkUiLDU6IlNBVkUuQVMiLDY6IkZJTEUuREVMRVRFIiw3OiJQQUdFLlNFVFVQIiw4OiJQUklOVCIsOToiUFJJTlRFUi5TRVRVUCIsMTA6IlFVSVQiLDExOiJORVcuV0lORE9XIiwxMjoiQVJSQU5HRS5BTEwiLDEzOiJXSU5ET1cuU0laRSIsMTQ6IldJTkRPVy5NT1ZFIiwxNToiRlVMTCIsMTY6IkNMT1NFIiwxNzoiUlVOIiwyMjoiU0VULlBSSU5ULkFSRUEiLDIzOiJTRVQuUFJJTlQuVElUTEVTIiwyNDoiU0VULlBBR0UuQlJFQUsiLDI1OiJSRU1PVkUuUEFHRS5CUkVBSyIsMjY6IkZPTlQiLDI3OiJESVNQTEFZIiwyODoiUFJPVEVDVC5ET0NVTUVOVCIsMjk6IlBSRUNJU0lPTiIsMzA6IkExLlIxQzEiLDMxOiJDQUxDVUxBVEUuTk9XIiwzMjoiQ0FMQ1VMQVRJT04iLDM0OiJEQVRBLkZJTkQiLDM1OiJFWFRSQUNUIiwzNjoiREFUQS5ERUxFVEUiLDM3OiJTRVQuREFUQUJBU0UiLDM4OiJTRVQuQ1JJVEVSSUEiLDM5OiJTT1JUIiw0MDoiREFUQS5TRVJJRVMiLDQxOiJUQUJMRSIsNDI6IkZPUk1BVC5OVU1CRVIiLDQzOiJBTElHTk1FTlQiLDQ0OiJTVFlMRSIsNDU6IkJPUkRFUiIsNDY6IkNFTEwuUFJPVEVDVElPTiIsNDc6IkNPTFVNTi5XSURUSCIsNDg6IlVORE8iLDQ5OiJDVVQiLDUwOiJDT1BZIiw1MToiUEFTVEUiLDUyOiJDTEVBUiIsNTM6IlBBU1RFLlNQRUNJQUwiLDU0OiJFRElULkRFTEVURSIsNTU6IklOU0VSVCIsNTY6IkZJTEwuUklHSFQiLDU3OiJGSUxMLkRPV04iLDYxOiJERUZJTkUuTkFNRSIsNjI6IkNSRUFURS5OQU1FUyIsNjM6IkZPUk1VTEEuR09UTyIsNjQ6IkZPUk1VTEEuRklORCIsNjU6IlNFTEVDVC5MQVNULkNFTEwiLDY2OiJTSE9XLkFDVElWRS5DRUxMIiw2NzoiR0FMTEVSWS5BUkVBIiw2ODoiR0FMTEVSWS5CQVIiLDY5OiJHQUxMRVJZLkNPTFVNTiIsNzA6IkdBTExFUlkuTElORSIsNzE6IkdBTExFUlkuUElFIiw3MjoiR0FMTEVSWS5TQ0FUVEVSIiw3MzoiQ09NQklOQVRJT04iLDc0OiJQUkVGRVJSRUQiLDc1OiJBREQuT1ZFUkxBWSIsNzY6IkdSSURMSU5FUyIsNzc6IlNFVC5QUkVGRVJSRUQiLDc4OiJBWEVTIiw3OToiTEVHRU5EIiw4MDoiQVRUQUNILlRFWFQiLDgxOiJBREQuQVJST1ciLDgyOiJTRUxFQ1QuQ0hBUlQiLDgzOiJTRUxFQ1QuUExPVC5BUkVBIiw4NDoiUEFUVEVSTlMiLDg1OiJNQUlOLkNIQVJUIiw4NjoiT1ZFUkxBWSIsODc6IlNDQUxFIiw4ODoiRk9STUFULkxFR0VORCIsODk6IkZPUk1BVC5URVhUIiw5MDoiRURJVC5SRVBFQVQiLDkxOiJQQVJTRSIsOTI6IkpVU1RJRlkiLDkzOiJISURFIiw5NDoiVU5ISURFIiw5NToiV09SS1NQQUNFIiw5NjoiRk9STVVMQSIsOTc6IkZPUk1VTEEuRklMTCIsOTg6IkZPUk1VTEEuQVJSQVkiLDk5OiJEQVRBLkZJTkQuTkVYVCIsMTAwOiJEQVRBLkZJTkQuUFJFViIsMTAxOiJGT1JNVUxBLkZJTkQuTkVYVCIsMTAyOiJGT1JNVUxBLkZJTkQuUFJFViIsMTAzOiJBQ1RJVkFURSIsMTA0OiJBQ1RJVkFURS5ORVhUIiwxMDU6IkFDVElWQVRFLlBSRVYiLDEwNjoiVU5MT0NLRUQuTkVYVCIsMTA3OiJVTkxPQ0tFRC5QUkVWIiwxMDg6IkNPUFkuUElDVFVSRSIsMTA5OiJTRUxFQ1QiLDExMDoiREVMRVRFLk5BTUUiLDExMToiREVMRVRFLkZPUk1BVCIsMTEyOiJWTElORSIsMTEzOiJITElORSIsMTE0OiJWUEFHRSIsMTE1OiJIUEFHRSIsMTE2OiJWU0NST0xMIiwxMTc6IkhTQ1JPTEwiLDExODoiQUxFUlQiLDExOToiTkVXIiwxMjA6IkNBTkNFTC5DT1BZIiwxMjE6IlNIT1cuQ0xJUEJPQVJEIiwxMjI6Ik1FU1NBR0UiLDEyNDoiUEFTVEUuTElOSyIsMTI1OiJBUFAuQUNUSVZBVEUiLDEyNjoiREVMRVRFLkFSUk9XIiwxMjc6IlJPVy5IRUlHSFQiLDEyODoiRk9STUFULk1PVkUiLDEyOToiRk9STUFULlNJWkUiLDEzMDoiRk9STVVMQS5SRVBMQUNFIiwxMzE6IlNFTkQuS0VZUyIsMTMyOiJTRUxFQ1QuU1BFQ0lBTCIsMTMzOiJBUFBMWS5OQU1FUyIsMTM0OiJSRVBMQUNFLkZPTlQiLDEzNToiRlJFRVpFLlBBTkVTIiwxMzY6IlNIT1cuSU5GTyIsMTM3OiJTUExJVCIsMTM4OiJPTi5XSU5ET1ciLDEzOToiT04uREFUQSIsMTQwOiJESVNBQkxFLklOUFVUIiwxNDI6Ik9VVExJTkUiLDE0MzoiTElTVC5OQU1FUyIsMTQ0OiJGSUxFLkNMT1NFIiwxNDU6IlNBVkUuV09SS0JPT0siLDE0NjoiREFUQS5GT1JNIiwxNDc6IkNPUFkuQ0hBUlQiLDE0ODoiT04uVElNRSIsMTQ5OiJXQUlUIiwxNTA6IkZPUk1BVC5GT05UIiwxNTE6IkZJTEwuVVAiLDE1MjoiRklMTC5MRUZUIiwxNTM6IkRFTEVURS5PVkVSTEFZIiwxNTU6IlNIT1JULk1FTlVTIiwxNTk6IlNFVC5VUERBVEUuU1RBVFVTIiwxNjE6IkNPTE9SLlBBTEVUVEUiLDE2MjoiREVMRVRFLlNUWUxFIiwxNjM6IldJTkRPVy5SRVNUT1JFIiwxNjQ6IldJTkRPVy5NQVhJTUlaRSIsMTY2OiJDSEFOR0UuTElOSyIsMTY3OiJDQUxDVUxBVEUuRE9DVU1FTlQiLDE2ODoiT04uS0VZIiwxNjk6IkFQUC5SRVNUT1JFIiwxNzA6IkFQUC5NT1ZFIiwxNzE6IkFQUC5TSVpFIiwxNzI6IkFQUC5NSU5JTUlaRSIsMTczOiJBUFAuTUFYSU1JWkUiLDE3NDoiQlJJTkcuVE8uRlJPTlQiLDE3NToiU0VORC5UTy5CQUNLIiwxODU6Ik1BSU4uQ0hBUlQuVFlQRSIsMTg2OiJPVkVSTEFZLkNIQVJULlRZUEUiLDE4NzoiU0VMRUNULkVORCIsMTg4OiJPUEVOLk1BSUwiLDE4OToiU0VORC5NQUlMIiwxOTA6IlNUQU5EQVJELkZPTlQiLDE5MToiQ09OU09MSURBVEUiLDE5MjoiU09SVC5TUEVDSUFMIiwxOTM6IkdBTExFUlkuM0QuQVJFQSIsMTk0OiJHQUxMRVJZLjNELkNPTFVNTiIsMTk1OiJHQUxMRVJZLjNELkxJTkUiLDE5NjoiR0FMTEVSWS4zRC5QSUUiLDE5NzoiVklFVy4zRCIsMTk4OiJHT0FMLlNFRUsiLDE5OToiV09SS0dST1VQIiwyMDA6IkZJTEwuR1JPVVAiLDIwMToiVVBEQVRFLkxJTksiLDIwMjoiUFJPTU9URSIsMjAzOiJERU1PVEUiLDIwNDoiU0hPVy5ERVRBSUwiLDIwNjoiVU5HUk9VUCIsMjA3OiJPQkpFQ1QuUFJPUEVSVElFUyIsMjA4OiJTQVZFLk5FVy5PQkpFQ1QiLDIwOToiU0hBUkUiLDIxMDoiU0hBUkUuTkFNRSIsMjExOiJEVVBMSUNBVEUiLDIxMjoiQVBQTFkuU1RZTEUiLDIxMzoiQVNTSUdOLlRPLk9CSkVDVCIsMjE0OiJPQkpFQ1QuUFJPVEVDVElPTiIsMjE1OiJISURFLk9CSkVDVCIsMjE2OiJTRVQuRVhUUkFDVCIsMjE3OiJDUkVBVEUuUFVCTElTSEVSIiwyMTg6IlNVQlNDUklCRS5UTyIsMjE5OiJBVFRSSUJVVEVTIiwyMjA6IlNIT1cuVE9PTEJBUiIsMjIyOiJQUklOVC5QUkVWSUVXIiwyMjM6IkVESVQuQ09MT1IiLDIyNDoiU0hPVy5MRVZFTFMiLDIyNToiRk9STUFULk1BSU4iLDIyNjoiRk9STUFULk9WRVJMQVkiLDIyNzoiT04uUkVDQUxDIiwyMjg6IkVESVQuU0VSSUVTIiwyMjk6IkRFRklORS5TVFlMRSIsMjQwOiJMSU5FLlBSSU5UIiwyNDM6IkVOVEVSLkRBVEEiLDI0OToiR0FMTEVSWS5SQURBUiIsMjUwOiJNRVJHRS5TVFlMRVMiLDI1MToiRURJVElPTi5PUFRJT05TIiwyNTI6IlBBU1RFLlBJQ1RVUkUiLDI1MzoiUEFTVEUuUElDVFVSRS5MSU5LIiwyNTQ6IlNQRUxMSU5HIiwyNTY6IlpPT00iLDI1OToiSU5TRVJULk9CSkVDVCIsMjYwOiJXSU5ET1cuTUlOSU1JWkUiLDI2NToiU09VTkQuTk9URSIsMjY2OiJTT1VORC5QTEFZIiwyNjc6IkZPUk1BVC5TSEFQRSIsMjY4OiJFWFRFTkQuUE9MWUdPTiIsMjY5OiJGT1JNQVQuQVVUTyIsMjcyOiJHQUxMRVJZLjNELkJBUiIsMjczOiJHQUxMRVJZLjNELlNVUkZBQ0UiLDI3NDoiRklMTC5BVVRPIiwyNzY6IkNVU1RPTUlaRS5UT09MQkFSIiwyNzc6IkFERC5UT09MIiwyNzg6IkVESVQuT0JKRUNUIiwyNzk6Ik9OLkRPVUJMRUNMSUNLIiwyODA6Ik9OLkVOVFJZIiwyODE6IldPUktCT09LLkFERCIsMjgyOiJXT1JLQk9PSy5NT1ZFIiwyODM6IldPUktCT09LLkNPUFkiLDI4NDoiV09SS0JPT0suT1BUSU9OUyIsMjg1OiJTQVZFLldPUktTUEFDRSIsMjg4OiJDSEFSVC5XSVpBUkQiLDI4OToiREVMRVRFLlRPT0wiLDI5MDoiTU9WRS5UT09MIiwyOTE6IldPUktCT09LLlNFTEVDVCIsMjkyOiJXT1JLQk9PSy5BQ1RJVkFURSIsMjkzOiJBU1NJR04uVE8uVE9PTCIsMjk1OiJDT1BZLlRPT0wiLDI5NjoiUkVTRVQuVE9PTCIsMjk3OiJDT05TVFJBSU4uTlVNRVJJQyIsMjk4OiJQQVNURS5UT09MIiwzMDI6IldPUktCT09LLk5FVyIsMzA1OiJTQ0VOQVJJTy5DRUxMUyIsMzA2OiJTQ0VOQVJJTy5ERUxFVEUiLDMwNzoiU0NFTkFSSU8uQUREIiwzMDg6IlNDRU5BUklPLkVESVQiLDMwOToiU0NFTkFSSU8uU0hPVyIsMzEwOiJTQ0VOQVJJTy5TSE9XLk5FWFQiLDMxMToiU0NFTkFSSU8uU1VNTUFSWSIsMzEyOiJQSVZPVC5UQUJMRS5XSVpBUkQiLDMxMzoiUElWT1QuRklFTEQuUFJPUEVSVElFUyIsMzE0OiJQSVZPVC5GSUVMRCIsMzE1OiJQSVZPVC5JVEVNIiwzMTY6IlBJVk9ULkFERC5GSUVMRFMiLDMxODoiT1BUSU9OUy5DQUxDVUxBVElPTiIsMzE5OiJPUFRJT05TLkVESVQiLDMyMDoiT1BUSU9OUy5WSUVXIiwzMjE6IkFERElOLk1BTkFHRVIiLDMyMjoiTUVOVS5FRElUT1IiLDMyMzoiQVRUQUNILlRPT0xCQVJTIiwzMjQ6IlZCQUFjdGl2YXRlIiwzMjU6Ik9QVElPTlMuQ0hBUlQiLDMyODoiVkJBLklOU0VSVC5GSUxFIiwzMzA6IlZCQS5QUk9DRURVUkUuREVGSU5JVElPTiIsMzM2OiJST1VUSU5HLlNMSVAiLDMzODoiUk9VVEUuRE9DVU1FTlQiLDMzOToiTUFJTC5MT0dPTiIsMzQyOiJJTlNFUlQuUElDVFVSRSIsMzQzOiJFRElULlRPT0wiLDM0NDoiR0FMTEVSWS5ET1VHSE5VVCIsMzUwOiJDSEFSVC5UUkVORCIsMzUyOiJQSVZPVC5JVEVNLlBST1BFUlRJRVMiLDM1NDoiV09SS0JPT0suSU5TRVJUIiwzNTU6Ik9QVElPTlMuVFJBTlNJVElPTiIsMzU2OiJPUFRJT05TLkdFTkVSQUwiLDM3MDoiRklMVEVSLkFEVkFOQ0VEIiwzNzM6Ik1BSUwuQURELk1BSUxFUiIsMzc0OiJNQUlMLkRFTEVURS5NQUlMRVIiLDM3NToiTUFJTC5SRVBMWSIsMzc2OiJNQUlMLlJFUExZLkFMTCIsMzc3OiJNQUlMLkZPUldBUkQiLDM3ODoiTUFJTC5ORVhULkxFVFRFUiIsMzc5OiJEQVRBLkxBQkVMIiwzODA6IklOU0VSVC5USVRMRSIsMzgxOiJGT05ULlBST1BFUlRJRVMiLDM4MjoiTUFDUk8uT1BUSU9OUyIsMzgzOiJXT1JLQk9PSy5ISURFIiwzODQ6IldPUktCT09LLlVOSElERSIsMzg1OiJXT1JLQk9PSy5ERUxFVEUiLDM4NjoiV09SS0JPT0suTkFNRSIsMzg4OiJHQUxMRVJZLkNVU1RPTSIsMzkwOiJBREQuQ0hBUlQuQVVUT0ZPUk1BVCIsMzkxOiJERUxFVEUuQ0hBUlQuQVVUT0ZPUk1BVCIsMzkyOiJDSEFSVC5BREQuREFUQSIsMzkzOiJBVVRPLk9VVExJTkUiLDM5NDoiVEFCLk9SREVSIiwzOTU6IlNIT1cuRElBTE9HIiwzOTY6IlNFTEVDVC5BTEwiLDM5NzoiVU5HUk9VUC5TSEVFVFMiLDM5ODoiU1VCVE9UQUwuQ1JFQVRFIiwzOTk6IlNVQlRPVEFMLlJFTU9WRSIsNDAwOiJSRU5BTUUuT0JKRUNUIiw0MTI6IldPUktCT09LLlNDUk9MTCIsNDEzOiJXT1JLQk9PSy5ORVhUIiw0MTQ6IldPUktCT09LLlBSRVYiLDQxNToiV09SS0JPT0suVEFCLlNQTElUIiw0MTY6IkZVTEwuU0NSRUVOIiw0MTc6IldPUktCT09LLlBST1RFQ1QiLDQyMDoiU0NST0xMQkFSLlBST1BFUlRJRVMiLDQyMToiUElWT1QuU0hPVy5QQUdFUyIsNDIyOiJURVhULlRPLkNPTFVNTlMiLDQyMzoiRk9STUFULkNIQVJUVFlQRSIsNDI0OiJMSU5LLkZPUk1BVCIsNDI1OiJUUkFDRVIuRElTUExBWSIsNDMwOiJUUkFDRVIuTkFWSUdBVEUiLDQzMToiVFJBQ0VSLkNMRUFSIiw0MzI6IlRSQUNFUi5FUlJPUiIsNDMzOiJQSVZPVC5GSUVMRC5HUk9VUCIsNDM0OiJQSVZPVC5GSUVMRC5VTkdST1VQIiw0MzU6IkNIRUNLQk9YLlBST1BFUlRJRVMiLDQzNjoiTEFCRUwuUFJPUEVSVElFUyIsNDM3OiJMSVNUQk9YLlBST1BFUlRJRVMiLDQzODoiRURJVEJPWC5QUk9QRVJUSUVTIiw0Mzk6IlBJVk9ULlJFRlJFU0giLDQ0MDoiTElOSy5DT01CTyIsNDQxOiJPUEVOLlRFWFQiLDQ0MjoiSElERS5ESUFMT0ciLDQ0MzoiU0VULkRJQUxPRy5GT0NVUyIsNDQ0OiJFTkFCTEUuT0JKRUNUIiw0NDU6IlBVU0hCVVRUT04uUFJPUEVSVElFUyIsNDQ2OiJTRVQuRElBTE9HLkRFRkFVTFQiLDQ0NzoiRklMVEVSIiw0NDg6IkZJTFRFUi5TSE9XLkFMTCIsNDQ5OiJDTEVBUi5PVVRMSU5FIiw0NTA6IkZVTkNUSU9OLldJWkFSRCIsNDUxOiJBREQuTElTVC5JVEVNIiw0NTI6IlNFVC5MSVNULklURU0iLDQ1MzoiUkVNT1ZFLkxJU1QuSVRFTSIsNDU0OiJTRUxFQ1QuTElTVC5JVEVNIiw0NTU6IlNFVC5DT05UUk9MLlZBTFVFIiw0NTY6IlNBVkUuQ09QWS5BUyIsNDU4OiJPUFRJT05TLkxJU1RTLkFERCIsNDU5OiJPUFRJT05TLkxJU1RTLkRFTEVURSIsNDYwOiJTRVJJRVMuQVhFUyIsNDYxOiJTRVJJRVMuWCIsNDYyOiJTRVJJRVMuWSIsNDYzOiJFUlJPUkJBUi5YIiw0NjQ6IkVSUk9SQkFSLlkiLDQ2NToiRk9STUFULkNIQVJUIiw0NjY6IlNFUklFUy5PUkRFUiIsNDY3OiJNQUlMLkxPR09GRiIsNDY4OiJDTEVBUi5ST1VUSU5HLlNMSVAiLDQ2OToiQVBQLkFDVElWQVRFLk1JQ1JPU09GVCIsNDcwOiJNQUlMLkVESVQuTUFJTEVSIiw0NzE6Ik9OLlNIRUVUIiw0NzI6IlNUQU5EQVJELldJRFRIIiw0NzM6IlNDRU5BUklPLk1FUkdFIiw0NzQ6IlNVTU1BUlkuSU5GTyIsNDc1OiJGSU5ELkZJTEUiLDQ3NjoiQUNUSVZFLkNFTEwuRk9OVCIsNDc3OiJFTkFCTEUuVElQV0laQVJEIiw0Nzg6IlZCQS5NQUtFLkFERElOIiw0ODA6IklOU0VSVERBVEFUQUJMRSIsNDgxOiJXT1JLR1JPVVAuT1BUSU9OUyIsNDgyOiJNQUlMLlNFTkQuTUFJTEVSIiw0ODU6IkFVVE9DT1JSRUNUIiw0ODk6IlBPU1QuRE9DVU1FTlQiLDQ5MToiUElDS0xJU1QiLDQ5MzoiVklFVy5TSE9XIiw0OTQ6IlZJRVcuREVGSU5FIiw0OTU6IlZJRVcuREVMRVRFIiw1MDk6IlNIRUVULkJBQ0tHUk9VTkQiLDUxMDoiSU5TRVJULk1BUC5PQkpFQ1QiLDUxMToiT1BUSU9OUy5NRU5PTk8iLDUxNzoiTVNPQ0hFQ0tTIiw1MTg6Ik5PUk1BTCIsNTE5OiJMQVlPVVQiLDUyMDoiUk0uUFJJTlQuQVJFQSIsNTIxOiJDTEVBUi5QUklOVC5BUkVBIiw1MjI6IkFERC5QUklOVC5BUkVBIiw1MjM6Ik1PVkUuQlJLIiw1NDU6IkhJREVDVVJSLk5PVEUiLDU0NjoiSElERUFMTC5OT1RFUyIsNTQ3OiJERUxFVEUuTk9URSIsNTQ4OiJUUkFWRVJTRS5OT1RFUyIsNTQ5OiJBQ1RJVkFURS5OT1RFUyIsNjIwOiJQUk9URUNULlJFVklTSU9OUyIsNjIxOiJVTlBST1RFQ1QuUkVWSVNJT05TIiw2NDc6Ik9QVElPTlMuTUUiLDY1MzoiV0VCLlBVQkxJU0giLDY2NzoiTkVXV0VCUVVFUlkiLDY3MzoiUElWT1QuVEFCTEUuQ0hBUlQiLDc1MzoiT1BUSU9OUy5TQVZFIiw3NTU6Ik9QVElPTlMuU1BFTEwiLDgwODoiSElERUFMTC5JTktBTk5PVFMifSxjZj17MDoiQ09VTlQiLDE6IklGIiwyOiJJU05BIiwzOiJJU0VSUk9SIiw0OiJTVU0iLDU6IkFWRVJBR0UiLDY6Ik1JTiIsNzoiTUFYIiw4OiJST1ciLDk6IkNPTFVNTiIsMTA6Ik5BIiwxMToiTlBWIiwxMjoiU1RERVYiLDEzOiJET0xMQVIiLDE0OiJGSVhFRCIsMTU6IlNJTiIsMTY6IkNPUyIsMTc6IlRBTiIsMTg6IkFUQU4iLDE5OiJQSSIsMjA6IlNRUlQiLDIxOiJFWFAiLDIyOiJMTiIsMjM6IkxPRzEwIiwyNDoiQUJTIiwyNToiSU5UIiwyNjoiU0lHTiIsMjc6IlJPVU5EIiwyODoiTE9PS1VQIiwyOToiSU5ERVgiLDMwOiJSRVBUIiwzMToiTUlEIiwzMjoiTEVOIiwzMzoiVkFMVUUiLDM0OiJUUlVFIiwzNToiRkFMU0UiLDM2OiJBTkQiLDM3OiJPUiIsMzg6Ik5PVCIsMzk6Ik1PRCIsNDA6IkRDT1VOVCIsNDE6IkRTVU0iLDQyOiJEQVZFUkFHRSIsNDM6IkRNSU4iLDQ0OiJETUFYIiw0NToiRFNUREVWIiw0NjoiVkFSIiw0NzoiRFZBUiIsNDg6IlRFWFQiLDQ5OiJMSU5FU1QiLDUwOiJUUkVORCIsNTE6IkxPR0VTVCIsNTI6IkdST1dUSCIsNTM6IkdPVE8iLDU0OiJIQUxUIiw1NToiUkVUVVJOIiw1NjoiUFYiLDU3OiJGViIsNTg6Ik5QRVIiLDU5OiJQTVQiLDYwOiJSQVRFIiw2MToiTUlSUiIsNjI6IklSUiIsNjM6IlJBTkQiLDY0OiJNQVRDSCIsNjU6IkRBVEUiLDY2OiJUSU1FIiw2NzoiREFZIiw2ODoiTU9OVEgiLDY5OiJZRUFSIiw3MDoiV0VFS0RBWSIsNzE6IkhPVVIiLDcyOiJNSU5VVEUiLDczOiJTRUNPTkQiLDc0OiJOT1ciLDc1OiJBUkVBUyIsNzY6IlJPV1MiLDc3OiJDT0xVTU5TIiw3ODoiT0ZGU0VUIiw3OToiQUJTUkVGIiw4MDoiUkVMUkVGIiw4MToiQVJHVU1FTlQiLDgyOiJTRUFSQ0giLDgzOiJUUkFOU1BPU0UiLDg0OiJFUlJPUiIsODU6IlNURVAiLDg2OiJUWVBFIiw4NzoiRUNITyIsODg6IlNFVC5OQU1FIiw4OToiQ0FMTEVSIiw5MDoiREVSRUYiLDkxOiJXSU5ET1dTIiw5MjoiU0VSSUVTIiw5MzoiRE9DVU1FTlRTIiw5NDoiQUNUSVZFLkNFTEwiLDk1OiJTRUxFQ1RJT04iLDk2OiJSRVNVTFQiLDk3OiJBVEFOMiIsOTg6IkFTSU4iLDk5OiJBQ09TIiwxMDA6IkNIT09TRSIsMTAxOiJITE9PS1VQIiwxMDI6IlZMT09LVVAiLDEwMzoiTElOS1MiLDEwNDoiSU5QVVQiLDEwNToiSVNSRUYiLDEwNjoiR0VULkZPUk1VTEEiLDEwNzoiR0VULk5BTUUiLDEwODoiU0VULlZBTFVFIiwxMDk6IkxPRyIsMTEwOiJFWEVDIiwxMTE6IkNIQVIiLDExMjoiTE9XRVIiLDExMzoiVVBQRVIiLDExNDoiUFJPUEVSIiwxMTU6IkxFRlQiLDExNjoiUklHSFQiLDExNzoiRVhBQ1QiLDExODoiVFJJTSIsMTE5OiJSRVBMQUNFIiwxMjA6IlNVQlNUSVRVVEUiLDEyMToiQ09ERSIsMTIyOiJOQU1FUyIsMTIzOiJESVJFQ1RPUlkiLDEyNDoiRklORCIsMTI1OiJDRUxMIiwxMjY6IklTRVJSIiwxMjc6IklTVEVYVCIsMTI4OiJJU05VTUJFUiIsMTI5OiJJU0JMQU5LIiwxMzA6IlQiLDEzMToiTiIsMTMyOiJGT1BFTiIsMTMzOiJGQ0xPU0UiLDEzNDoiRlNJWkUiLDEzNToiRlJFQURMTiIsMTM2OiJGUkVBRCIsMTM3OiJGV1JJVEVMTiIsMTM4OiJGV1JJVEUiLDEzOToiRlBPUyIsMTQwOiJEQVRFVkFMVUUiLDE0MToiVElNRVZBTFVFIiwxNDI6IlNMTiIsMTQzOiJTWUQiLDE0NDoiRERCIiwxNDU6IkdFVC5ERUYiLDE0NjoiUkVGVEVYVCIsMTQ3OiJURVhUUkVGIiwxNDg6IklORElSRUNUIiwxNDk6IlJFR0lTVEVSIiwxNTA6IkNBTEwiLDE1MToiQURELkJBUiIsMTUyOiJBREQuTUVOVSIsMTUzOiJBREQuQ09NTUFORCIsMTU0OiJFTkFCTEUuQ09NTUFORCIsMTU1OiJDSEVDSy5DT01NQU5EIiwxNTY6IlJFTkFNRS5DT01NQU5EIiwxNTc6IlNIT1cuQkFSIiwxNTg6IkRFTEVURS5NRU5VIiwxNTk6IkRFTEVURS5DT01NQU5EIiwxNjA6IkdFVC5DSEFSVC5JVEVNIiwxNjE6IkRJQUxPRy5CT1giLDE2MjoiQ0xFQU4iLDE2MzoiTURFVEVSTSIsMTY0OiJNSU5WRVJTRSIsMTY1OiJNTVVMVCIsMTY2OiJGSUxFUyIsMTY3OiJJUE1UIiwxNjg6IlBQTVQiLDE2OToiQ09VTlRBIiwxNzA6IkNBTkNFTC5LRVkiLDE3MToiRk9SIiwxNzI6IldISUxFIiwxNzM6IkJSRUFLIiwxNzQ6Ik5FWFQiLDE3NToiSU5JVElBVEUiLDE3NjoiUkVRVUVTVCIsMTc3OiJQT0tFIiwxNzg6IkVYRUNVVEUiLDE3OToiVEVSTUlOQVRFIiwxODA6IlJFU1RBUlQiLDE4MToiSEVMUCIsMTgyOiJHRVQuQkFSIiwxODM6IlBST0RVQ1QiLDE4NDoiRkFDVCIsMTg1OiJHRVQuQ0VMTCIsMTg2OiJHRVQuV09SS1NQQUNFIiwxODc6IkdFVC5XSU5ET1ciLDE4ODoiR0VULkRPQ1VNRU5UIiwxODk6IkRQUk9EVUNUIiwxOTA6IklTTk9OVEVYVCIsMTkxOiJHRVQuTk9URSIsMTkyOiJOT1RFIiwxOTM6IlNUREVWUCIsMTk0OiJWQVJQIiwxOTU6IkRTVERFVlAiLDE5NjoiRFZBUlAiLDE5NzoiVFJVTkMiLDE5ODoiSVNMT0dJQ0FMIiwxOTk6IkRDT1VOVEEiLDIwMDoiREVMRVRFLkJBUiIsMjAxOiJVTlJFR0lTVEVSIiwyMDQ6IlVTRE9MTEFSIiwyMDU6IkZJTkRCIiwyMDY6IlNFQVJDSEIiLDIwNzoiUkVQTEFDRUIiLDIwODoiTEVGVEIiLDIwOToiUklHSFRCIiwyMTA6Ik1JREIiLDIxMToiTEVOQiIsMjEyOiJST1VORFVQIiwyMTM6IlJPVU5ERE9XTiIsMjE0OiJBU0MiLDIxNToiREJDUyIsMjE2OiJSQU5LIiwyMTk6IkFERFJFU1MiLDIyMDoiREFZUzM2MCIsMjIxOiJUT0RBWSIsMjIyOiJWREIiLDIyMzoiRUxTRSIsMjI0OiJFTFNFLklGIiwyMjU6IkVORC5JRiIsMjI2OiJGT1IuQ0VMTCIsMjI3OiJNRURJQU4iLDIyODoiU1VNUFJPRFVDVCIsMjI5OiJTSU5IIiwyMzA6IkNPU0giLDIzMToiVEFOSCIsMjMyOiJBU0lOSCIsMjMzOiJBQ09TSCIsMjM0OiJBVEFOSCIsMjM1OiJER0VUIiwyMzY6IkNSRUFURS5PQkpFQ1QiLDIzNzoiVk9MQVRJTEUiLDIzODoiTEFTVC5FUlJPUiIsMjM5OiJDVVNUT00uVU5ETyIsMjQwOiJDVVNUT00uUkVQRUFUIiwyNDE6IkZPUk1VTEEuQ09OVkVSVCIsMjQyOiJHRVQuTElOSy5JTkZPIiwyNDM6IlRFWFQuQk9YIiwyNDQ6IklORk8iLDI0NToiR1JPVVAiLDI0NjoiR0VULk9CSkVDVCIsMjQ3OiJEQiIsMjQ4OiJQQVVTRSIsMjUxOiJSRVNVTUUiLDI1MjoiRlJFUVVFTkNZIiwyNTM6IkFERC5UT09MQkFSIiwyNTQ6IkRFTEVURS5UT09MQkFSIiwyNTU6IlVzZXIiLDI1NjoiUkVTRVQuVE9PTEJBUiIsMjU3OiJFVkFMVUFURSIsMjU4OiJHRVQuVE9PTEJBUiIsMjU5OiJHRVQuVE9PTCIsMjYwOiJTUEVMTElORy5DSEVDSyIsMjYxOiJFUlJPUi5UWVBFIiwyNjI6IkFQUC5USVRMRSIsMjYzOiJXSU5ET1cuVElUTEUiLDI2NDoiU0FWRS5UT09MQkFSIiwyNjU6IkVOQUJMRS5UT09MIiwyNjY6IlBSRVNTLlRPT0wiLDI2NzoiUkVHSVNURVIuSUQiLDI2ODoiR0VULldPUktCT09LIiwyNjk6IkFWRURFViIsMjcwOiJCRVRBRElTVCIsMjcxOiJHQU1NQUxOIiwyNzI6IkJFVEFJTlYiLDI3MzoiQklOT01ESVNUIiwyNzQ6IkNISURJU1QiLDI3NToiQ0hJSU5WIiwyNzY6IkNPTUJJTiIsMjc3OiJDT05GSURFTkNFIiwyNzg6IkNSSVRCSU5PTSIsMjc5OiJFVkVOIiwyODA6IkVYUE9ORElTVCIsMjgxOiJGRElTVCIsMjgyOiJGSU5WIiwyODM6IkZJU0hFUiIsMjg0OiJGSVNIRVJJTlYiLDI4NToiRkxPT1IiLDI4NjoiR0FNTUFESVNUIiwyODc6IkdBTU1BSU5WIiwyODg6IkNFSUxJTkciLDI4OToiSFlQR0VPTURJU1QiLDI5MDoiTE9HTk9STURJU1QiLDI5MToiTE9HSU5WIiwyOTI6Ik5FR0JJTk9NRElTVCIsMjkzOiJOT1JNRElTVCIsMjk0OiJOT1JNU0RJU1QiLDI5NToiTk9STUlOViIsMjk2OiJOT1JNU0lOViIsMjk3OiJTVEFOREFSRElaRSIsMjk4OiJPREQiLDI5OToiUEVSTVVUIiwzMDA6IlBPSVNTT04iLDMwMToiVERJU1QiLDMwMjoiV0VJQlVMTCIsMzAzOiJTVU1YTVkyIiwzMDQ6IlNVTVgyTVkyIiwzMDU6IlNVTVgyUFkyIiwzMDY6IkNISVRFU1QiLDMwNzoiQ09SUkVMIiwzMDg6IkNPVkFSIiwzMDk6IkZPUkVDQVNUIiwzMTA6IkZURVNUIiwzMTE6IklOVEVSQ0VQVCIsMzEyOiJQRUFSU09OIiwzMTM6IlJTUSIsMzE0OiJTVEVZWCIsMzE1OiJTTE9QRSIsMzE2OiJUVEVTVCIsMzE3OiJQUk9CIiwzMTg6IkRFVlNRIiwzMTk6IkdFT01FQU4iLDMyMDoiSEFSTUVBTiIsMzIxOiJTVU1TUSIsMzIyOiJLVVJUIiwzMjM6IlNLRVciLDMyNDoiWlRFU1QiLDMyNToiTEFSR0UiLDMyNjoiU01BTEwiLDMyNzoiUVVBUlRJTEUiLDMyODoiUEVSQ0VOVElMRSIsMzI5OiJQRVJDRU5UUkFOSyIsMzMwOiJNT0RFIiwzMzE6IlRSSU1NRUFOIiwzMzI6IlRJTlYiLDMzNDoiTU9WSUUuQ09NTUFORCIsMzM1OiJHRVQuTU9WSUUiLDMzNjoiQ09OQ0FURU5BVEUiLDMzNzoiUE9XRVIiLDMzODoiUElWT1QuQURELkRBVEEiLDMzOToiR0VULlBJVk9ULlRBQkxFIiwzNDA6IkdFVC5QSVZPVC5GSUVMRCIsMzQxOiJHRVQuUElWT1QuSVRFTSIsMzQyOiJSQURJQU5TIiwzNDM6IkRFR1JFRVMiLDM0NDoiU1VCVE9UQUwiLDM0NToiU1VNSUYiLDM0NjoiQ09VTlRJRiIsMzQ3OiJDT1VOVEJMQU5LIiwzNDg6IlNDRU5BUklPLkdFVCIsMzQ5OiJPUFRJT05TLkxJU1RTLkdFVCIsMzUwOiJJU1BNVCIsMzUxOiJEQVRFRElGIiwzNTI6IkRBVEVTVFJJTkciLDM1MzoiTlVNQkVSU1RSSU5HIiwzNTQ6IlJPTUFOIiwzNTU6Ik9QRU4uRElBTE9HIiwzNTY6IlNBVkUuRElBTE9HIiwzNTc6IlZJRVcuR0VUIiwzNTg6IkdFVFBJVk9UREFUQSIsMzU5OiJIWVBFUkxJTksiLDM2MDoiUEhPTkVUSUMiLDM2MToiQVZFUkFHRUEiLDM2MjoiTUFYQSIsMzYzOiJNSU5BIiwzNjQ6IlNUREVWUEEiLDM2NToiVkFSUEEiLDM2NjoiU1RERVZBIiwzNjc6IlZBUkEiLDM2ODoiQkFIVFRFWFQiLDM2OToiVEhBSURBWU9GV0VFSyIsMzcwOiJUSEFJRElHSVQiLDM3MToiVEhBSU1PTlRIT0ZZRUFSIiwzNzI6IlRIQUlOVU1TT1VORCIsMzczOiJUSEFJTlVNU1RSSU5HIiwzNzQ6IlRIQUlTVFJJTkdMRU5HVEgiLDM3NToiSVNUSEFJRElHSVQiLDM3NjoiUk9VTkRCQUhURE9XTiIsMzc3OiJST1VOREJBSFRVUCIsMzc4OiJUSEFJWUVBUiIsMzc5OiJSVEQiLDM4MDoiQ1VCRVZBTFVFIiwzODE6IkNVQkVNRU1CRVIiLDM4MjoiQ1VCRU1FTUJFUlBST1BFUlRZIiwzODM6IkNVQkVSQU5LRURNRU1CRVIiLDM4NDoiSEVYMkJJTiIsMzg1OiJIRVgyREVDIiwzODY6IkhFWDJPQ1QiLDM4NzoiREVDMkJJTiIsMzg4OiJERUMySEVYIiwzODk6IkRFQzJPQ1QiLDM5MDoiT0NUMkJJTiIsMzkxOiJPQ1QySEVYIiwzOTI6Ik9DVDJERUMiLDM5MzoiQklOMkRFQyIsMzk0OiJCSU4yT0NUIiwzOTU6IkJJTjJIRVgiLDM5NjoiSU1TVUIiLDM5NzoiSU1ESVYiLDM5ODoiSU1QT1dFUiIsMzk5OiJJTUFCUyIsNDAwOiJJTVNRUlQiLDQwMToiSU1MTiIsNDAyOiJJTUxPRzIiLDQwMzoiSU1MT0cxMCIsNDA0OiJJTVNJTiIsNDA1OiJJTUNPUyIsNDA2OiJJTUVYUCIsNDA3OiJJTUFSR1VNRU5UIiw0MDg6IklNQ09OSlVHQVRFIiw0MDk6IklNQUdJTkFSWSIsNDEwOiJJTVJFQUwiLDQxMToiQ09NUExFWCIsNDEyOiJJTVNVTSIsNDEzOiJJTVBST0RVQ1QiLDQxNDoiU0VSSUVTU1VNIiw0MTU6IkZBQ1RET1VCTEUiLDQxNjoiU1FSVFBJIiw0MTc6IlFVT1RJRU5UIiw0MTg6IkRFTFRBIiw0MTk6IkdFU1RFUCIsNDIwOiJJU0VWRU4iLDQyMToiSVNPREQiLDQyMjoiTVJPVU5EIiw0MjM6IkVSRiIsNDI0OiJFUkZDIiw0MjU6IkJFU1NFTEoiLDQyNjoiQkVTU0VMSyIsNDI3OiJCRVNTRUxZIiw0Mjg6IkJFU1NFTEkiLDQyOToiWElSUiIsNDMwOiJYTlBWIiw0MzE6IlBSSUNFTUFUIiw0MzI6IllJRUxETUFUIiw0MzM6IklOVFJBVEUiLDQzNDoiUkVDRUlWRUQiLDQzNToiRElTQyIsNDM2OiJQUklDRURJU0MiLDQzNzoiWUlFTERESVNDIiw0Mzg6IlRCSUxMRVEiLDQzOToiVEJJTExQUklDRSIsNDQwOiJUQklMTFlJRUxEIiw0NDE6IlBSSUNFIiw0NDI6IllJRUxEIiw0NDM6IkRPTExBUkRFIiw0NDQ6IkRPTExBUkZSIiw0NDU6Ik5PTUlOQUwiLDQ0NjoiRUZGRUNUIiw0NDc6IkNVTVBSSU5DIiw0NDg6IkNVTUlQTVQiLDQ0OToiRURBVEUiLDQ1MDoiRU9NT05USCIsNDUxOiJZRUFSRlJBQyIsNDUyOiJDT1VQREFZQlMiLDQ1MzoiQ09VUERBWVMiLDQ1NDoiQ09VUERBWVNOQyIsNDU1OiJDT1VQTkNEIiw0NTY6IkNPVVBOVU0iLDQ1NzoiQ09VUFBDRCIsNDU4OiJEVVJBVElPTiIsNDU5OiJNRFVSQVRJT04iLDQ2MDoiT0RETFBSSUNFIiw0NjE6Ik9ERExZSUVMRCIsNDYyOiJPRERGUFJJQ0UiLDQ2MzoiT0RERllJRUxEIiw0NjQ6IlJBTkRCRVRXRUVOIiw0NjU6IldFRUtOVU0iLDQ2NjoiQU1PUkRFR1JDIiw0Njc6IkFNT1JMSU5DIiw0Njg6IkNPTlZFUlQiLDcyNDoiU0hFRVRKUyIsNDY5OiJBQ0NSSU5UIiw0NzA6IkFDQ1JJTlRNIiw0NzE6IldPUktEQVkiLDQ3MjoiTkVUV09SS0RBWVMiLDQ3MzoiR0NEIiw0NzQ6Ik1VTFRJTk9NSUFMIiw0NzU6IkxDTSIsNDc2OiJGVlNDSEVEVUxFIiw0Nzc6IkNVQkVLUElNRU1CRVIiLDQ3ODoiQ1VCRVNFVCIsNDc5OiJDVUJFU0VUQ09VTlQiLDQ4MDoiSUZFUlJPUiIsNDgxOiJDT1VOVElGUyIsNDgyOiJTVU1JRlMiLDQ4MzoiQVZFUkFHRUlGIiw0ODQ6IkFWRVJBR0VJRlMifSxuZD17MjoxLDM6MSwxMDowLDE1OjEsMTY6MSwxNzoxLDE4OjEsMTk6MCwyMDoxLDIxOjEsMjI6MSwyMzoxLDI0OjEsMjU6MSwyNjoxLDI3OjIsMzA6MiwzMTozLDMyOjEsMzM6MSwzNDowLDM1OjAsMzg6MSwzOToyLDQwOjMsNDE6Myw0MjozLDQzOjMsNDQ6Myw0NTozLDQ3OjMsNDg6Miw1MzoxLDYxOjMsNjM6MCw2NTozLDY2OjMsNjc6MSw2ODoxLDY5OjEsNzA6MSw3MToxLDcyOjEsNzM6MSw3NDowLDc1OjEsNzY6MSw3NzoxLDc5OjIsODA6Miw4MzoxLDg1OjAsODY6MSw4OTowLDkwOjEsOTQ6MCw5NTowLDk3OjIsOTg6MSw5OToxLDEwMTozLDEwMjozLDEwNToxLDEwNjoxLDEwODoyLDExMToxLDExMjoxLDExMzoxLDExNDoxLDExNzoyLDExODoxLDExOTo0LDEyMToxLDEyNjoxLDEyNzoxLDEyODoxLDEyOToxLDEzMDoxLDEzMToxLDEzMzoxLDEzNDoxLDEzNToxLDEzNjoyLDEzNzoyLDEzODoyLDE0MDoxLDE0MToxLDE0MjozLDE0Mzo0LDE0NDo0LDE2MToxLDE2MjoxLDE2MzoxLDE2NDoxLDE2NToyLDE3MjoxLDE3NToyLDE3NjoyLDE3NzozLDE3ODoyLDE3OToxLDE4NDoxLDE4NjoxLDE4OTozLDE5MDoxLDE5NTozLDE5NjozLDE5NzoxLDE5ODoxLDE5OTozLDIwMToxLDIwNzo0LDIxMDozLDIxMToxLDIxMjoyLDIxMzoyLDIxNDoxLDIxNToxLDIyNTowLDIyOToxLDIzMDoxLDIzMToxLDIzMjoxLDIzMzoxLDIzNDoxLDIzNTozLDI0NDoxLDI0Nzo0LDI1MjoyLDI1NzoxLDI2MToxLDI3MToxLDI3Mzo0LDI3NDoyLDI3NToyLDI3NjoyLDI3NzozLDI3ODozLDI3OToxLDI4MDozLDI4MTozLDI4MjozLDI4MzoxLDI4NDoxLDI4NToyLDI4Njo0LDI4NzozLDI4ODoyLDI4OTo0LDI5MDozLDI5MTozLDI5MjozLDI5Mzo0LDI5NDoxLDI5NTozLDI5NjoxLDI5NzozLDI5ODoxLDI5OToyLDMwMDozLDMwMTozLDMwMjo0LDMwMzoyLDMwNDoyLDMwNToyLDMwNjoyLDMwNzoyLDMwODoyLDMwOTozLDMxMDoyLDMxMToyLDMxMjoyLDMxMzoyLDMxNDoyLDMxNToyLDMxNjo0LDMyNToyLDMyNjoyLDMyNzoyLDMyODoyLDMzMToyLDMzMjoyLDMzNzoyLDM0MjoxLDM0MzoxLDM0NjoyLDM0NzoxLDM1MDo0LDM1MTozLDM1MjoxLDM1MzoyLDM2MDoxLDM2ODoxLDM2OToxLDM3MDoxLDM3MToxLDM3MjoxLDM3MzoxLDM3NDoxLDM3NToxLDM3NjoxLDM3NzoxLDM3ODoxLDM4MjozLDM4NToxLDM5MjoxLDM5MzoxLDM5NjoyLDM5NzoyLDM5ODoyLDM5OToxLDQwMDoxLDQwMToxLDQwMjoxLDQwMzoxLDQwNDoxLDQwNToxLDQwNjoxLDQwNzoxLDQwODoxLDQwOToxLDQxMDoxLDQxNDo0LDQxNToxLDQxNjoxLDQxNzoyLDQyMDoxLDQyMToxLDQyMjoyLDQyNDoxLDQyNToyLDQyNjoyLDQyNzoyLDQyODoyLDQzMDozLDQzODozLDQzOTozLDQ0MDozLDQ0MzoyLDQ0NDoyLDQ0NToyLDQ0NjoyLDQ0Nzo2LDQ0ODo2LDQ0OToyLDQ1MDoyLDQ2NDoyLDQ2ODozLDQ3NjoyLDQ3OToxLDQ4MDoyLDY1NTM1OjB9O2Z1bmN0aW9uIG9mKGUpe3JldHVybiBlLnNsaWNlKDAsMyk9PSJvZjoiJiYoZT1lLnNsaWNlKDMpKSxlLmNoYXJDb2RlQXQoMCk9PTYxJiYoZT1lLnNsaWNlKDEpLGUuY2hhckNvZGVBdCgwKT09NjEmJihlPWUuc2xpY2UoMSkpKSxlPWUucmVwbGFjZSgvQ09NXC5NSUNST1NPRlRcLi9nLCIiKSxlPWUucmVwbGFjZSgvXFsoKD86XC5bQS1aXStbMC05XSspKD86OlwuW0EtWl0rWzAtOV0rKT8pXF0vZyxmdW5jdGlvbihhLHIpe3JldHVybiByLnJlcGxhY2UoL1wuL2csIiIpfSksZT1lLnJlcGxhY2UoL1wkJyhbXiddfCcnKSsnL2csZnVuY3Rpb24oYSl7cmV0dXJuIGEuc2xpY2UoMSl9KSxlPWUucmVwbGFjZSgvXCQoW15cXVwuICMkXSspL2csZnVuY3Rpb24oYSxyKXtyZXR1cm4gci5tYXRjaCgvXihbQS1aXXsxLDJ9fFtBLVddW0EtWl17Mn18WFtBLUVdW0EtWl18WEZbQS1EXSk/KDEwWzAtM11cZHs0fXwxMDRbMC03XVxkezN9fDEwNDhbMC00XVxkezJ9fDEwNDg1WzAtNl1cZHwxMDQ4NTdbMC02XXxbMS05XVxkezAsNX0pPyQvKT9hOnJ9KSxlPWUucmVwbGFjZSgvXFsuKCNbQS1aXSpbPyFdKVxdL2csIiQxIiksZS5yZXBsYWNlKC9bO35dL2csIiwiKS5yZXBsYWNlKC9cfC9nLCI7Iil9ZnVuY3Rpb24gRm4oZSl7ZT1lLnJlcGxhY2UoL1wkJyhbXiddfCcnKSsnL2csZnVuY3Rpb24odCl7cmV0dXJuIHQuc2xpY2UoMSl9KSxlPWUucmVwbGFjZSgvXCQoW15cXVwuICMkXSspL2csZnVuY3Rpb24odCxuKXtyZXR1cm4gbi5tYXRjaCgvXihbQS1aXXsxLDJ9fFtBLVddW0EtWl17Mn18WFtBLUVdW0EtWl18WEZbQS1EXSk/KDEwWzAtM11cZHs0fXwxMDRbMC03XVxkezN9fDEwNDhbMC00XVxkezJ9fDEwNDg1WzAtNl1cZHwxMDQ4NTdbMC02XXxbMS05XVxkezAsNX0pPyQvKT90Om59KTt2YXIgYT1lLnNwbGl0KCI6Iikscj1hWzBdLnNwbGl0KCIuIilbMF07cmV0dXJuW3IsYVswXS5zcGxpdCgiLiIpWzFdKyhhLmxlbmd0aD4xPyI6IisoYVsxXS5zcGxpdCgiLiIpWzFdfHxhWzFdLnNwbGl0KCIuIilbMF0pOiIiKV19dmFyIFh0PXt9LHh0PXt9O2Z1bmN0aW9uIHp0KGUsYSl7aWYoZSl7dmFyIHI9Wy43LC43LC43NSwuNzUsLjMsLjNdO2E9PSJ4bG1sIiYmKHI9WzEsMSwxLDEsLjUsLjVdKSxlLmxlZnQ9PW51bGwmJihlLmxlZnQ9clswXSksZS5yaWdodD09bnVsbCYmKGUucmlnaHQ9clsxXSksZS50b3A9PW51bGwmJihlLnRvcD1yWzJdKSxlLmJvdHRvbT09bnVsbCYmKGUuYm90dG9tPXJbM10pLGUuaGVhZGVyPT1udWxsJiYoZS5oZWFkZXI9cls0XSksZS5mb290ZXI9PW51bGwmJihlLmZvb3Rlcj1yWzVdKX19ZnVuY3Rpb24ga2EoZSxhKXtyZXR1cm4gYSYmcHIoYSkuZm9yRWFjaChmdW5jdGlvbihyKXtlW3JdPVVlKGFbcl0pfSksZX1mdW5jdGlvbiBsZihlLGEpe3JldHVybiBhJiYoYS5wYXR0ZXJuVHlwZSE9bnVsbCYmKGUucGF0dGVyblR5cGU9YS5wYXR0ZXJuVHlwZSksYS5mZ0NvbG9yIT1udWxsJiYoZS5mZ0NvbG9yPVVlKGEuZmdDb2xvcikpLGEuYmdDb2xvciE9bnVsbCYmKGUuYmdDb2xvcj1VZShhLmJnQ29sb3IpKSxhLmdyYWRpZW50RmlsbCE9bnVsbCYmKGUuZ3JhZGllbnRGaWxsPVVlKGEuZ3JhZGllbnRGaWxsKSkpLGV9ZnVuY3Rpb24gaWQoZSxhLHIsdCl7aWYoIWV8fCFhKXJldHVybiBudWxsO3ZhciBuPXt9O2EueGZJZCE9bnVsbCYmZS5DZWxsU3R5bGVYZiYmZS5DZWxsU3R5bGVYZlthLnhmSWRdJiZrYShuLGUuQ2VsbFN0eWxlWGZbYS54ZklkXSksa2EobixhKTt2YXIgaT17aWQ6dCx4ZjpVZShuKX07cmV0dXJuIG4ubnVtRm10SWQhPW51bGwmJihpLm51bUZtdElkPW4ubnVtRm10SWQsZS5OdW1iZXJGbXQmJmUuTnVtYmVyRm10W24ubnVtRm10SWRdIT1udWxsJiYoaS5udW1GbXQ9ZS5OdW1iZXJGbXRbbi5udW1GbXRJZF0pKSxuLmZvbnRJZCE9bnVsbCYmZS5Gb250cyYmZS5Gb250c1tuLmZvbnRJZF0mJihpLmZvbnQ9RTAoZS5Gb250c1tuLmZvbnRJZF0scikpLG4uZmlsbElkIT1udWxsJiZlLkZpbGxzJiZlLkZpbGxzW24uZmlsbElkXSYmKGkuZmlsbD1FMChlLkZpbGxzW24uZmlsbElkXSxyKSxsZihpLGkuZmlsbCkpLG4uYm9yZGVySWQhPW51bGwmJmUuQm9yZGVycyYmZS5Cb3JkZXJzW24uYm9yZGVySWRdJiYoaS5ib3JkZXI9RTAoZS5Cb3JkZXJzW24uYm9yZGVySWRdLHIpKSxuLmFsaWdubWVudCYmKGkuYWxpZ25tZW50PVVlKG4uYWxpZ25tZW50KSksbi5wcm90ZWN0aW9uJiYoaS5wcm90ZWN0aW9uPVVlKG4ucHJvdGVjdGlvbikpLGl9ZnVuY3Rpb24gdWYoZSxhLHIsdCxuLGksZixzLGMpe3RyeXt0LmNlbGxORiYmKGUuej1UZVthXSl9Y2F0Y2godSl7aWYodC5XVEYpdGhyb3cgdX1pZighKGUudD09PSJ6IiYmIXQuY2VsbFN0eWxlcykpe2lmKGUudD09PSJkIiYmdHlwZW9mIGUudj09InN0cmluZyImJihlLnY9eHIoZS52KSksKCF0fHx0LmNlbGxUZXh0IT09ITEpJiZlLnQhPT0ieiIpdHJ5e2lmKFRlW2FdPT1udWxsJiZMYShTY1thXXx8IkdlbmVyYWwiLGEpLGUudD09PSJlIillLnc9ZS53fHxicltlLnZdO2Vsc2UgaWYoYT09PTApaWYoZS50PT09Im4iKShlLnZ8MCk9PT1lLnY/ZS53PWUudi50b1N0cmluZygxMCk6ZS53PXl0KGUudik7ZWxzZSBpZihlLnQ9PT0iZCIpe3ZhciBvPW9yKGUudiwhIWYpOyhvfDApPT09bz9lLnc9by50b1N0cmluZygxMCk6ZS53PXl0KG8pfWVsc2V7aWYoZS52PT09dm9pZCAwKXJldHVybiIiO2Uudz1QYShlLnYseHQpfWVsc2UgZS50PT09ImQiP2Uudz1ScihhLG9yKGUudiwhIWYpLHh0KTplLnc9UnIoYSxlLnYseHQpfWNhdGNoKHUpe2lmKHQuV1RGKXRocm93IHV9aWYodC5jZWxsU3R5bGVzKXtpZihzIT1udWxsKXRyeXt2YXIgbD1pZChpLHMsbixjKTtpZihsKXtlLnM9bDtyZXR1cm59fWNhdGNoKHUpe2lmKHQuV1RGKXRocm93IHV9aWYociE9bnVsbCl0cnl7ZS5zPUUwKGkuRmlsbHNbcl0sbil9Y2F0Y2godSl7aWYodC5XVEYmJmkuRmlsbHMpdGhyb3cgdX19fX1mdW5jdGlvbiBzZChlLGEpe3JldHVybiEoZS5lLnI8YS5zLnJ8fGEuZS5yPGUucy5yfHxlLmUuYzxhLnMuY3x8YS5lLmM8ZS5zLmMpfWZ1bmN0aW9uIFRuKGUsYSl7Zm9yKHZhciByPWUmJmVbIiFtZXJnZXMiXXx8W10sdD1bXSxuPWUmJmVbIiFyZWYiXT9aZShlWyIhcmVmIl0pOm51bGwsaT17fSxmPTA7ZjxyLmxlbmd0aDsrK2Ype3ZhciBzPXJbZl0sYz0iIjtpZighc3x8IXMuc3x8IXMuZSl7dC5wdXNoKHtjb2RlOiJFX01FUkdFX1JBTkdFIixtZXNzYWdlOiJNZXJnZSByYW5nZSBpcyBtYWxmb3JtZWQiLGluZGV4OmZ9KTtjb250aW51ZX1pZihzLnMucjwwfHxzLnMuYzwwfHxzLmUucjxzLnMucnx8cy5lLmM8cy5zLmMpe3QucHVzaCh7Y29kZToiRV9NRVJHRV9SQU5HRSIsbWVzc2FnZToiTWVyZ2UgcmFuZ2UgaXMgaW52YWxpZCIsaW5kZXg6ZixyYW5nZTpzfSk7Y29udGludWV9Yz1JZShzKSxpW2NdIT1udWxsJiZ0LnB1c2goe2NvZGU6IkVfTUVSR0VfRFVQIixtZXNzYWdlOiJNZXJnZSByYW5nZSBpcyBkdXBsaWNhdGVkIixpbmRleDpmLG90aGVyOmlbY10scmFuZ2U6Y30pLGlbY109ZixuJiYocy5zLnI8bi5zLnJ8fHMucy5jPG4ucy5jfHxzLmUucj5uLmUucnx8cy5lLmM+bi5lLmMpJiZ0LnB1c2goe2NvZGU6IkVfTUVSR0VfQk9VTkRTIixtZXNzYWdlOiJNZXJnZSByYW5nZSBleGNlZWRzIHdvcmtzaGVldCByYW5nZSIsaW5kZXg6ZixyYW5nZTpjLHJlZjpJZShuKX0pO2Zvcih2YXIgbz0wO288ZjsrK28pIXJbb118fCFyW29dLnN8fCFyW29dLmV8fHNkKHMscltvXSkmJkllKHJbb10pIT1jJiZ0LnB1c2goe2NvZGU6IkVfTUVSR0VfT1ZFUkxBUCIsbWVzc2FnZToiTWVyZ2UgcmFuZ2VzIG92ZXJsYXAiLGluZGV4OmYsb3RoZXI6byxyYW5nZTpjLG90aGVyUmFuZ2U6SWUocltvXSl9KX1pZih0Lmxlbmd0aCYmYSYmYS5XVEYpdGhyb3cgbmV3IEVycm9yKHRbMF0ubWVzc2FnZSsiICgiKyh0WzBdLnJhbmdlfHx0WzBdLmluZGV4KSsiKSIpO3JldHVybiB0fWZ1bmN0aW9uIGZkKGUsYSl7dmFyIHI9WmUoYSk7ci5zLnI8PXIuZS5yJiZyLnMuYzw9ci5lLmMmJnIucy5yPj0wJiZyLnMuYz49MCYmKGVbIiFyZWYiXT1JZShyKSl9dmFyIGNkPS88KD86XHcrOik/bWVyZ2VDZWxsIHJlZj1bIiddW0EtWjAtOTpdK1snIl1ccypbXC9dPz4vZyxvZD0vPCg/Olx3KzopP2h5cGVybGluayBbXjw+XSo+L21nLGxkPS8iKFx3KjpcdyopIi8sdWQ9LzwoPzpcdys6KT9jb2xcYltePD5dKltcL10/Pi9nLGhkPS88KD86XHc6KT9hdXRvRmlsdGVyW14+XSooW1wvXXw+KFtcc1xTXSopPFwvKD86XHc6KT9hdXRvRmlsdGVyKT4vZyx4ZD0vPCg/Olx3KzopP3BhZ2VNYXJnaW5zW148Pl0qXC8+L2csaGY9LzwoPzpcdys6KT9zaGVldFByXGJbXjw+XSo/XC8+LztmdW5jdGlvbiBkZChlLGEscix0LG4saSxmKXtpZighZSlyZXR1cm4gZTt0fHwodD17IiFpZCI6e319KTt2YXIgcz17fTthLmRlbnNlJiYoc1siIWRhdGEiXT1bXSk7dmFyIGM9e3M6e3I6MmU2LGM6MmU2fSxlOntyOjAsYzowfX0sbz0iIixsPSIiLHU9TGUoZSwic2hlZXREYXRhIik7dT8obz1lLnNsaWNlKDAsdS5pbmRleCksbD1lLnNsaWNlKHUuaW5kZXgrdVswXS5sZW5ndGgpKTpvPWw9ZTt2YXIgeD1vLm1hdGNoKGhmKTt4P0VuKHhbMF0scyxuLHIpOih4PUxlKG8sInNoZWV0UHIiKSkmJnZkKHhbMF0seFsxXXx8IiIscyxuLHIpO3ZhciBoPShvLm1hdGNoKC88KD86XHcqOik/ZGltZW5zaW9uLyl8fHtpbmRleDotMX0pLmluZGV4O2lmKGg+MCl7dmFyIGc9by5zbGljZShoLGgrNTApLm1hdGNoKGxkKTtnJiYhKGEmJmEubm9kaW0pJiZmZChzLGdbMV0pfXZhciBtPUxlKG8sInNoZWV0Vmlld3MiKTttJiZtWzFdJiZ3ZChtWzFdLG4pO3ZhciBkPVtdO2lmKGEuY2VsbFN0eWxlcyl7dmFyIHA9by5tYXRjaCh1ZCk7cCYmbWQoZCxwKX11JiZGZCh1WzFdLHMsYSxjLGksZixuKTt2YXIgdz1sLm1hdGNoKGhkKTt3JiYoc1siIWF1dG9maWx0ZXIiXT1fZCh3WzBdKSk7dmFyIF89W10seT1sLm1hdGNoKGNkKTtpZih5KWZvcihoPTA7aCE9eS5sZW5ndGg7KytoKV9baF09WmUoeVtoXS5zbGljZSh5W2hdLmluZGV4T2YoIj0iKSsyKSk7dmFyIFI9bC5tYXRjaChvZCk7UiYmcGQocyxSLHQpO3ZhciBQPWwubWF0Y2goeGQpO1AmJihzWyIhbWFyZ2lucyJdPWdkKG9lKFBbMF0pKSk7dmFyIGI7aWYoKGI9bC5tYXRjaCgvPCg/Olx3KzopP2RyYXdpbmdcYltePD5dKnI6aWQ9IiguKj8pIi8pKSYmKHNbIiFyZWwiXT1iWzFdKSwoYj1sLm1hdGNoKC9sZWdhY3lEcmF3aW5nIHI6aWQ9IiguKj8pIi8pKSYmKHNbIiFsZWdyZWwiXT1iWzFdKSxhJiZhLm5vZGltJiYoYy5zLmM9Yy5zLnI9MCksIXNbIiFyZWYiXSYmYy5lLmM+PWMucy5jJiZjLmUucj49Yy5zLnImJihzWyIhcmVmIl09SWUoYykpLGEuc2hlZXRSb3dzPjAmJnNbIiFyZWYiXSl7dmFyIE49WmUoc1siIXJlZiJdKTthLnNoZWV0Um93czw9K04uZS5yJiYoTi5lLnI9YS5zaGVldFJvd3MtMSxOLmUucj5jLmUuciYmKE4uZS5yPWMuZS5yKSxOLmUucjxOLnMuciYmKE4ucy5yPU4uZS5yKSxOLmUuYz5jLmUuYyYmKE4uZS5jPWMuZS5jKSxOLmUuYzxOLnMuYyYmKE4ucy5jPU4uZS5jKSxzWyIhZnVsbHJlZiJdPXNbIiFyZWYiXSxzWyIhcmVmIl09SWUoTikpfWlmKGQubGVuZ3RoPjAmJihzWyIhY29scyJdPWQpLF8ubGVuZ3RoPjApe3NbIiFtZXJnZXMiXT1fO3ZhciBJPVRuKHMse1dURjohIShhJiYoYS5XVEZ8fGEudmFsaWRhdGVNZXJnZXMpKX0pO0kubGVuZ3RoJiYoc1siIW1lcmdlRXJyb3JzIl09SSl9cmV0dXJuIHRbIiFpZCJdW3NbIiFyZWwiXV0mJihzWyIhZHJhd2VsIl09dFsiIWlkIl1bc1siIXJlbCJdXSksdFsiIWlkIl1bc1siIWxlZ3JlbCJdXSYmKHNbIiFsZWdkcmF3ZWwiXT10WyIhaWQiXVtzWyIhbGVncmVsIl1dKSxzfWZ1bmN0aW9uIEVuKGUsYSxyLHQpe3ZhciBuPW9lKGUpO3IuU2hlZXRzW3RdfHwoci5TaGVldHNbdF09e30pLG4uY29kZU5hbWUmJihyLlNoZWV0c1t0XS5Db2RlTmFtZT1DZShWZShuLmNvZGVOYW1lKSkpfWZ1bmN0aW9uIHZkKGUsYSxyLHQsbil7RW4oZS5zbGljZSgwLGUuaW5kZXhPZigiPiIpKSxyLHQsbil9ZnVuY3Rpb24gcGQoZSxhLHIpe2Zvcih2YXIgdD1lWyIhZGF0YSJdIT1udWxsLG49MDtuIT1hLmxlbmd0aDsrK24pe3ZhciBpPW9lKFZlKGFbbl0pLCEwKTtpZighaS5yZWYpcmV0dXJuO3ZhciBmPSgocnx8e30pWyIhaWQiXXx8W10pW2kuaWRdO2Y/KGkuVGFyZ2V0PWYuVGFyZ2V0LGkubG9jYXRpb24mJihpLlRhcmdldCs9IiMiK0NlKGkubG9jYXRpb24pKSk6KGkuVGFyZ2V0PSIjIitDZShpLmxvY2F0aW9uKSxmPXtUYXJnZXQ6aS5UYXJnZXQsVGFyZ2V0TW9kZToiSW50ZXJuYWwifSksaS5SZWw9ZixpLnRvb2x0aXAmJihpLlRvb2x0aXA9aS50b29sdGlwLGRlbGV0ZSBpLnRvb2x0aXApO2Zvcih2YXIgcz1aZShpLnJlZiksYz1zLnMucjtjPD1zLmUucjsrK2MpZm9yKHZhciBvPXMucy5jO288PXMuZS5jOysrbyl7dmFyIGw9SGUobykrR2UoYyk7dD8oZVsiIWRhdGEiXVtjXXx8KGVbIiFkYXRhIl1bY109W10pLGVbIiFkYXRhIl1bY11bb118fChlWyIhZGF0YSJdW2NdW29dPXt0OiJ6Iix2OnZvaWQgMH0pLGVbIiFkYXRhIl1bY11bb10ubD1pKTooZVtsXXx8KGVbbF09e3Q6InoiLHY6dm9pZCAwfSksZVtsXS5sPWkpfX19ZnVuY3Rpb24gZ2QoZSl7dmFyIGE9e307cmV0dXJuWyJsZWZ0IiwicmlnaHQiLCJ0b3AiLCJib3R0b20iLCJoZWFkZXIiLCJmb290ZXIiXS5mb3JFYWNoKGZ1bmN0aW9uKHIpe2Vbcl0mJihhW3JdPXBhcnNlRmxvYXQoZVtyXSkpfSksYX1mdW5jdGlvbiBtZChlLGEpe2Zvcih2YXIgcj0hMSx0PTA7dCE9YS5sZW5ndGg7Kyt0KXt2YXIgbj1vZShhW3RdLCEwKTtuLmhpZGRlbiYmKG4uaGlkZGVuPUZlKG4uaGlkZGVuKSksbi5iZXN0Rml0JiYobi5iZXN0Rml0PUZlKG4uYmVzdEZpdCkpLG4uY3VzdG9tV2lkdGgmJihuLmN1c3RvbVdpZHRoPUZlKG4uY3VzdG9tV2lkdGgpKTt2YXIgaT1wYXJzZUludChuLm1pbiwxMCktMSxmPXBhcnNlSW50KG4ubWF4LDEwKS0xO2ZvcihuLm91dGxpbmVMZXZlbCYmKG4ubGV2ZWw9K24ub3V0bGluZUxldmVsfHwwKSxkZWxldGUgbi5taW4sZGVsZXRlIG4ubWF4LG4ud2lkdGg9K24ud2lkdGgsIXImJm4ud2lkdGgmJihyPSEwLHZuKG4ud2lkdGgpKSx1dChuKTtpPD1mOyllW2krK109VWUobil9fWZ1bmN0aW9uIF9kKGUpe3ZhciBhPXtyZWY6KGUubWF0Y2goL3JlZj1bIiddKFteIiddKilbIiddLyl8fFtdKVsxXX07cmV0dXJuIGF9dmFyIGtkPS88KD86XHc6KT9zaGVldFZpZXcoPzpbXjw+YS16XVtePD5dKik/XC8/Pi9nO2Z1bmN0aW9uIHdkKGUsYSl7YS5WaWV3c3x8KGEuVmlld3M9W3t9XSksKGUubWF0Y2goa2QpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihyLHQpe3ZhciBuPW9lKHIpO2EuVmlld3NbdF18fChhLlZpZXdzW3RdPXt9KSwrbi56b29tU2NhbGUmJihhLlZpZXdzW3RdLnpvb209K24uem9vbVNjYWxlKSxuLnJpZ2h0VG9MZWZ0JiZGZShuLnJpZ2h0VG9MZWZ0KSYmKGEuVmlld3NbdF0uUlRMPSEwKX0pfXZhciBGZD1mdW5jdGlvbigpe3ZhciBlPS88KD86XHcrOik/Y1sgXC8+XS8sYT0vPFwvKD86XHcrOik/cm93Pi8scj0vcj1bIiddKFteIiddKilbIiddLyx0PS9yZWY9WyInXShbXiInXSopWyInXS87cmV0dXJuIGZ1bmN0aW9uKGksZixzLGMsbyxsLHUpe2Zvcih2YXIgeD0wLGg9IiIsZz1bXSxtPVtdLGQ9MCxwPTAsdz0wLF89IiIseSxSLFA9MCxiPTAsTixJLEI9MCxMPTAsRz0tMSxpZT1BcnJheS5pc0FycmF5KGwuQ2VsbFhmKSxuZSxxPVtdLGxlPVtdLFE9ZlsiIWRhdGEiXSE9bnVsbCxnZT1bXSx1ZT17fSxqPSExLHllPSEhcy5zaGVldFN0dWJzLGJlPSEhKCh1fHx7fSkuV0JQcm9wc3x8e30pLmRhdGUxOTA0LG1lPWkuc3BsaXQoYSksWj0wLE9lPW1lLmxlbmd0aDtaIT1PZTsrK1ope2g9bWVbWl0udHJpbSgpO3ZhciB3ZT1oLmxlbmd0aDtpZih3ZSE9PTApe3ZhciBBZT0wO2U6Zm9yKHg9MDt4PHdlOysreClzd2l0Y2goaFt4XSl7Y2FzZSI+IjppZihoW3gtMV0hPSIvIil7Kyt4O2JyZWFrIGV9aWYocyYmcy5jZWxsU3R5bGVzKXtpZihSPW9lKGguc2xpY2UoQWUseCksITApLFA9Ui5yIT1udWxsP3BhcnNlSW50KFIuciwxMCk6UCsxLGI9LTEscy5zaGVldFJvd3MmJnMuc2hlZXRSb3dzPFApY29udGludWU7dWU9e30saj0hMSxSLmh0JiYoaj0hMCx1ZS5ocHQ9cGFyc2VGbG9hdChSLmh0KSx1ZS5ocHg9VXQodWUuaHB0KSksUi5oaWRkZW4mJkZlKFIuaGlkZGVuKSYmKGo9ITAsdWUuaGlkZGVuPSEwKSxSLm91dGxpbmVMZXZlbCE9bnVsbCYmKGo9ITAsdWUubGV2ZWw9K1Iub3V0bGluZUxldmVsKSxqJiYoZ2VbUC0xXT11ZSl9YnJlYWs7Y2FzZSI8IjpBZT14O2JyZWFrfWlmKEFlPj14KWJyZWFrO2lmKFI9b2UoaC5zbGljZShBZSx4KSwhMCksUD1SLnIhPW51bGw/cGFyc2VJbnQoUi5yLDEwKTpQKzEsYj0tMSwhKHMuc2hlZXRSb3dzJiZzLnNoZWV0Um93czxQKSl7cy5ub2RpbXx8KGMucy5yPlAtMSYmKGMucy5yPVAtMSksYy5lLnI8UC0xJiYoYy5lLnI9UC0xKSkscyYmcy5jZWxsU3R5bGVzJiYodWU9e30saj0hMSxSLmh0JiYoaj0hMCx1ZS5ocHQ9cGFyc2VGbG9hdChSLmh0KSx1ZS5ocHg9VXQodWUuaHB0KSksUi5oaWRkZW4mJkZlKFIuaGlkZGVuKSYmKGo9ITAsdWUuaGlkZGVuPSEwKSxSLm91dGxpbmVMZXZlbCE9bnVsbCYmKGo9ITAsdWUubGV2ZWw9K1Iub3V0bGluZUxldmVsKSxqJiYoZ2VbUC0xXT11ZSkpLGc9aC5zbGljZSh4KS5zcGxpdChlKTtmb3IodmFyIEE9MDtBIT1nLmxlbmd0aCYmZ1tBXS50cmltKCkuY2hhckF0KDApPT0iPCI7KytBKTtmb3IoZz1nLnNsaWNlKEEpLHg9MDt4IT1nLmxlbmd0aDsrK3gpaWYoaD1nW3hdLnRyaW0oKSxoLmxlbmd0aCE9PTApe2lmKG09aC5tYXRjaChyKSxkPXgscD0wLHc9MCxoPSI8YyAiKyhoLnNsaWNlKDAsMSk9PSI8Ij8iPiI6IiIpK2gsbSE9bnVsbCYmbS5sZW5ndGg9PT0yKXtmb3IoZD0wLF89bVsxXSxwPTA7cCE9Xy5sZW5ndGgmJiEoKHc9Xy5jaGFyQ29kZUF0KHApLTY0KTwxfHx3PjI2KTsrK3ApZD0yNipkK3c7LS1kLGI9ZH1lbHNlKytiO2ZvcihwPTA7cCE9aC5sZW5ndGgmJmguY2hhckNvZGVBdChwKSE9PTYyOysrcCk7aWYoKytwLFI9b2UoaC5zbGljZSgwLHApLCEwKSxSLnJ8fChSLnI9RGUoe3I6UC0xLGM6Yn0pKSxfPWguc2xpY2UocCkseT17dDoiIn0sKG09TGUoXywidiIpKSE9bnVsbCYmbVsxXSE9PSIiJiYoeS52PUNlKG1bMV0pKSxzLmNlbGxGb3JtdWxhKXtpZigobT1MZShfLCJmIikpIT1udWxsKXtpZihtWzFdPT0iIiltWzBdLmluZGV4T2YoJ3Q9InNoYXJlZCInKT4tMSYmKEk9b2UobVswXSksbGVbSS5zaV0mJih5LmY9SnMobGVbSS5zaV1bMV0sbGVbSS5zaV1bMl0sUi5yKSkpO2Vsc2UgaWYoeS5mPUNlKFZlKG1bMV0pLCEwKSxzLnhsZm58fCh5LmY9WnMoeS5mKSksbVswXS5pbmRleE9mKCd0PSJhcnJheSInKT4tMSl5LkY9KF8ubWF0Y2godCl8fFtdKVsxXSx5LkYuaW5kZXhPZigiOiIpPi0xJiZxLnB1c2goW1plKHkuRikseS5GXSk7ZWxzZSBpZihtWzBdLmluZGV4T2YoJ3Q9InNoYXJlZCInKT4tMSl7ST1vZShtWzBdKTt2YXIgVT1DZShWZShtWzFdKSwhMCk7cy54bGZufHwoVT1acyhVKSksbGVbcGFyc2VJbnQoSS5zaSwxMCldPVtJLFUsUi5yXX19ZWxzZShtPV8ubWF0Y2goLzxmW148Pl0qXC8+LykpJiYoST1vZShtWzBdKSxsZVtJLnNpXSYmKHkuZj1KcyhsZVtJLnNpXVsxXSxsZVtJLnNpXVsyXSxSLnIpKSk7dmFyIE89Z3IoUi5yKTtmb3IocD0wO3A8cS5sZW5ndGg7KytwKU8ucj49cVtwXVswXS5zLnImJk8ucjw9cVtwXVswXS5lLnImJk8uYz49cVtwXVswXS5zLmMmJk8uYzw9cVtwXVswXS5lLmMmJih5LkY9cVtwXVsxXSl9aWYoUi50PT1udWxsJiZ5LnY9PT12b2lkIDApaWYoeS5mfHx5LkYpeS52PTAseS50PSJuIjtlbHNlIGlmKHllKXkudD0ieiI7ZWxzZSBjb250aW51ZTtlbHNlIHkudD1SLnR8fCJuIjtzd2l0Y2goYy5zLmM+YiYmKGMucy5jPWIpLGMuZS5jPGImJihjLmUuYz1iKSx5LnQpe2Nhc2UibiI6aWYoeS52PT0iInx8eS52PT1udWxsKXtpZigheWUpY29udGludWU7eS50PSJ6In1lbHNlIHkudj1wYXJzZUZsb2F0KHkudik7YnJlYWs7Y2FzZSJzIjppZih0eXBlb2YgeS52PiJ1Iil7aWYoIXllKWNvbnRpbnVlO3kudD0ieiJ9ZWxzZSBOPVh0W3BhcnNlSW50KHkudiwxMCldLHkudj1OLnQseS5yPU4ucixzLmNlbGxIVE1MJiYoeS5oPU4uaCk7YnJlYWs7Y2FzZSJzdHIiOnkudD0icyIseS52PXkudiE9bnVsbD9DZShWZSh5LnYpLCEwKToiIixzLmNlbGxIVE1MJiYoeS5oPXhhKHkudikpO2JyZWFrO2Nhc2UiaW5saW5lU3RyIjptPUxlKF8sImlzIikseS50PSJzIixtIT1udWxsJiYoTj1obihtWzFdKSk/KHkudj1OLnQscy5jZWxsSFRNTCYmKHkuaD1OLmgpKTp5LnY9IiI7YnJlYWs7Y2FzZSJiIjp5LnY9RmUoeS52KTticmVhaztjYXNlImQiOnMuY2VsbERhdGVzP3kudj14cih5LnYsYmUpOih5LnY9b3IoeHIoeS52LGJlKSxiZSkseS50PSJuIik7YnJlYWs7Y2FzZSJlIjooIXN8fHMuY2VsbFRleHQhPT0hMSkmJih5Lnc9eS52KSx5LnY9ZHJbeS52XTticmVha31pZihCPUw9MCxHPS0xLG5lPW51bGwsaWUmJlIucyE9PXZvaWQgMCYmKEc9cGFyc2VJbnQoUi5zLDEwKSxuZT1sLkNlbGxYZltHXSxuZSE9bnVsbCYmKG5lLm51bUZtdElkIT1udWxsJiYoQj1uZS5udW1GbXRJZCkscy5jZWxsU3R5bGVzJiZuZS5maWxsSWQhPW51bGwmJihMPW5lLmZpbGxJZCkpKSx1Zih5LEIsTCxzLG8sbCxiZSxuZSxHKSxzLmNlbGxEYXRlcyYmaWUmJnkudD09Im4iJiZacihUZVtCXSkmJih5LnY9U2EoeS52KyhiZT8xNDYyOjApKSx5LnQ9dHlwZW9mIHkudj09Im51bWJlciI/Im4iOiJkIiksUi5jbSYmcy54bG1ldGEpe3ZhciBEPShzLnhsbWV0YS5DZWxsfHxbXSlbK1IuY20tMV07RCYmRC50eXBlPT0iWExEQVBSIiYmKHkuRD0hMCl9dmFyIHo7cy5ub2RpbSYmKHo9Z3IoUi5yKSxjLnMucj56LnImJihjLnMucj16LnIpLGMuZS5yPHouciYmKGMuZS5yPXoucikpLFE/KHo9Z3IoUi5yKSxmWyIhZGF0YSJdW3oucl18fChmWyIhZGF0YSJdW3oucl09W10pLGZbIiFkYXRhIl1bei5yXVt6LmNdPXkpOmZbUi5yXT15fX19fWdlLmxlbmd0aD4wJiYoZlsiIXJvd3MiXT1nZSl9fSgpO2Z1bmN0aW9uIFRkKGUsYSl7dmFyIHI9e30sdD1lLmwrYTtyLnI9ZS5yZWFkX3NoaWZ0KDQpLGUubCs9NDt2YXIgbj1lLnJlYWRfc2hpZnQoMik7ZS5sKz0xO3ZhciBpPWUucmVhZF9zaGlmdCgxKTtyZXR1cm4gZS5sPXQsaSY3JiYoci5sZXZlbD1pJjcpLGkmMTYmJihyLmhpZGRlbj0hMCksaSYzMiYmKHIuaHB0PW4vMjApLHJ9dmFyIEVkPUdhO2Z1bmN0aW9uIEFkKCl7fWZ1bmN0aW9uIHlkKGUsYSl7dmFyIHI9e30sdD1lW2UubF07cmV0dXJuKytlLmwsci5hYm92ZT0hKHQmNjQpLHIubGVmdD0hKHQmMTI4KSxlLmwrPTE4LHIubmFtZT1ibyhlKSxyfWZ1bmN0aW9uIFNkKGUpe3ZhciBhPVhyKGUpO3JldHVyblthXX1mdW5jdGlvbiBDZChlKXt2YXIgYT1WYShlKTtyZXR1cm5bYV19ZnVuY3Rpb24gYmQoZSl7dmFyIGE9WHIoZSkscj1lLnJlYWRfc2hpZnQoMSk7cmV0dXJuW2EsciwiYiJdfWZ1bmN0aW9uIElkKGUpe3ZhciBhPVZhKGUpLHI9ZS5yZWFkX3NoaWZ0KDEpO3JldHVyblthLHIsImIiXX1mdW5jdGlvbiBEZChlKXt2YXIgYT1YcihlKSxyPWUucmVhZF9zaGlmdCgxKTtyZXR1cm5bYSxyLCJlIl19ZnVuY3Rpb24gUmQoZSl7dmFyIGE9VmEoZSkscj1lLnJlYWRfc2hpZnQoMSk7cmV0dXJuW2EsciwiZSJdfWZ1bmN0aW9uIE9kKGUpe3ZhciBhPVhyKGUpLHI9ZS5yZWFkX3NoaWZ0KDQpO3JldHVyblthLHIsInMiXX1mdW5jdGlvbiBOZChlKXt2YXIgYT1WYShlKSxyPWUucmVhZF9zaGlmdCg0KTtyZXR1cm5bYSxyLCJzIl19ZnVuY3Rpb24gTWQoZSl7dmFyIGE9WHIoZSkscj1fcihlKTtyZXR1cm5bYSxyLCJuIl19ZnVuY3Rpb24geGYoZSl7dmFyIGE9VmEoZSkscj1fcihlKTtyZXR1cm5bYSxyLCJuIl19ZnVuY3Rpb24gUGQoZSl7dmFyIGE9WHIoZSkscj12MChlKTtyZXR1cm5bYSxyLCJuIl19ZnVuY3Rpb24gTGQoZSl7dmFyIGE9VmEoZSkscj12MChlKTtyZXR1cm5bYSxyLCJuIl19ZnVuY3Rpb24gQmQoZSl7dmFyIGE9WHIoZSkscj1mbihlKTtyZXR1cm5bYSxyLCJpcyJdfWZ1bmN0aW9uIFVkKGUpe3ZhciBhPVhyKGUpLHI9bXIoZSk7cmV0dXJuW2Esciwic3RyIl19ZnVuY3Rpb24gSGQoZSl7dmFyIGE9VmEoZSkscj1tcihlKTtyZXR1cm5bYSxyLCJzdHIiXX1mdW5jdGlvbiBXZChlLGEscil7dmFyIHQ9ZS5sK2Esbj1YcihlKTtuLnI9clsiIXJvdyJdO3ZhciBpPWUucmVhZF9zaGlmdCgxKSxmPVtuLGksImIiXTtpZihyLmNlbGxGb3JtdWxhKXtlLmwrPTI7dmFyIHM9QzAoZSx0LWUubCxyKTtmWzNdPXdyKHMsbnVsbCxuLHIuc3VwYm9va3Mscil9ZWxzZSBlLmw9dDtyZXR1cm4gZn1mdW5jdGlvbiBWZChlLGEscil7dmFyIHQ9ZS5sK2Esbj1YcihlKTtuLnI9clsiIXJvdyJdO3ZhciBpPWUucmVhZF9zaGlmdCgxKSxmPVtuLGksImUiXTtpZihyLmNlbGxGb3JtdWxhKXtlLmwrPTI7dmFyIHM9QzAoZSx0LWUubCxyKTtmWzNdPXdyKHMsbnVsbCxuLHIuc3VwYm9va3Mscil9ZWxzZSBlLmw9dDtyZXR1cm4gZn1mdW5jdGlvbiBHZChlLGEscil7dmFyIHQ9ZS5sK2Esbj1YcihlKTtuLnI9clsiIXJvdyJdO3ZhciBpPV9yKGUpLGY9W24saSwibiJdO2lmKHIuY2VsbEZvcm11bGEpe2UubCs9Mjt2YXIgcz1DMChlLHQtZS5sLHIpO2ZbM109d3IocyxudWxsLG4sci5zdXBib29rcyxyKX1lbHNlIGUubD10O3JldHVybiBmfWZ1bmN0aW9uIFhkKGUsYSxyKXt2YXIgdD1lLmwrYSxuPVhyKGUpO24ucj1yWyIhcm93Il07dmFyIGk9bXIoZSksZj1bbixpLCJzdHIiXTtpZihyLmNlbGxGb3JtdWxhKXtlLmwrPTI7dmFyIHM9QzAoZSx0LWUubCxyKTtmWzNdPXdyKHMsbnVsbCxuLHIuc3VwYm9va3Mscil9ZWxzZSBlLmw9dDtyZXR1cm4gZn12YXIgemQ9R2E7ZnVuY3Rpb24gJGQoZSxhKXt2YXIgcj1lLmwrYSx0PUdhKGUpLG49ZDAoZSksaT1tcihlKSxmPW1yKGUpLHM9bXIoZSk7ZS5sPXI7dmFyIGM9e3JmeDp0LHJlbElkOm4sbG9jOmksZGlzcGxheTpzfTtyZXR1cm4gZiYmKGMuVG9vbHRpcD1mKSxjfWZ1bmN0aW9uIEtkKCl7fWZ1bmN0aW9uIGpkKGUsYSxyKXt2YXIgdD1lLmwrYSxuPXFpKGUpLGk9ZS5yZWFkX3NoaWZ0KDEpLGY9W25dO2lmKGZbMl09aSxyLmNlbGxGb3JtdWxhKXt2YXIgcz1lZChlLHQtZS5sLHIpO2ZbMV09c31lbHNlIGUubD10O3JldHVybiBmfWZ1bmN0aW9uIFlkKGUsYSxyKXt2YXIgdD1lLmwrYSxuPUdhKGUpLGk9W25dO2lmKHIuY2VsbEZvcm11bGEpe3ZhciBmPWFkKGUsdC1lLmwscik7aVsxXT1mLGUubD10fWVsc2UgZS5sPXQ7cmV0dXJuIGl9dmFyIEpkPVsibGVmdCIsInJpZ2h0IiwidG9wIiwiYm90dG9tIiwiaGVhZGVyIiwiZm9vdGVyIl07ZnVuY3Rpb24gWmQoZSl7dmFyIGE9e307cmV0dXJuIEpkLmZvckVhY2goZnVuY3Rpb24ocil7YVtyXT1fcihlKX0pLGF9ZnVuY3Rpb24gcWQoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpO3JldHVybiBlLmwrPTI4LHtSVEw6YSYzMn19ZnVuY3Rpb24gUWQoKXt9ZnVuY3Rpb24gZXYoKXt9ZnVuY3Rpb24gcnYoZSxhLHIsdCxuLGksZil7aWYoIWUpcmV0dXJuIGU7dmFyIHM9YXx8e307dHx8KHQ9eyIhaWQiOnt9fSk7dmFyIGM9e307cy5kZW5zZSYmKGNbIiFkYXRhIl09W10pO3ZhciBvLGw9e3M6e3I6MmU2LGM6MmU2fSxlOntyOjAsYzowfX0sdT0hMSx4PSExLGgsZyxtLGQscCx3LF8seSxSLFA9W107cy5iaWZmPTEyLHNbIiFyb3ciXT0wO3ZhciBiPTAsTj0hMSxJPVtdLEI9e30sTD1zLnN1cGJvb2tzfHxuLnN1cGJvb2tzfHxbW11dO2lmKEwuc2hhcmVkZj1CLEwuYXJyYXlmPUksTC5TaGVldE5hbWVzPW4uU2hlZXROYW1lc3x8bi5TaGVldHMubWFwKGZ1bmN0aW9uKHVlKXtyZXR1cm4gdWUubmFtZX0pLCFzLnN1cGJvb2tzJiYocy5zdXBib29rcz1MLG4uTmFtZXMpKWZvcih2YXIgRz0wO0c8bi5OYW1lcy5sZW5ndGg7KytHKUxbMF1bRysxXT1uLk5hbWVzW0ddO3ZhciBpZT1bXSxuZT1bXSxxPSExO0kwWzE2XT17bjoiQnJ0U2hvcnRSZWFsIixmOnhmfTt2YXIgbGUsUT0xNDYyKishISgobnx8e30pLldCUHJvcHN8fHt9KS5kYXRlMTkwNDtpZih2YShlLGZ1bmN0aW9uKGoseWUsYmUpe2lmKCF4KXN3aXRjaChiZSl7Y2FzZSAxNDg6bz1qO2JyZWFrO2Nhc2UgMDpoPWoscy5zaGVldFJvd3MmJnMuc2hlZXRSb3dzPD1oLnImJih4PSEwKSx5PUdlKGQ9aC5yKSxzWyIhcm93Il09aC5yLChqLmhpZGRlbnx8ai5ocHR8fGoubGV2ZWwhPW51bGwpJiYoai5ocHQmJihqLmhweD1VdChqLmhwdCkpLG5lW2oucl09aik7YnJlYWs7Y2FzZSAyOmNhc2UgMzpjYXNlIDQ6Y2FzZSA1OmNhc2UgNjpjYXNlIDc6Y2FzZSA4OmNhc2UgOTpjYXNlIDEwOmNhc2UgMTE6Y2FzZSAxMzpjYXNlIDE0OmNhc2UgMTU6Y2FzZSAxNjpjYXNlIDE3OmNhc2UgMTg6Y2FzZSA2Mjpzd2l0Y2goZz17dDpqWzJdfSxqWzJdKXtjYXNlIm4iOmcudj1qWzFdO2JyZWFrO2Nhc2UicyI6Xz1YdFtqWzFdXSxnLnY9Xy50LGcucj1fLnI7YnJlYWs7Y2FzZSJiIjpnLnY9ISFqWzFdO2JyZWFrO2Nhc2UiZSI6Zy52PWpbMV0scy5jZWxsVGV4dCE9PSExJiYoZy53PWJyW2cudl0pO2JyZWFrO2Nhc2Uic3RyIjpnLnQ9InMiLGcudj1qWzFdO2JyZWFrO2Nhc2UiaXMiOmcudD0icyIsZy52PWpbMV0udDticmVha31pZigobT1mLkNlbGxYZltqWzBdLmlTdHlsZVJlZl0pJiZ1ZihnLG0ubnVtRm10SWQsbnVsbCxzLGksZixRPjAsbSxqWzBdLmlTdHlsZVJlZikscD1qWzBdLmM9PS0xP3ArMTpqWzBdLmMscy5kZW5zZT8oY1siIWRhdGEiXVtkXXx8KGNbIiFkYXRhIl1bZF09W10pLGNbIiFkYXRhIl1bZF1bcF09Zyk6Y1tIZShwKSt5XT1nLHMuY2VsbEZvcm11bGEpe2ZvcihOPSExLGI9MDtiPEkubGVuZ3RoOysrYil7dmFyIG1lPUlbYl07aC5yPj1tZVswXS5zLnImJmgucjw9bWVbMF0uZS5yJiZwPj1tZVswXS5zLmMmJnA8PW1lWzBdLmUuYyYmKGcuRj1JZShtZVswXSksTj0hMCl9IU4mJmoubGVuZ3RoPjMmJihnLmY9alszXSl9aWYobC5zLnI+aC5yJiYobC5zLnI9aC5yKSxsLnMuYz5wJiYobC5zLmM9cCksbC5lLnI8aC5yJiYobC5lLnI9aC5yKSxsLmUuYzxwJiYobC5lLmM9cCkscy5jZWxsRGF0ZXMmJm0mJmcudD09Im4iJiZacihUZVttLm51bUZtdElkXSkpe3ZhciBaPWNhKGcuditRKTtaJiYoZy50PSJkIixnLnY9bmV3IERhdGUoRGF0ZS5VVEMoWi55LFoubS0xLFouZCxaLkgsWi5NLFouUyxaLnUpKSl9bGUmJihsZS50eXBlPT0iWExEQVBSIiYmKGcuRD0hMCksbGU9dm9pZCAwKTticmVhaztjYXNlIDE6Y2FzZSAxMjppZighcy5zaGVldFN0dWJzfHx1KWJyZWFrO2c9e3Q6InoiLHY6dm9pZCAwfSxwPWpbMF0uYz09LTE/cCsxOmpbMF0uYyxzLmRlbnNlPyhjWyIhZGF0YSJdW2RdfHwoY1siIWRhdGEiXVtkXT1bXSksY1siIWRhdGEiXVtkXVtwXT1nKTpjW0hlKHApK3ldPWcsbC5zLnI+aC5yJiYobC5zLnI9aC5yKSxsLnMuYz5wJiYobC5zLmM9cCksbC5lLnI8aC5yJiYobC5lLnI9aC5yKSxsLmUuYzxwJiYobC5lLmM9cCksbGUmJihsZS50eXBlPT0iWExEQVBSIiYmKGcuRD0hMCksbGU9dm9pZCAwKTticmVhaztjYXNlIDE3NjpQLnB1c2goaik7YnJlYWs7Y2FzZSA0OTpsZT0oKHMueGxtZXRhfHx7fSkuQ2VsbHx8W10pW2otMV07YnJlYWs7Y2FzZSA0OTQ6dmFyIE9lPXRbIiFpZCJdW2oucmVsSWRdO2ZvcihPZT8oai5UYXJnZXQ9T2UuVGFyZ2V0LGoubG9jJiYoai5UYXJnZXQrPSIjIitqLmxvYyksai5SZWw9T2UpOmoucmVsSWQ9PSIiJiYoai5UYXJnZXQ9IiMiK2oubG9jKSxkPWoucmZ4LnMucjtkPD1qLnJmeC5lLnI7KytkKWZvcihwPWoucmZ4LnMuYztwPD1qLnJmeC5lLmM7KytwKXMuZGVuc2U/KGNbIiFkYXRhIl1bZF18fChjWyIhZGF0YSJdW2RdPVtdKSxjWyIhZGF0YSJdW2RdW3BdfHwoY1siIWRhdGEiXVtkXVtwXT17dDoieiIsdjp2b2lkIDB9KSxjWyIhZGF0YSJdW2RdW3BdLmw9aik6KHc9SGUocCkrR2UoZCksY1t3XXx8KGNbd109e3Q6InoiLHY6dm9pZCAwfSksY1t3XS5sPWopO2JyZWFrO2Nhc2UgNDI2OmlmKCFzLmNlbGxGb3JtdWxhKWJyZWFrO0kucHVzaChqKSxSPXMuZGVuc2U/Y1siIWRhdGEiXVtkXVtwXTpjW0hlKHApK3ldLFIuZj13cihqWzFdLGwse3I6aC5yLGM6cH0sTCxzKSxSLkY9SWUoalswXSk7YnJlYWs7Y2FzZSA0Mjc6aWYoIXMuY2VsbEZvcm11bGEpYnJlYWs7QltEZShqWzBdLnMpXT1qWzFdLFI9cy5kZW5zZT9jWyIhZGF0YSJdW2RdW3BdOmNbSGUocCkreV0sUi5mPXdyKGpbMV0sbCx7cjpoLnIsYzpwfSxMLHMpO2JyZWFrO2Nhc2UgNjA6aWYoIXMuY2VsbFN0eWxlcylicmVhaztmb3IoO2ouZT49ai5zOylpZVtqLmUtLV09e3dpZHRoOmoudy8yNTYsaGlkZGVuOiEhKGouZmxhZ3MmMSksbGV2ZWw6ai5sZXZlbH0scXx8KHE9ITAsdm4oai53LzI1NikpLHV0KGllW2ouZSsxXSk7YnJlYWs7Y2FzZSA1NTE6aiYmKGNbIiFsZWdyZWwiXT1qKTticmVhaztjYXNlIDE2MTpjWyIhYXV0b2ZpbHRlciJdPXtyZWY6SWUoail9O2JyZWFrO2Nhc2UgNDc2OmNbIiFtYXJnaW5zIl09ajticmVhaztjYXNlIDE0NzpuLlNoZWV0c1tyXXx8KG4uU2hlZXRzW3JdPXt9KSxqLm5hbWUmJihuLlNoZWV0c1tyXS5Db2RlTmFtZT1qLm5hbWUpLChqLmFib3ZlfHxqLmxlZnQpJiYoY1siIW91dGxpbmUiXT17YWJvdmU6ai5hYm92ZSxsZWZ0OmoubGVmdH0pO2JyZWFrO2Nhc2UgMTM3Om4uVmlld3N8fChuLlZpZXdzPVt7fV0pLG4uVmlld3NbMF18fChuLlZpZXdzWzBdPXt9KSxqLlJUTCYmKG4uVmlld3NbMF0uUlRMPSEwKTticmVhaztjYXNlIDQ4NTpicmVhaztjYXNlIDY0OmNhc2UgMTA1MzpicmVhaztjYXNlIDE1MTpicmVhaztjYXNlIDE1MjpjYXNlIDE3NTpjYXNlIDY0NDpjYXNlIDYyNTpjYXNlIDU2MjpjYXNlIDM5NjpjYXNlIDExMTI6Y2FzZSAxMTQ2OmNhc2UgNDcxOmNhc2UgMTA1MDpjYXNlIDY0OTpjYXNlIDExMDU6Y2FzZSA1ODk6Y2FzZSA2MDc6Y2FzZSA1NjQ6Y2FzZSAxMDU1OmNhc2UgMTY4OmNhc2UgMTc0OmNhc2UgMTE4MDpjYXNlIDQ5OTpjYXNlIDUwNzpjYXNlIDU1MDpjYXNlIDE3MTpjYXNlIDE2NzpjYXNlIDExNzc6Y2FzZSAxNjk6Y2FzZSAxMTgxOmNhc2UgNTUyOmNhc2UgNjYxOmNhc2UgNjM5OmNhc2UgNDc4OmNhc2UgNTM3OmNhc2UgNDc3OmNhc2UgNTM2OmNhc2UgMTEwMzpjYXNlIDY4MDpjYXNlIDExMDQ6Y2FzZSAxMDI0OmNhc2UgNjYzOmNhc2UgNTM1OmNhc2UgNjc4OmNhc2UgNTA0OmNhc2UgMTA0MzpjYXNlIDQyODpjYXNlIDE3MDpjYXNlIDMwNzI6Y2FzZSA1MDpjYXNlIDIwNzA6Y2FzZSAxMDQ1OmJyZWFrO2Nhc2UgMzU6dT0hMDticmVhaztjYXNlIDM2OnU9ITE7YnJlYWs7Y2FzZSAzNzp1PSEwO2JyZWFrO2Nhc2UgMzg6dT0hMTticmVhaztkZWZhdWx0OmlmKCF5ZS5UKXtpZighdXx8cy5XVEYpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAweCIrYmUudG9TdHJpbmcoMTYpKX19fSxzKSxkZWxldGUgcy5zdXBib29rcyxkZWxldGUgc1siIXJvdyJdLCFjWyIhcmVmIl0mJihsLnMucjwyZTZ8fG8mJihvLmUucj4wfHxvLmUuYz4wfHxvLnMucj4wfHxvLnMuYz4wKSkmJihjWyIhcmVmIl09SWUob3x8bCkpLHMuc2hlZXRSb3dzJiZjWyIhcmVmIl0pe3ZhciBnZT1aZShjWyIhcmVmIl0pO3Muc2hlZXRSb3dzPD0rZ2UuZS5yJiYoZ2UuZS5yPXMuc2hlZXRSb3dzLTEsZ2UuZS5yPmwuZS5yJiYoZ2UuZS5yPWwuZS5yKSxnZS5lLnI8Z2Uucy5yJiYoZ2Uucy5yPWdlLmUuciksZ2UuZS5jPmwuZS5jJiYoZ2UuZS5jPWwuZS5jKSxnZS5lLmM8Z2Uucy5jJiYoZ2Uucy5jPWdlLmUuYyksY1siIWZ1bGxyZWYiXT1jWyIhcmVmIl0sY1siIXJlZiJdPUllKGdlKSl9cmV0dXJuIFAubGVuZ3RoPjAmJihjWyIhbWVyZ2VzIl09UCksaWUubGVuZ3RoPjAmJihjWyIhY29scyJdPWllKSxuZS5sZW5ndGg+MCYmKGNbIiFyb3dzIl09bmUpLHRbIiFpZCJdW2NbIiFsZWdyZWwiXV0mJihjWyIhbGVnZHJhd2VsIl09dFsiIWlkIl1bY1siIWxlZ3JlbCJdXSksY31mdW5jdGlvbiBBbihlKXt2YXIgYT1bXSxyPWUubWF0Y2goL148YzpudW1DYWNoZT4vKSx0OyhlLm1hdGNoKC88YzpwdCBpZHg9IihcZCopIltePD5cL10qPjxjOnY+KFtePF0qKTxcL2M6dj48XC9jOnB0Pi9tZyl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3ZhciBmPWkubWF0Y2goLzxjOnB0IGlkeD0iKFxkKikiW148PlwvXSo+PGM6dj4oW148XSopPFwvYzp2PjxcL2M6cHQ+Lyk7ZiYmKGFbK2ZbMV1dPXI/K2ZbMl06ZlsyXSl9KTt2YXIgbj1DZSgoSGEoZSwiYzpmb3JtYXRDb2RlIil8fFsiIiwiR2VuZXJhbCJdKVsxXSk7cmV0dXJuKHVhKGUsIjxjOmY+IiwiPC9jOmY+Iil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3Q9aS5yZXBsYWNlKC88W148Pl0qPi9nLCIiKX0pLFthLG4sdF19ZnVuY3Rpb24gYXYoZSl7dmFyIGE9dWEoZSwiPGM6bnVtQ2FjaGU+IiwiPC9jOm51bUNhY2hlPiIpO2lmKGEmJmEubGVuZ3RoKXt2YXIgcj1BbihhWzBdKTtyZXR1cm57dmFsdWVzOnJbMF0sZm9ybWF0Q29kZTpyWzFdLGZvcm11bGE6clsyXX19dmFyIHQ9dWEoZSwiPGM6c3RyQ2FjaGU+IiwiPC9jOnN0ckNhY2hlPiIpO2lmKHQmJnQubGVuZ3RoKXt2YXIgbj1Bbih0WzBdKTtyZXR1cm57dmFsdWVzOm5bMF0sZm9ybWF0Q29kZTpuWzFdLGZvcm11bGE6blsyXX19dmFyIGk9KHVhKGUsIjxjOmY+IiwiPC9jOmY+Iil8fFtdKVswXTtyZXR1cm57dmFsdWVzOltdLGZvcm11bGE6aT9pLnJlcGxhY2UoLzxbXjw+XSo+L2csIiIpOnZvaWQgMH19ZnVuY3Rpb24gdHYoZSl7dmFyIGE9dWEoZSwiPGM6dHg+IiwiPC9jOnR4PiIpO2lmKCFhfHwhYS5sZW5ndGgpcmV0dXJuIiI7dmFyIHI9TGUoYVswXSwidiIpO2lmKHImJnJbMV0pcmV0dXJuIENlKHJbMV0pO3ZhciB0PUxlKGFbMF0sImYiKTtyZXR1cm4gdCYmdFsxXT9DZSh0WzFdKToiIn1mdW5jdGlvbiBudihlKXt2YXIgYT17bmFtZTp0dihlKX0scj1MZShlLCJpZHgiKTtyJiYoYS5pZHg9KyhvZShyWzBdKS52YWx8fDApKTt2YXIgdD1MZShlLCJvcmRlciIpO3JldHVybiB0JiYoYS5vcmRlcj0rKG9lKHRbMF0pLnZhbHx8MCkpLFsiY2F0IiwidmFsIiwieFZhbCIsInlWYWwiLCJidWJibGVTaXplIl0uZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgaT1MZShlLG4pO2kmJihhW25dPWF2KGlbMF0pKX0pLGEudmFsJiZhLnZhbC52YWx1ZXM/YS5kYXRhPWEudmFsLnZhbHVlczphLnlWYWwmJmEueVZhbC52YWx1ZXMmJihhLmRhdGE9YS55VmFsLnZhbHVlcyksYX1mdW5jdGlvbiBpdihlKXt2YXIgYT1MZShlLCJ0aXRsZSIpO2lmKCFhKXJldHVybiIiO3ZhciByPVtdO3JldHVybihhWzBdLm1hdGNoKC88YTp0XGJbXj5dKj5bXHNcU10qPzxcL2E6dD4vZyl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3IucHVzaChDZSh0LnJlcGxhY2UoLzxbXj5dKj4vZywiIikpKX0pLHIuam9pbigiIil9ZnVuY3Rpb24gc3YoZSxhLHIpe3ZhciB0PXt0YXJnZXQ6YSxyYXc6ZSxyZWxzOnIsc2VyaWVzOltdfTt0LnRpdGxlPWl2KGUpO3ZhciBuPUxlKGUsInBsb3RBcmVhIiksaT1uP25bMV06ZTtbImJhckNoYXJ0IiwibGluZUNoYXJ0IiwiYXJlYUNoYXJ0Iiwic2NhdHRlckNoYXJ0IiwicGllQ2hhcnQiLCJkb3VnaG51dENoYXJ0IiwiYnViYmxlQ2hhcnQiXS5mb3JFYWNoKGZ1bmN0aW9uKGMpeyh1YShpLCI8YzoiK2MrIj4iLCI8L2M6IitjKyI+Iil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKG8pe3QudHlwZXx8KHQudHlwZT1jKTt2YXIgbD1MZShvLCJncm91cGluZyIpO2wmJih0Lmdyb3VwaW5nPW9lKGxbMF0pLnZhbCksKHVhKG8sIjxjOnNlcj4iLCI8L2M6c2VyPiIpfHxbXSkuZm9yRWFjaChmdW5jdGlvbih1KXt2YXIgeD1udih1KTt4LmNoYXJ0VHlwZT1jLHQuc2VyaWVzLnB1c2goeCl9KX0pfSk7dmFyIGY9TGUoZSwibGVnZW5kIik7aWYoZil7dC5sZWdlbmQ9e307dmFyIHM9TGUoZlswXSwibGVnZW5kUG9zIik7cyYmKHQubGVnZW5kLnBvc2l0aW9uPW9lKHNbMF0pLnZhbCl9cmV0dXJuIHR9ZnVuY3Rpb24gZGYoZSxhLHIsdCxuLGkpe3ZhciBmPWl8fHsiIXR5cGUiOiJjaGFydCJ9O2lmKCFlKXJldHVybiBpO2ZbIiFjaGFydCJdPXN2KGUsYSx0KTt2YXIgcz0wLGM9MCxvPSJBIixsPXtzOntyOjJlNixjOjJlNn0sZTp7cjowLGM6MH19O3JldHVybih1YShlLCI8YzpudW1DYWNoZT4iLCI8L2M6bnVtQ2FjaGU+Iil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHUpe3ZhciB4PUFuKHUpO2wucy5yPWwucy5jPTAsbC5lLmM9cyxvPUhlKHMpLHhbMF0uZm9yRWFjaChmdW5jdGlvbihoLGcpe2ZbIiFkYXRhIl0/KGZbIiFkYXRhIl1bZ118fChmWyIhZGF0YSJdW2ddPVtdKSxmWyIhZGF0YSJdW2ddW3NdPXt0OiJuIix2Omgsejp4WzFdfSk6ZltvK0dlKGcpXT17dDoibiIsdjpoLHo6eFsxXX0sYz1nfSksbC5lLnI8YyYmKGwuZS5yPWMpLCsrc30pLHM+MCYmKGZbIiFyZWYiXT1JZShsKSksZn1mdW5jdGlvbiBmdihlLGEscix0LG4pe2lmKCFlKXJldHVybiBlO3R8fCh0PXsiIWlkIjp7fX0pO3ZhciBpPXsiIXR5cGUiOiJjaGFydCIsIiFkcmF3ZWwiOm51bGwsIiFyZWwiOiIifSxmLHM9ZS5tYXRjaChoZik7cmV0dXJuIHMmJkVuKHNbMF0saSxuLHIpLChmPWUubWF0Y2goL2RyYXdpbmcgcjppZD0iKC4qPykiLykpJiYoaVsiIXJlbCJdPWZbMV0pLHRbIiFpZCJdW2lbIiFyZWwiXV0mJihpWyIhZHJhd2VsIl09dFsiIWlkIl1baVsiIXJlbCJdXSksaX1mdW5jdGlvbiBjdihlLGEpe2UubCs9MTA7dmFyIHI9bXIoZSk7cmV0dXJue25hbWU6cn19ZnVuY3Rpb24gb3YoZSxhLHIsdCxuKXtpZighZSlyZXR1cm4gZTt0fHwodD17IiFpZCI6e319KTt2YXIgaT17IiF0eXBlIjoiY2hhcnQiLCIhZHJhd2VsIjpudWxsLCIhcmVsIjoiIn0sZj0hMTtyZXR1cm4gdmEoZSxmdW5jdGlvbihjLG8sbCl7c3dpdGNoKGwpe2Nhc2UgNTUwOmlbIiFyZWwiXT1jO2JyZWFrO2Nhc2UgNjUxOm4uU2hlZXRzW3JdfHwobi5TaGVldHNbcl09e30pLGMubmFtZSYmKG4uU2hlZXRzW3JdLkNvZGVOYW1lPWMubmFtZSk7YnJlYWs7Y2FzZSA1NjI6Y2FzZSA2NTI6Y2FzZSA2Njk6Y2FzZSA2Nzk6Y2FzZSA1NTE6Y2FzZSA1NTI6Y2FzZSA0NzY6Y2FzZSAzMDcyOmJyZWFrO2Nhc2UgMzU6Zj0hMDticmVhaztjYXNlIDM2OmY9ITE7YnJlYWs7Y2FzZSAzNzpicmVhaztjYXNlIDM4OmJyZWFrO2RlZmF1bHQ6aWYoIShvLlQ+MCkpe2lmKCEoby5UPDApKXtpZighZnx8YS5XVEYpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAweCIrbC50b1N0cmluZygxNikpfX19fSxhKSx0WyIhaWQiXVtpWyIhcmVsIl1dJiYoaVsiIWRyYXdlbCJdPXRbIiFpZCJdW2lbIiFyZWwiXV0pLGl9dmFyIHZmPVtbImFsbG93UmVmcmVzaFF1ZXJ5IiwhMSwiYm9vbCJdLFsiYXV0b0NvbXByZXNzUGljdHVyZXMiLCEwLCJib29sIl0sWyJiYWNrdXBGaWxlIiwhMSwiYm9vbCJdLFsiY2hlY2tDb21wYXRpYmlsaXR5IiwhMSwiYm9vbCJdLFsiQ29kZU5hbWUiLCIiXSxbImRhdGUxOTA0IiwhMSwiYm9vbCJdLFsiZGVmYXVsdFRoZW1lVmVyc2lvbiIsMCwiaW50Il0sWyJmaWx0ZXJQcml2YWN5IiwhMSwiYm9vbCJdLFsiaGlkZVBpdm90RmllbGRMaXN0IiwhMSwiYm9vbCJdLFsicHJvbXB0ZWRTb2x1dGlvbnMiLCExLCJib29sIl0sWyJwdWJsaXNoSXRlbXMiLCExLCJib29sIl0sWyJyZWZyZXNoQWxsQ29ubmVjdGlvbnMiLCExLCJib29sIl0sWyJzYXZlRXh0ZXJuYWxMaW5rVmFsdWVzIiwhMCwiYm9vbCJdLFsic2hvd0JvcmRlclVuc2VsZWN0ZWRUYWJsZXMiLCEwLCJib29sIl0sWyJzaG93SW5rQW5ub3RhdGlvbiIsITAsImJvb2wiXSxbInNob3dPYmplY3RzIiwiYWxsIl0sWyJzaG93UGl2b3RDaGFydEZpbHRlciIsITEsImJvb2wiXSxbInVwZGF0ZUxpbmtzIiwidXNlclNldCJdXSxsdj1bWyJhY3RpdmVUYWIiLDAsImludCJdLFsiYXV0b0ZpbHRlckRhdGVHcm91cGluZyIsITAsImJvb2wiXSxbImZpcnN0U2hlZXQiLDAsImludCJdLFsibWluaW1pemVkIiwhMSwiYm9vbCJdLFsic2hvd0hvcml6b250YWxTY3JvbGwiLCEwLCJib29sIl0sWyJzaG93U2hlZXRUYWJzIiwhMCwiYm9vbCJdLFsic2hvd1ZlcnRpY2FsU2Nyb2xsIiwhMCwiYm9vbCJdLFsidGFiUmF0aW8iLDYwMCwiaW50Il0sWyJ2aXNpYmlsaXR5IiwidmlzaWJsZSJdXSx1dj1bXSxodj1bWyJjYWxjQ29tcGxldGVkIiwidHJ1ZSJdLFsiY2FsY01vZGUiLCJhdXRvIl0sWyJjYWxjT25TYXZlIiwidHJ1ZSJdLFsiY29uY3VycmVudENhbGMiLCJ0cnVlIl0sWyJmdWxsQ2FsY09uTG9hZCIsImZhbHNlIl0sWyJmdWxsUHJlY2lzaW9uIiwidHJ1ZSJdLFsiaXRlcmF0ZSIsImZhbHNlIl0sWyJpdGVyYXRlQ291bnQiLCIxMDAiXSxbIml0ZXJhdGVEZWx0YSIsIjAuMDAxIl0sWyJyZWZNb2RlIiwiQTEiXV07ZnVuY3Rpb24gcGYoZSxhKXtmb3IodmFyIHI9MDtyIT1lLmxlbmd0aDsrK3IpZm9yKHZhciB0PWVbcl0sbj0wO24hPWEubGVuZ3RoOysrbil7dmFyIGk9YVtuXTtpZih0W2lbMF1dPT1udWxsKXRbaVswXV09aVsxXTtlbHNlIHN3aXRjaChpWzJdKXtjYXNlImJvb2wiOnR5cGVvZiB0W2lbMF1dPT0ic3RyaW5nIiYmKHRbaVswXV09RmUodFtpWzBdXSkpO2JyZWFrO2Nhc2UiaW50Ijp0eXBlb2YgdFtpWzBdXT09InN0cmluZyImJih0W2lbMF1dPXBhcnNlSW50KHRbaVswXV0sMTApKTticmVha319fWZ1bmN0aW9uIGdmKGUsYSl7Zm9yKHZhciByPTA7ciE9YS5sZW5ndGg7KytyKXt2YXIgdD1hW3JdO2lmKGVbdFswXV09PW51bGwpZVt0WzBdXT10WzFdO2Vsc2Ugc3dpdGNoKHRbMl0pe2Nhc2UiYm9vbCI6dHlwZW9mIGVbdFswXV09PSJzdHJpbmciJiYoZVt0WzBdXT1GZShlW3RbMF1dKSk7YnJlYWs7Y2FzZSJpbnQiOnR5cGVvZiBlW3RbMF1dPT0ic3RyaW5nIiYmKGVbdFswXV09cGFyc2VJbnQoZVt0WzBdXSwxMCkpO2JyZWFrfX19ZnVuY3Rpb24gbWYoZSl7Z2YoZS5XQlByb3BzLHZmKSxnZihlLkNhbGNQcixodikscGYoZS5XQlZpZXcsbHYpLHBmKGUuU2hlZXRzLHV2KSx4dC5kYXRlMTkwND1GZShlLldCUHJvcHMuZGF0ZTE5MDQpfXZhciB4dj0iOl1bKj8vXFwiLnNwbGl0KCIiKTtmdW5jdGlvbiBkdihlLGEpe3RyeXtpZihlPT0iIil0aHJvdyBuZXcgRXJyb3IoIlNoZWV0IG5hbWUgY2Fubm90IGJlIGJsYW5rIik7aWYoZS5sZW5ndGg+MzEpdGhyb3cgbmV3IEVycm9yKCJTaGVldCBuYW1lIGNhbm5vdCBleGNlZWQgMzEgY2hhcnMiKTtpZihlLmNoYXJDb2RlQXQoMCk9PTM5fHxlLmNoYXJDb2RlQXQoZS5sZW5ndGgtMSk9PTM5KXRocm93IG5ldyBFcnJvcigiU2hlZXQgbmFtZSBjYW5ub3Qgc3RhcnQgb3IgZW5kIHdpdGggYXBvc3Ryb3BoZSAoJykiKTtpZihlLnRvTG93ZXJDYXNlKCk9PSJoaXN0b3J5Iil0aHJvdyBuZXcgRXJyb3IoIlNoZWV0IG5hbWUgY2Fubm90IGJlICdIaXN0b3J5JyIpO3h2LmZvckVhY2goZnVuY3Rpb24ocil7aWYoZS5pbmRleE9mKHIpIT0tMSl0aHJvdyBuZXcgRXJyb3IoIlNoZWV0IG5hbWUgY2Fubm90IGNvbnRhaW4gOiBcXCAvID8gKiBbIF0iKX0pfWNhdGNoKHIpe2lmKGEpcmV0dXJuITE7dGhyb3cgcn1yZXR1cm4hMH12YXIgdnY9Lzxcdys6d29ya2Jvb2svO2Z1bmN0aW9uIHB2KGUsYSl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgZmluZCBmaWxlIik7dmFyIHI9e0FwcFZlcnNpb246e30sV0JQcm9wczp7fSxXQlZpZXc6W10sU2hlZXRzOltdLENhbGNQcjp7fSxOYW1lczpbXSx4bWxuczoiIn0sdD0hMSxuPSJ4bWxucyIsaT17fSxmPTA7aWYoZS5yZXBsYWNlKG5yLGZ1bmN0aW9uKGMsbyl7dmFyIGw9b2UoYyk7c3dpdGNoKEFyKGxbMF0pKXtjYXNlIjw/eG1sIjpicmVhaztjYXNlIjx3b3JrYm9vayI6Yy5tYXRjaCh2dikmJihuPSJ4bWxucyIrYy5tYXRjaCgvPChcdyspOi8pWzFdKSxyLnhtbG5zPWxbbl07YnJlYWs7Y2FzZSI8L3dvcmtib29rPiI6YnJlYWs7Y2FzZSI8ZmlsZVZlcnNpb24iOmRlbGV0ZSBsWzBdLHIuQXBwVmVyc2lvbj1sO2JyZWFrO2Nhc2UiPGZpbGVWZXJzaW9uLz4iOmNhc2UiPC9maWxlVmVyc2lvbj4iOmJyZWFrO2Nhc2UiPGZpbGVTaGFyaW5nIjpicmVhaztjYXNlIjxmaWxlU2hhcmluZy8+IjpicmVhaztjYXNlIjx3b3JrYm9va1ByIjpjYXNlIjx3b3JrYm9va1ByLz4iOnZmLmZvckVhY2goZnVuY3Rpb24odSl7aWYobFt1WzBdXSE9bnVsbClzd2l0Y2godVsyXSl7Y2FzZSJib29sIjpyLldCUHJvcHNbdVswXV09RmUobFt1WzBdXSk7YnJlYWs7Y2FzZSJpbnQiOnIuV0JQcm9wc1t1WzBdXT1wYXJzZUludChsW3VbMF1dLDEwKTticmVhaztkZWZhdWx0OnIuV0JQcm9wc1t1WzBdXT1sW3VbMF1dfX0pLGwuY29kZU5hbWUmJihyLldCUHJvcHMuQ29kZU5hbWU9VmUobC5jb2RlTmFtZSkpO2JyZWFrO2Nhc2UiPC93b3JrYm9va1ByPiI6YnJlYWs7Y2FzZSI8d29ya2Jvb2tQcm90ZWN0aW9uIjpicmVhaztjYXNlIjx3b3JrYm9va1Byb3RlY3Rpb24vPiI6YnJlYWs7Y2FzZSI8Ym9va1ZpZXdzIjpjYXNlIjxib29rVmlld3M+IjpjYXNlIjwvYm9va1ZpZXdzPiI6YnJlYWs7Y2FzZSI8d29ya2Jvb2tWaWV3IjpjYXNlIjx3b3JrYm9va1ZpZXcvPiI6ZGVsZXRlIGxbMF0sci5XQlZpZXcucHVzaChsKTticmVhaztjYXNlIjwvd29ya2Jvb2tWaWV3PiI6YnJlYWs7Y2FzZSI8c2hlZXRzIjpjYXNlIjxzaGVldHM+IjpjYXNlIjwvc2hlZXRzPiI6YnJlYWs7Y2FzZSI8c2hlZXQiOnN3aXRjaChsLnN0YXRlKXtjYXNlImhpZGRlbiI6bC5IaWRkZW49MTticmVhaztjYXNlInZlcnlIaWRkZW4iOmwuSGlkZGVuPTI7YnJlYWs7ZGVmYXVsdDpsLkhpZGRlbj0wfWRlbGV0ZSBsLnN0YXRlLGwubmFtZT1DZShWZShsLm5hbWUpKSxkZWxldGUgbFswXSxyLlNoZWV0cy5wdXNoKGwpO2JyZWFrO2Nhc2UiPC9zaGVldD4iOmJyZWFrO2Nhc2UiPGZ1bmN0aW9uR3JvdXBzIjpjYXNlIjxmdW5jdGlvbkdyb3Vwcy8+IjpicmVhaztjYXNlIjxmdW5jdGlvbkdyb3VwIjpicmVhaztjYXNlIjxleHRlcm5hbFJlZmVyZW5jZXMiOmNhc2UiPC9leHRlcm5hbFJlZmVyZW5jZXM+IjpjYXNlIjxleHRlcm5hbFJlZmVyZW5jZXM+IjpicmVhaztjYXNlIjxleHRlcm5hbFJlZmVyZW5jZSI6YnJlYWs7Y2FzZSI8ZGVmaW5lZE5hbWVzLz4iOmJyZWFrO2Nhc2UiPGRlZmluZWROYW1lcz4iOmNhc2UiPGRlZmluZWROYW1lcyI6dD0hMDticmVhaztjYXNlIjwvZGVmaW5lZE5hbWVzPiI6dD0hMTticmVhaztjYXNlIjxkZWZpbmVkTmFtZSI6aT17fSxpLk5hbWU9VmUobC5uYW1lKSxsLmNvbW1lbnQmJihpLkNvbW1lbnQ9bC5jb21tZW50KSxsLmxvY2FsU2hlZXRJZCYmKGkuU2hlZXQ9K2wubG9jYWxTaGVldElkKSxGZShsLmhpZGRlbnx8IjAiKSYmKGkuSGlkZGVuPSEwKSxmPW8rYy5sZW5ndGg7YnJlYWs7Y2FzZSI8L2RlZmluZWROYW1lPiI6aS5SZWY9Q2UoVmUoZS5zbGljZShmLG8pKSksci5OYW1lcy5wdXNoKGkpO2JyZWFrO2Nhc2UiPGRlZmluZWROYW1lLz4iOmJyZWFrO2Nhc2UiPGNhbGNQciI6ZGVsZXRlIGxbMF0sci5DYWxjUHI9bDticmVhaztjYXNlIjxjYWxjUHIvPiI6ZGVsZXRlIGxbMF0sci5DYWxjUHI9bDticmVhaztjYXNlIjwvY2FsY1ByPiI6YnJlYWs7Y2FzZSI8b2xlU2l6ZSI6YnJlYWs7Y2FzZSI8Y3VzdG9tV29ya2Jvb2tWaWV3cz4iOmNhc2UiPC9jdXN0b21Xb3JrYm9va1ZpZXdzPiI6Y2FzZSI8Y3VzdG9tV29ya2Jvb2tWaWV3cyI6YnJlYWs7Y2FzZSI8Y3VzdG9tV29ya2Jvb2tWaWV3IjpjYXNlIjwvY3VzdG9tV29ya2Jvb2tWaWV3PiI6YnJlYWs7Y2FzZSI8cGl2b3RDYWNoZXM+IjpjYXNlIjwvcGl2b3RDYWNoZXM+IjpjYXNlIjxwaXZvdENhY2hlcyI6YnJlYWs7Y2FzZSI8cGl2b3RDYWNoZSI6YnJlYWs7Y2FzZSI8c21hcnRUYWdQciI6Y2FzZSI8c21hcnRUYWdQci8+IjpicmVhaztjYXNlIjxzbWFydFRhZ1R5cGVzIjpjYXNlIjxzbWFydFRhZ1R5cGVzPiI6Y2FzZSI8L3NtYXJ0VGFnVHlwZXM+IjpicmVhaztjYXNlIjxzbWFydFRhZ1R5cGUiOmJyZWFrO2Nhc2UiPHdlYlB1Ymxpc2hpbmciOmNhc2UiPHdlYlB1Ymxpc2hpbmcvPiI6YnJlYWs7Y2FzZSI8ZmlsZVJlY292ZXJ5UHIiOmNhc2UiPGZpbGVSZWNvdmVyeVByLz4iOmJyZWFrO2Nhc2UiPHdlYlB1Ymxpc2hPYmplY3RzPiI6Y2FzZSI8d2ViUHVibGlzaE9iamVjdHMiOmNhc2UiPC93ZWJQdWJsaXNoT2JqZWN0cz4iOmJyZWFrO2Nhc2UiPHdlYlB1Ymxpc2hPYmplY3QiOmJyZWFrO2Nhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmNhc2UiPGV4dExzdC8+IjpicmVhaztjYXNlIjxleHQiOnQ9ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOnQ9ITE7YnJlYWs7Y2FzZSI8QXJjaElEIjpicmVhaztjYXNlIjxBbHRlcm5hdGVDb250ZW50IjpjYXNlIjxBbHRlcm5hdGVDb250ZW50PiI6dD0hMDticmVhaztjYXNlIjwvQWx0ZXJuYXRlQ29udGVudD4iOnQ9ITE7YnJlYWs7Y2FzZSI8cmV2aXNpb25QdHIiOmJyZWFrO2RlZmF1bHQ6aWYoIXQmJmEuV1RGKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrbFswXSsiIGluIHdvcmtib29rIil9cmV0dXJuIGN9KSxvby5pbmRleE9mKHIueG1sbnMpPT09LTEpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIE5hbWVzcGFjZTogIityLnhtbG5zKTtyZXR1cm4gbWYocikscn1mdW5jdGlvbiBndihlLGEpe3ZhciByPXt9O3JldHVybiByLkhpZGRlbj1lLnJlYWRfc2hpZnQoNCksci5pVGFiSUQ9ZS5yZWFkX3NoaWZ0KDQpLHIuc3RyUmVsSUQ9Y24oZSksci5uYW1lPW1yKGUpLHJ9ZnVuY3Rpb24gbXYoZSxhKXt2YXIgcj17fSx0PWUucmVhZF9zaGlmdCg0KTtyLmRlZmF1bHRUaGVtZVZlcnNpb249ZS5yZWFkX3NoaWZ0KDQpO3ZhciBuPWE+OD9tcihlKToiIjtyZXR1cm4gbi5sZW5ndGg+MCYmKHIuQ29kZU5hbWU9biksci5hdXRvQ29tcHJlc3NQaWN0dXJlcz0hISh0JjY1NTM2KSxyLmJhY2t1cEZpbGU9ISEodCY2NCksci5jaGVja0NvbXBhdGliaWxpdHk9ISEodCY0MDk2KSxyLmRhdGUxOTA0PSEhKHQmMSksci5maWx0ZXJQcml2YWN5PSEhKHQmOCksci5oaWRlUGl2b3RGaWVsZExpc3Q9ISEodCYxMDI0KSxyLnByb21wdGVkU29sdXRpb25zPSEhKHQmMTYpLHIucHVibGlzaEl0ZW1zPSEhKHQmMjA0OCksci5yZWZyZXNoQWxsQ29ubmVjdGlvbnM9ISEodCYyNjIxNDQpLHIuc2F2ZUV4dGVybmFsTGlua1ZhbHVlcz0hISh0JjEyOCksci5zaG93Qm9yZGVyVW5zZWxlY3RlZFRhYmxlcz0hISh0JjQpLHIuc2hvd0lua0Fubm90YXRpb249ISEodCYzMiksci5zaG93T2JqZWN0cz1bImFsbCIsInBsYWNlaG9sZGVycyIsIm5vbmUiXVt0Pj4xMyYzXSxyLnNob3dQaXZvdENoYXJ0RmlsdGVyPSEhKHQmMzI3NjgpLHIudXBkYXRlTGlua3M9WyJ1c2VyU2V0IiwibmV2ZXIiLCJhbHdheXMiXVt0Pj44JjNdLHJ9ZnVuY3Rpb24gX3YoZSxhKXt2YXIgcj17fTtyZXR1cm4gZS5yZWFkX3NoaWZ0KDQpLHIuQXJjaElEPWUucmVhZF9zaGlmdCg0KSxlLmwrPWEtOCxyfWZ1bmN0aW9uIGt2KGUsYSxyKXt2YXIgdD1lLmwrYSxuPWUucmVhZF9zaGlmdCg0KTtlLmwrPTE7dmFyIGk9ZS5yZWFkX3NoaWZ0KDQpLGY9SW8oZSkscyxjPSIiO3RyeXtzPXJkKGUsMCxyKTt0cnl7Yz1kMChlKX1jYXRjaHt9fWNhdGNoe2NvbnNvbGUuZXJyb3IoIkNvdWxkIG5vdCBwYXJzZSBkZWZpbmVkIG5hbWUgIitmKX1uJjMyJiYoZj0iX3hsbm0uIitmKSxlLmw9dDt2YXIgbz17TmFtZTpmLFB0ZzpzLEZsYWdzOm59O3JldHVybiBpPDI2ODQzNTQ1NSYmKG8uU2hlZXQ9aSksYyYmKG8uQ29tbWVudD1jKSxvfWZ1bmN0aW9uIHd2KGUsYSl7dmFyIHI9e0FwcFZlcnNpb246e30sV0JQcm9wczp7fSxXQlZpZXc6W10sU2hlZXRzOltdLENhbGNQcjp7fSx4bWxuczoiIn0sdD1bXSxuPSExO2F8fChhPXt9KSxhLmJpZmY9MTI7dmFyIGk9W10sZj1bW11dO3JldHVybiBmLlNoZWV0TmFtZXM9W10sZi5YVEk9W10sSTBbMTZdPXtuOiJCcnRGUlRBcmNoSUQkIixmOl92fSx2YShlLGZ1bmN0aW9uKGMsbyxsKXtzd2l0Y2gobCl7Y2FzZSAxNTY6Zi5TaGVldE5hbWVzLnB1c2goYy5uYW1lKSxyLlNoZWV0cy5wdXNoKGMpO2JyZWFrO2Nhc2UgMTUzOnIuV0JQcm9wcz1jO2JyZWFrO2Nhc2UgMzk6Yy5TaGVldCE9bnVsbCYmKGEuU0lEPWMuU2hlZXQpLGMuUmVmPWMuUHRnP3dyKGMuUHRnLG51bGwsbnVsbCxmLGEpOiIjUkVGISIsZGVsZXRlIGEuU0lELGRlbGV0ZSBjLlB0ZyxpLnB1c2goYyk7YnJlYWs7Y2FzZSAxMDM2OmJyZWFrO2Nhc2UgMzU3OmNhc2UgMzU4OmNhc2UgMzU1OmNhc2UgNjY3OmZbMF0ubGVuZ3RoP2YucHVzaChbbCxjXSk6ZlswXT1bbCxjXSxmW2YubGVuZ3RoLTFdLlhUST1bXTticmVhaztjYXNlIDM2MjpmLmxlbmd0aD09PTAmJihmWzBdPVtdLGZbMF0uWFRJPVtdKSxmW2YubGVuZ3RoLTFdLlhUST1mW2YubGVuZ3RoLTFdLlhUSS5jb25jYXQoYyksZi5YVEk9Zi5YVEkuY29uY2F0KGMpO2JyZWFrO2Nhc2UgMzYxOmJyZWFrO2Nhc2UgMjA3MTpjYXNlIDE1ODpjYXNlIDE0MzpjYXNlIDY2NDpjYXNlIDM1MzpicmVhaztjYXNlIDMwNzI6Y2FzZSAzMDczOmNhc2UgNTM0OmNhc2UgNjc3OmNhc2UgMTU3OmNhc2UgNjEwOmNhc2UgMjA1MDpjYXNlIDE1NTpjYXNlIDU0ODpjYXNlIDY3NjpjYXNlIDEyODpjYXNlIDY2NTpjYXNlIDIxMjg6Y2FzZSAyMTI1OmNhc2UgNTQ5OmNhc2UgMjA1MzpjYXNlIDU5NjpjYXNlIDIwNzY6Y2FzZSAyMDc1OmNhc2UgMjA4MjpjYXNlIDM5NzpjYXNlIDE1NDpjYXNlIDExMTc6Y2FzZSA1NTM6Y2FzZSAyMDkxOmJyZWFrO2Nhc2UgMzU6dC5wdXNoKGwpLG49ITA7YnJlYWs7Y2FzZSAzNjp0LnBvcCgpLG49ITE7YnJlYWs7Y2FzZSAzNzp0LnB1c2gobCksbj0hMDticmVhaztjYXNlIDM4OnQucG9wKCksbj0hMTticmVhaztjYXNlIDE2OmJyZWFrO2RlZmF1bHQ6aWYoIW8uVCl7aWYoIW58fGEuV1RGJiZ0W3QubGVuZ3RoLTFdIT0zNyYmdFt0Lmxlbmd0aC0xXSE9MzUpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAweCIrbC50b1N0cmluZygxNikpfX19LGEpLG1mKHIpLHIuTmFtZXM9aSxyLnN1cGJvb2tzPWYscn1mdW5jdGlvbiBGdihlLGEscil7cmV0dXJuIGEuc2xpY2UoLTQpPT09Ii5iaW4iP3d2KGUscik6cHYoZSxyKX1mdW5jdGlvbiBUdihlLGEscix0LG4saSxmLHMpe3JldHVybiBhLnNsaWNlKC00KT09PSIuYmluIj9ydihlLHQscixuLGksZixzKTpkZChlLHQscixuLGksZixzKX1mdW5jdGlvbiBFdihlLGEscix0LG4saSxmLHMpe3JldHVybiBhLnNsaWNlKC00KT09PSIuYmluIj9vdihlLHQscixuLGkpOmZ2KGUsdCxyLG4saSl9ZnVuY3Rpb24gQXYoZSxhLHIsdCxuLGksZixzKXtyZXR1cm4gYS5zbGljZSgtNCk9PT0iLmJpbiI/UjEoKTpPMSgpfWZ1bmN0aW9uIHl2KGUsYSxyLHQsbixpLGYscyl7cmV0dXJuIGEuc2xpY2UoLTQpPT09Ii5iaW4iP0kxKCk6RDEoKX1mdW5jdGlvbiBTdihlLGEscix0KXtyZXR1cm4gYS5zbGljZSgtNCk9PT0iLmJpbiI/JGgoZSxyLHQpOkhoKGUscix0KX1mdW5jdGlvbiBDdihlLGEscil7cmV0dXJuIGEuc2xpY2UoLTQpPT09Ii5iaW4iP3p1KGUscik6R3UoZSxyKX1mdW5jdGlvbiBidihlLGEscil7cmV0dXJuIGEuc2xpY2UoLTQpPT09Ii5iaW4iP1MxKGUscik6RjEoZSxyKX1mdW5jdGlvbiBJdihlLGEscil7cmV0dXJuIGEuc2xpY2UoLTQpPT09Ii5iaW4iP2gxKGUpOmwxKGUpfWZ1bmN0aW9uIER2KGUsYSxyLHQpe3JldHVybiByLnNsaWNlKC00KT09PSIuYmluIj94MShlLGEscix0KTp2b2lkIDB9ZnVuY3Rpb24gUnYoZSxhLHIpe3JldHVybiBhLnNsaWNlKC00KT09PSIuYmluIj9jMShlLGEscik6bzEoZSxhLHIpfXZhciBfZj0vXGIoKD86XHcrOik/W1x3XSspPSgoPzoiKShbXiJdKikoPzoiKXwoPzonKShbXiddKikoPzonKSkvZyxrZj0vXGIoKD86XHcrOik/W1x3XSspPSgoPzoiKSg/OlteIl0qKSg/OiIpfCg/OicpKD86W14nXSopKD86JykpLztmdW5jdGlvbiBRcihlLGEpe3ZhciByPWUuc3BsaXQoL1xzKy8pLHQ9W107aWYoYXx8KHRbMF09clswXSksci5sZW5ndGg9PT0xKXJldHVybiB0O3ZhciBuPWUubWF0Y2goX2YpLGksZixzLGM7aWYobilmb3IoYz0wO2MhPW4ubGVuZ3RoOysrYylpPW5bY10ubWF0Y2goa2YpLChmPWlbMV0uaW5kZXhPZigiOiIpKT09PS0xP3RbaVsxXV09aVsyXS5zbGljZSgxLGlbMl0ubGVuZ3RoLTEpOihpWzFdLnNsaWNlKDAsNik9PT0ieG1sbnM6Ij9zPSJ4bWxucyIraVsxXS5zbGljZSg2KTpzPWlbMV0uc2xpY2UoZisxKSx0W3NdPWlbMl0uc2xpY2UoMSxpWzJdLmxlbmd0aC0xKSk7cmV0dXJuIHR9ZnVuY3Rpb24gT3YoZSl7dmFyIGE9ZS5zcGxpdCgvXHMrLykscj17fTtpZihhLmxlbmd0aD09PTEpcmV0dXJuIHI7dmFyIHQ9ZS5tYXRjaChfZiksbixpLGYscztpZih0KWZvcihzPTA7cyE9dC5sZW5ndGg7KytzKW49dFtzXS5tYXRjaChrZiksKGk9blsxXS5pbmRleE9mKCI6IikpPT09LTE/cltuWzFdXT1uWzJdLnNsaWNlKDEsblsyXS5sZW5ndGgtMSk6KG5bMV0uc2xpY2UoMCw2KT09PSJ4bWxuczoiP2Y9InhtbG5zIituWzFdLnNsaWNlKDYpOmY9blsxXS5zbGljZShpKzEpLHJbZl09blsyXS5zbGljZSgxLG5bMl0ubGVuZ3RoLTEpKTtyZXR1cm4gcn12YXIgJHQ7ZnVuY3Rpb24gTnYoZSxhLHIpe3ZhciB0PSR0W2VdfHxDZShlKTtyZXR1cm4gdD09PSJHZW5lcmFsIj9QYShhKTpScih0LGEse2RhdGUxOTA0OiEhcn0pfWZ1bmN0aW9uIE12KGUsYSxyLHQpe3ZhciBuPXQ7c3dpdGNoKChyWzBdLm1hdGNoKC9kdDpkdD0iKFtcdy5dKykiLyl8fFsiIiwiIl0pWzFdKXtjYXNlImJvb2xlYW4iOm49RmUodCk7YnJlYWs7Y2FzZSJpMiI6Y2FzZSJpbnQiOm49cGFyc2VJbnQodCwxMCk7YnJlYWs7Y2FzZSJyNCI6Y2FzZSJmbG9hdCI6bj1wYXJzZUZsb2F0KHQpO2JyZWFrO2Nhc2UiZGF0ZSI6Y2FzZSJkYXRlVGltZS50eiI6bj14cih0KTticmVhaztjYXNlImk4IjpjYXNlInN0cmluZyI6Y2FzZSJmaXhlZCI6Y2FzZSJ1dWlkIjpjYXNlImJpbi5iYXNlNjQiOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJiYWQgY3VzdHByb3A6IityWzBdKX1lW0NlKGEpXT1ufWZ1bmN0aW9uIFB2KGUsYSxyLHQpe2lmKGUudCE9PSJ6Iil7aWYoIXJ8fHIuY2VsbFRleHQhPT0hMSl0cnl7ZS50PT09ImUiP2Uudz1lLnd8fGJyW2Uudl06YT09PSJHZW5lcmFsIj9lLnQ9PT0ibiI/KGUudnwwKT09PWUudj9lLnc9ZS52LnRvU3RyaW5nKDEwKTplLnc9eXQoZS52KTplLnc9UGEoZS52KTplLnc9TnYoYXx8IkdlbmVyYWwiLGUudix0KX1jYXRjaChmKXtpZihyLldURil0aHJvdyBmfXRyeXt2YXIgbj0kdFthXXx8YXx8IkdlbmVyYWwiO2lmKHIuY2VsbE5GJiYoZS56PW4pLHIuY2VsbERhdGVzJiZlLnQ9PSJuIiYmWnIobikpe3ZhciBpPWNhKGUudisodD8xNDYyOjApKTtpJiYoZS50PSJkIixlLnY9bmV3IERhdGUoRGF0ZS5VVEMoaS55LGkubS0xLGkuZCxpLkgsaS5NLGkuUyxpLnUpKSl9fWNhdGNoKGYpe2lmKHIuV1RGKXRocm93IGZ9fX1mdW5jdGlvbiBMdihlLGEscil7aWYoci5jZWxsU3R5bGVzJiZhLkludGVyaW9yKXt2YXIgdD1hLkludGVyaW9yO3QuUGF0dGVybiYmKHQucGF0dGVyblR5cGU9SWhbdC5QYXR0ZXJuXXx8dC5QYXR0ZXJuKX1lW2EuSURdPWF9ZnVuY3Rpb24gQnYoZSxhLHIsdCxuLGksZixzLGMsbyxsKXt2YXIgdT0iR2VuZXJhbCIseD10LlN0eWxlSUQsaD17fTtvPW98fHt9O3ZhciBnPVtdLG09MDtmb3IoeD09PXZvaWQgMCYmcyYmKHg9cy5TdHlsZUlEKSx4PT09dm9pZCAwJiZmJiYoeD1mLlN0eWxlSUQpO2lbeF0hPT12b2lkIDA7KXt2YXIgZD1pW3hdO2lmKGQubmYmJih1PWQubmYpLGQuSW50ZXJpb3ImJmcucHVzaChkLkludGVyaW9yKSwhZC5QYXJlbnQpYnJlYWs7eD1kLlBhcmVudH1zd2l0Y2goci5UeXBlKXtjYXNlIkJvb2xlYW4iOnQudD0iYiIsdC52PUZlKGUpO2JyZWFrO2Nhc2UiU3RyaW5nIjp0LnQ9InMiLHQucj1BaShDZShlKSksdC52PWUuaW5kZXhPZigiPCIpPi0xP0NlKGF8fGUpLnJlcGxhY2UoLzxbXjw+XSo+L2csIiIpOnQucjticmVhaztjYXNlIkRhdGVUaW1lIjplLnNsaWNlKC0xKSE9IloiJiYoZSs9IloiKSx0LnY9b3IoeHIoZSxsKSxsKSx0LnYhPT10LnYmJih0LnY9Q2UoZSkpLCghdXx8dT09IkdlbmVyYWwiKSYmKHU9Inl5eXktbW0tZGQiKTtjYXNlIk51bWJlciI6dC52PT09dm9pZCAwJiYodC52PStlKSx0LnR8fCh0LnQ9Im4iKTticmVhaztjYXNlIkVycm9yIjp0LnQ9ImUiLHQudj1kcltlXSxvLmNlbGxUZXh0IT09ITEmJih0Lnc9ZSk7YnJlYWs7ZGVmYXVsdDplPT0iIiYmYT09IiI/dC50PSJ6IjoodC50PSJzIix0LnY9QWkoYXx8ZSkpO2JyZWFrfWlmKFB2KHQsdSxvLGwpLG8uY2VsbEZvcm11bGEhPT0hMSlpZih0LkZvcm11bGEpe3ZhciBwPUNlKHQuRm9ybXVsYSk7cC5jaGFyQ29kZUF0KDApPT02MSYmKHA9cC5zbGljZSgxKSksdC5mPXFhKHAsbiksZGVsZXRlIHQuRm9ybXVsYSx0LkFycmF5UmFuZ2U9PSJSQyI/dC5GPXFhKCJSQzpSQyIsbik6dC5BcnJheVJhbmdlJiYodC5GPXFhKHQuQXJyYXlSYW5nZSxuKSxjLnB1c2goW1plKHQuRiksdC5GXSkpfWVsc2UgZm9yKG09MDttPGMubGVuZ3RoOysrbSluLnI+PWNbbV1bMF0ucy5yJiZuLnI8PWNbbV1bMF0uZS5yJiZuLmM+PWNbbV1bMF0ucy5jJiZuLmM8PWNbbV1bMF0uZS5jJiYodC5GPWNbbV1bMV0pO28uY2VsbFN0eWxlcyYmKGcuZm9yRWFjaChmdW5jdGlvbih3KXshaC5wYXR0ZXJuVHlwZSYmdy5wYXR0ZXJuVHlwZSYmKGgucGF0dGVyblR5cGU9dy5wYXR0ZXJuVHlwZSl9KSx0LnM9aCksdC5TdHlsZUlEIT09dm9pZCAwJiYodC5peGZlPXQuU3R5bGVJRCl9ZnVuY3Rpb24gVXYoZSl7cmV0dXJuIHRzLmluZGV4T2YoIl94bG5tLiIrZSk+LTE/Il94bG5tLiIrZTplfWZ1bmN0aW9uIEh2KGUpe2UudD1lLnZ8fCIiLGUudD1lLnQucmVwbGFjZSgvXHJcbi9nLGAKYCkucmVwbGFjZSgvXHIvZyxgCmApLGUudj1lLnc9ZS5peGZlPXZvaWQgMH1mdW5jdGlvbiB5bihlLGEpe3ZhciByPWF8fHt9O2xpKCk7dmFyIHQ9VHQoaDAoZSkpOyhyLnR5cGU9PSJiaW5hcnkifHxyLnR5cGU9PSJhcnJheSJ8fHIudHlwZT09ImJhc2U2NCIpJiYodD1WZSh0KSk7dmFyIG49dC5zbGljZSgwLDEwMjQpLnRvTG93ZXJDYXNlKCksaT0hMTtpZihuPW4ucmVwbGFjZSgvIi4qPyIvZywiIiksKG4uaW5kZXhPZigiPiIpJjEwMjMpPk1hdGgubWluKG4uaW5kZXhPZigiLCIpJjEwMjMsbi5pbmRleE9mKCI7IikmMTAyMykpe3ZhciBmPVVlKHIpO3JldHVybiBmLnR5cGU9InN0cmluZyIsbHQudG9fd29ya2Jvb2sodCxmKX1pZihuLmluZGV4T2YoIjw/eG1sIik9PS0xJiZbImh0bWwiLCJ0YWJsZSIsImhlYWQiLCJtZXRhIiwic2NyaXB0Iiwic3R5bGUiLCJkaXYiXS5mb3JFYWNoKGZ1bmN0aW9uKGhlKXtuLmluZGV4T2YoIjwiK2hlKT49MCYmKGk9ITApfSksaSlyZXR1cm4gcDIodCxyKTskdD17IkdlbmVyYWwgTnVtYmVyIjoiR2VuZXJhbCIsIkdlbmVyYWwgRGF0ZSI6VGVbMjJdLCJMb25nIERhdGUiOiJkZGRkLCBtbW1tIGRkLCB5eXl5IiwiTWVkaXVtIERhdGUiOlRlWzE1XSwiU2hvcnQgRGF0ZSI6VGVbMTRdLCJMb25nIFRpbWUiOlRlWzE5XSwiTWVkaXVtIFRpbWUiOlRlWzE4XSwiU2hvcnQgVGltZSI6VGVbMjBdLEN1cnJlbmN5OiciJCIjLCMjMC4wMF8pO1tSZWRdXFwoIiQiIywjIzAuMDBcXCknLEZpeGVkOlRlWzJdLFN0YW5kYXJkOlRlWzRdLFBlcmNlbnQ6VGVbMTBdLFNjaWVudGlmaWM6VGVbMTFdLCJZZXMvTm8iOiciWWVzIjsiWWVzIjsiTm8iO0AnLCJUcnVlL0ZhbHNlIjonIlRydWUiOyJUcnVlIjsiRmFsc2UiO0AnLCJPbi9PZmYiOiciWWVzIjsiWWVzIjsiTm8iO0AnfTt2YXIgcyxjPVtdLG8sbD17fSx1PVtdLHg9e30saD0iIjtyLmRlbnNlJiYoeFsiIWRhdGEiXT1bXSk7dmFyIGc9e30sbT17fSxkPVFyKCc8RGF0YSBzczpUeXBlPSJTdHJpbmciPicpLHA9MCx3PTAsXz0wLHk9e3M6e3I6MmU2LGM6MmU2fSxlOntyOjAsYzowfX0sUj17fSxQPXt9LGI9IiIsTj0wLEk9W10sQj17fSxMPXt9LEc9MCxpZT1bXSxuZT1bXSxxPXt9LGxlPVtdLFEsZ2U9ITEsdWU9W10saj1bXSx5ZT17fSxiZT0wLG1lPTAsWj17U2hlZXRzOltdLFdCUHJvcHM6e2RhdGUxOTA0OiExfX0sT2U9e307aXIubGFzdEluZGV4PTAsdD1DdCh0LCI8IS0tIiwiLS0+Iik7Zm9yKHZhciB3ZT0iIjtzPWlyLmV4ZWModCk7KXN3aXRjaChzWzNdPSh3ZT1zWzNdKS50b0xvd2VyQ2FzZSgpKXtjYXNlImRhdGEiOmlmKHdlPT0iZGF0YSIpe2lmKHNbMV09PT0iLyIpe2lmKChvPWMucG9wKCkpWzBdIT09c1szXSl0aHJvdyBuZXcgRXJyb3IoIkJhZCBzdGF0ZTogIitvLmpvaW4oInwiKSl9ZWxzZSBzWzBdLmNoYXJBdChzWzBdLmxlbmd0aC0yKSE9PSIvIiYmYy5wdXNoKFtzWzNdLCEwXSk7YnJlYWt9aWYoY1tjLmxlbmd0aC0xXVsxXSlicmVhaztzWzFdPT09Ii8iP0J2KHQuc2xpY2UocCxzLmluZGV4KSxiLGQsY1tjLmxlbmd0aC0xXVswXT09ImNvbW1lbnQiP3E6Zyx7Yzp3LHI6X30sUixsZVt3XSxtLHVlLHIsWi5XQlByb3BzLmRhdGUxOTA0KTooYj0iIixkPVFyKHNbMF0pLHA9cy5pbmRleCtzWzBdLmxlbmd0aCk7YnJlYWs7Y2FzZSJjZWxsIjppZihzWzFdPT09Ii8iKWlmKG5lLmxlbmd0aD4wJiYoZy5jPW5lKSwoIXIuc2hlZXRSb3dzfHxyLnNoZWV0Um93cz5fKSYmZy52IT09dm9pZCAwJiYoci5kZW5zZT8oeFsiIWRhdGEiXVtfXXx8KHhbIiFkYXRhIl1bX109W10pLHhbIiFkYXRhIl1bX11bd109Zyk6eFtIZSh3KStHZShfKV09ZyksZy5IUmVmJiYoZy5sPXtUYXJnZXQ6Q2UoZy5IUmVmKX0sZy5IUmVmU2NyZWVuVGlwJiYoZy5sLlRvb2x0aXA9Zy5IUmVmU2NyZWVuVGlwKSxkZWxldGUgZy5IUmVmLGRlbGV0ZSBnLkhSZWZTY3JlZW5UaXApLChnLk1lcmdlQWNyb3NzfHxnLk1lcmdlRG93bikmJihiZT13KyhwYXJzZUludChnLk1lcmdlQWNyb3NzLDEwKXwwKSxtZT1fKyhwYXJzZUludChnLk1lcmdlRG93biwxMCl8MCksKGJlPnd8fG1lPl8pJiZJLnB1c2goe3M6e2M6dyxyOl99LGU6e2M6YmUscjptZX19KSksIXIuc2hlZXRTdHVicylnLk1lcmdlQWNyb3NzP3c9YmUrMTorK3c7ZWxzZSBpZihnLk1lcmdlQWNyb3NzfHxnLk1lcmdlRG93bil7Zm9yKHZhciBBZT13O0FlPD1iZTsrK0FlKWZvcih2YXIgQT1fO0E8PW1lOysrQSkoQWU+d3x8QT5fKSYmKHIuZGVuc2U/KHhbIiFkYXRhIl1bQV18fCh4WyIhZGF0YSJdW0FdPVtdKSx4WyIhZGF0YSJdW0FdW0FlXT17dDoieiJ9KTp4W0hlKEFlKStHZShBKV09e3Q6InoifSk7dz1iZSsxfWVsc2UrK3c7ZWxzZSBnPU92KHNbMF0pLGcuSW5kZXgmJih3PStnLkluZGV4LTEpLHc8eS5zLmMmJih5LnMuYz13KSx3PnkuZS5jJiYoeS5lLmM9dyksc1swXS5zbGljZSgtMik9PT0iLz4iJiYrK3csbmU9W107YnJlYWs7Y2FzZSJyb3ciOnNbMV09PT0iLyJ8fHNbMF0uc2xpY2UoLTIpPT09Ii8+Ij8oXzx5LnMuciYmKHkucy5yPV8pLF8+eS5lLnImJih5LmUucj1fKSxzWzBdLnNsaWNlKC0yKT09PSIvPiImJihtPVFyKHNbMF0pLG0uSW5kZXgmJihfPSttLkluZGV4LTEpKSx3PTAsKytfKToobT1RcihzWzBdKSxtLkluZGV4JiYoXz0rbS5JbmRleC0xKSx5ZT17fSwobS5BdXRvRml0SGVpZ2h0PT0iMCJ8fG0uSGVpZ2h0KSYmKHllLmhweD1wYXJzZUludChtLkhlaWdodCwxMCkseWUuaHB0PVdzKHllLmhweCksaltfXT15ZSksbS5IaWRkZW49PSIxIiYmKHllLmhpZGRlbj0hMCxqW19dPXllKSk7YnJlYWs7Y2FzZSJ3b3Jrc2hlZXQiOmlmKHNbMV09PT0iLyIpe2lmKChvPWMucG9wKCkpWzBdIT09c1szXSl0aHJvdyBuZXcgRXJyb3IoIkJhZCBzdGF0ZTogIitvLmpvaW4oInwiKSk7dS5wdXNoKGgpLHkucy5yPD15LmUuciYmeS5zLmM8PXkuZS5jJiYoeFsiIXJlZiJdPUllKHkpLHIuc2hlZXRSb3dzJiZyLnNoZWV0Um93czw9eS5lLnImJih4WyIhZnVsbHJlZiJdPXhbIiFyZWYiXSx5LmUucj1yLnNoZWV0Um93cy0xLHhbIiFyZWYiXT1JZSh5KSkpLEkubGVuZ3RoJiYoeFsiIW1lcmdlcyJdPUkpLGxlLmxlbmd0aD4wJiYoeFsiIWNvbHMiXT1sZSksai5sZW5ndGg+MCYmKHhbIiFyb3dzIl09aiksbFtoXT14fWVsc2UgeT17czp7cjoyZTYsYzoyZTZ9LGU6e3I6MCxjOjB9fSxfPXc9MCxjLnB1c2goW3NbM10sITFdKSxvPVFyKHNbMF0pLGg9Q2Uoby5OYW1lKSx4PXt9LHIuZGVuc2UmJih4WyIhZGF0YSJdPVtdKSxJPVtdLHVlPVtdLGo9W10sT2U9e25hbWU6aCxIaWRkZW46MH0sWi5TaGVldHMucHVzaChPZSk7YnJlYWs7Y2FzZSJ0YWJsZSI6aWYoc1sxXT09PSIvIil7aWYoKG89Yy5wb3AoKSlbMF0hPT1zWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK28uam9pbigifCIpKX1lbHNle2lmKHNbMF0uc2xpY2UoLTIpPT0iLz4iKWJyZWFrO2MucHVzaChbc1szXSwhMV0pLGxlPVtdLGdlPSExfWJyZWFrO2Nhc2Uic3R5bGUiOnNbMV09PT0iLyI/THYoUixQLHIpOlA9UXIoc1swXSk7YnJlYWs7Y2FzZSJudW1iZXJmb3JtYXQiOlAubmY9Q2UoUXIoc1swXSkuRm9ybWF0fHwiR2VuZXJhbCIpLCR0W1AubmZdJiYoUC5uZj0kdFtQLm5mXSk7Zm9yKHZhciBVPTA7VSE9MzkyJiZUZVtVXSE9UC5uZjsrK1UpO2lmKFU9PTM5Mil7Zm9yKFU9NTc7VSE9MzkyOysrVSlpZihUZVtVXT09bnVsbCl7TGEoUC5uZixVKTticmVha319YnJlYWs7Y2FzZSJjb2x1bW4iOmlmKGNbYy5sZW5ndGgtMV1bMF0hPT0idGFibGUifHxzWzFdPT09Ii8iKWJyZWFrO2lmKFE9UXIoc1swXSksUS5IaWRkZW4mJihRLmhpZGRlbj0hMCxkZWxldGUgUS5IaWRkZW4pLFEuV2lkdGgmJihRLndweD1wYXJzZUludChRLldpZHRoLDEwKSksIWdlJiZRLndweD4xMCl7Z2U9ITAscWU9TnM7Zm9yKHZhciBPPTA7TzxsZS5sZW5ndGg7KytPKWxlW09dJiZ1dChsZVtPXSl9Z2UmJnV0KFEpLGxlW1EuSW5kZXgtMXx8bGUubGVuZ3RoXT1RO2Zvcih2YXIgRD0wO0Q8K1EuU3BhbjsrK0QpbGVbbGUubGVuZ3RoXT1VZShRKTticmVhaztjYXNlIm5hbWVkcmFuZ2UiOmlmKHNbMV09PT0iLyIpYnJlYWs7Wi5OYW1lc3x8KFouTmFtZXM9W10pO3ZhciB6PW9lKHNbMF0pLHBlPXtOYW1lOlV2KHouTmFtZSksUmVmOnFhKHouUmVmZXJzVG8uc2xpY2UoMSkse3I6MCxjOjB9KX07Wi5TaGVldHMubGVuZ3RoPjAmJihwZS5TaGVldD1aLlNoZWV0cy5sZW5ndGgtMSksWi5OYW1lcy5wdXNoKHBlKTticmVhaztjYXNlIm5hbWVkY2VsbCI6YnJlYWs7Y2FzZSJiIjpicmVhaztjYXNlImkiOmJyZWFrO2Nhc2UidSI6YnJlYWs7Y2FzZSJzIjpicmVhaztjYXNlImVtIjpicmVhaztjYXNlImgyIjpicmVhaztjYXNlImgzIjpicmVhaztjYXNlInN1YiI6YnJlYWs7Y2FzZSJzdXAiOmJyZWFrO2Nhc2Uic3BhbiI6YnJlYWs7Y2FzZSJhbGlnbm1lbnQiOmJyZWFrO2Nhc2UiYm9yZGVycyI6YnJlYWs7Y2FzZSJib3JkZXIiOmJyZWFrO2Nhc2UiZm9udCI6aWYoc1swXS5zbGljZSgtMik9PT0iLz4iKWJyZWFrO3NbMV09PT0iLyI/Yis9dC5zbGljZShOLHMuaW5kZXgpOk49cy5pbmRleCtzWzBdLmxlbmd0aDticmVhaztjYXNlImludGVyaW9yIjppZighci5jZWxsU3R5bGVzKWJyZWFrO1AuSW50ZXJpb3I9UXIoc1swXSk7YnJlYWs7Y2FzZSJwcm90ZWN0aW9uIjpicmVhaztjYXNlImF1dGhvciI6Y2FzZSJ0aXRsZSI6Y2FzZSJkZXNjcmlwdGlvbiI6Y2FzZSJjcmVhdGVkIjpjYXNlImtleXdvcmRzIjpjYXNlInN1YmplY3QiOmNhc2UiY2F0ZWdvcnkiOmNhc2UiY29tcGFueSI6Y2FzZSJsYXN0YXV0aG9yIjpjYXNlImxhc3RzYXZlZCI6Y2FzZSJsYXN0cHJpbnRlZCI6Y2FzZSJ2ZXJzaW9uIjpjYXNlInJldmlzaW9uIjpjYXNlInRvdGFsdGltZSI6Y2FzZSJoeXBlcmxpbmtiYXNlIjpjYXNlIm1hbmFnZXIiOmNhc2UiY29udGVudHN0YXR1cyI6Y2FzZSJpZGVudGlmaWVyIjpjYXNlImxhbmd1YWdlIjpjYXNlImFwcG5hbWUiOmlmKHNbMF0uc2xpY2UoLTIpPT09Ii8+IilicmVhaztzWzFdPT09Ii8iP2VsKEIsd2UsdC5zbGljZShHLHMuaW5kZXgpKTpHPXMuaW5kZXgrc1swXS5sZW5ndGg7YnJlYWs7Y2FzZSJwYXJhZ3JhcGhzIjpicmVhaztjYXNlInN0eWxlcyI6Y2FzZSJ3b3JrYm9vayI6aWYoc1sxXT09PSIvIil7aWYoKG89Yy5wb3AoKSlbMF0hPT1zWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK28uam9pbigifCIpKX1lbHNlIGMucHVzaChbc1szXSwhMV0pO2JyZWFrO2Nhc2UiY29tbWVudCI6aWYoc1sxXT09PSIvIil7aWYoKG89Yy5wb3AoKSlbMF0hPT1zWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK28uam9pbigifCIpKTtIdihxKSxuZS5wdXNoKHEpfWVsc2UgYy5wdXNoKFtzWzNdLCExXSksbz1RcihzWzBdKSxGZShvLlNob3dBbHdheXN8fCIwIil8fChuZS5oaWRkZW49ITApLHE9e2E6by5BdXRob3J9O2JyZWFrO2Nhc2UiYXV0b2ZpbHRlciI6aWYoc1sxXT09PSIvIil7aWYoKG89Yy5wb3AoKSlbMF0hPT1zWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK28uam9pbigifCIpKX1lbHNlIGlmKHNbMF0uY2hhckF0KHNbMF0ubGVuZ3RoLTIpIT09Ii8iKXt2YXIgSj1RcihzWzBdKTt4WyIhYXV0b2ZpbHRlciJdPXtyZWY6cWEoSi5SYW5nZSkucmVwbGFjZSgvXCQvZywiIil9LGMucHVzaChbc1szXSwhMF0pfWJyZWFrO2Nhc2UibmFtZSI6YnJlYWs7Y2FzZSJkYXRhdmFsaWRhdGlvbiI6aWYoc1sxXT09PSIvIil7aWYoKG89Yy5wb3AoKSlbMF0hPT1zWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK28uam9pbigifCIpKX1lbHNlIHNbMF0uY2hhckF0KHNbMF0ubGVuZ3RoLTIpIT09Ii8iJiZjLnB1c2goW3NbM10sITBdKTticmVhaztjYXNlInBpeGVsc3BlcmluY2giOmJyZWFrO2Nhc2UiY29tcG9uZW50b3B0aW9ucyI6Y2FzZSJkb2N1bWVudHByb3BlcnRpZXMiOmNhc2UiY3VzdG9tZG9jdW1lbnRwcm9wZXJ0aWVzIjpjYXNlIm9mZmljZWRvY3VtZW50c2V0dGluZ3MiOmNhc2UicGl2b3R0YWJsZSI6Y2FzZSJwaXZvdGNhY2hlIjpjYXNlIm5hbWVzIjpjYXNlIm1hcGluZm8iOmNhc2UicGFnZWJyZWFrcyI6Y2FzZSJxdWVyeXRhYmxlIjpjYXNlInNvcnRpbmciOmNhc2Uic2NoZW1hIjpjYXNlImNvbmRpdGlvbmFsZm9ybWF0dGluZyI6Y2FzZSJzbWFydHRhZ3R5cGUiOmNhc2Uic21hcnR0YWdzIjpjYXNlImV4Y2Vsd29ya2Jvb2siOmNhc2Uid29ya2Jvb2tvcHRpb25zIjpjYXNlIndvcmtzaGVldG9wdGlvbnMiOmlmKHNbMV09PT0iLyIpe2lmKChvPWMucG9wKCkpWzBdIT09c1szXSl0aHJvdyBuZXcgRXJyb3IoIkJhZCBzdGF0ZTogIitvLmpvaW4oInwiKSl9ZWxzZSBzWzBdLmNoYXJBdChzWzBdLmxlbmd0aC0yKSE9PSIvIiYmYy5wdXNoKFtzWzNdLCEwXSk7YnJlYWs7Y2FzZSJudWxsIjpicmVhaztkZWZhdWx0OmlmKGMubGVuZ3RoPT0wJiZzWzNdPT0iZG9jdW1lbnQifHxjLmxlbmd0aD09MCYmc1szXT09InVvZiIpcmV0dXJuIE5mKHQscik7dmFyIHJlPSEwO3N3aXRjaChjW2MubGVuZ3RoLTFdWzBdKXtjYXNlIm9mZmljZWRvY3VtZW50c2V0dGluZ3MiOnN3aXRjaChzWzNdKXtjYXNlImFsbG93cG5nIjpicmVhaztjYXNlInJlbW92ZXBlcnNvbmFsaW5mb3JtYXRpb24iOmJyZWFrO2Nhc2UiZG93bmxvYWRjb21wb25lbnRzIjpicmVhaztjYXNlImxvY2F0aW9ub2Zjb21wb25lbnRzIjpicmVhaztjYXNlImNvbG9ycyI6YnJlYWs7Y2FzZSJjb2xvciI6YnJlYWs7Y2FzZSJpbmRleCI6YnJlYWs7Y2FzZSJyZ2IiOmJyZWFrO2Nhc2UidGFyZ2V0c2NyZWVuc2l6ZSI6YnJlYWs7Y2FzZSJyZWFkb25seXJlY29tbWVuZGVkIjpicmVhaztkZWZhdWx0OnJlPSExfWJyZWFrO2Nhc2UiY29tcG9uZW50b3B0aW9ucyI6c3dpdGNoKHNbM10pe2Nhc2UidG9vbGJhciI6YnJlYWs7Y2FzZSJoaWRlb2ZmaWNlbG9nbyI6YnJlYWs7Y2FzZSJzcHJlYWRzaGVldGF1dG9maXQiOmJyZWFrO2Nhc2UibGFiZWwiOmJyZWFrO2Nhc2UiY2FwdGlvbiI6YnJlYWs7Y2FzZSJtYXhoZWlnaHQiOmJyZWFrO2Nhc2UibWF4d2lkdGgiOmJyZWFrO2Nhc2UibmV4dHNoZWV0bnVtYmVyIjpicmVhaztkZWZhdWx0OnJlPSExfWJyZWFrO2Nhc2UiZXhjZWx3b3JrYm9vayI6c3dpdGNoKHNbM10pe2Nhc2UiZGF0ZTE5MDQiOlouV0JQcm9wcy5kYXRlMTkwND0hMDticmVhaztjYXNlImhpZGVob3Jpem9udGFsc2Nyb2xsYmFyIjpicmVhaztjYXNlImhpZGV2ZXJ0aWNhbHNjcm9sbGJhciI6YnJlYWs7Y2FzZSJoaWRld29ya2Jvb2t0YWJzIjpicmVhaztjYXNlIndpbmRvd2hlaWdodCI6YnJlYWs7Y2FzZSJ3aW5kb3d3aWR0aCI6YnJlYWs7Y2FzZSJ3aW5kb3d0b3B4IjpicmVhaztjYXNlIndpbmRvd3RvcHkiOmJyZWFrO2Nhc2UidGFicmF0aW8iOmJyZWFrO2Nhc2UicHJvdGVjdHN0cnVjdHVyZSI6YnJlYWs7Y2FzZSJwcm90ZWN0d2luZG93IjpicmVhaztjYXNlInByb3RlY3R3aW5kb3dzIjpicmVhaztjYXNlImFjdGl2ZXNoZWV0IjpicmVhaztjYXNlImRpc3BsYXlpbmtub3RlcyI6YnJlYWs7Y2FzZSJmaXJzdHZpc2libGVzaGVldCI6YnJlYWs7Y2FzZSJzdXBib29rIjpicmVhaztjYXNlInNoZWV0bmFtZSI6YnJlYWs7Y2FzZSJzaGVldGluZGV4IjpicmVhaztjYXNlInNoZWV0aW5kZXhmaXJzdCI6YnJlYWs7Y2FzZSJzaGVldGluZGV4bGFzdCI6YnJlYWs7Y2FzZSJkbGwiOmJyZWFrO2Nhc2UiYWNjZXB0bGFiZWxzaW5mb3JtdWxhcyI6YnJlYWs7Y2FzZSJkb25vdHNhdmVsaW5rdmFsdWVzIjpicmVhaztjYXNlIml0ZXJhdGlvbiI6YnJlYWs7Y2FzZSJtYXhpdGVyYXRpb25zIjpicmVhaztjYXNlIm1heGNoYW5nZSI6YnJlYWs7Y2FzZSJwYXRoIjpicmVhaztjYXNlInhjdCI6YnJlYWs7Y2FzZSJjb3VudCI6YnJlYWs7Y2FzZSJzZWxlY3RlZHNoZWV0cyI6YnJlYWs7Y2FzZSJjYWxjdWxhdGlvbiI6YnJlYWs7Y2FzZSJ1bmNhbGNlZCI6YnJlYWs7Y2FzZSJzdGFydHVwcHJvbXB0IjpicmVhaztjYXNlImNybiI6YnJlYWs7Y2FzZSJleHRlcm5uYW1lIjpicmVhaztjYXNlImZvcm11bGEiOmJyZWFrO2Nhc2UiY29sZmlyc3QiOmJyZWFrO2Nhc2UiY29sbGFzdCI6YnJlYWs7Y2FzZSJ3YW50YWR2aXNlIjpicmVhaztjYXNlImJvb2xlYW4iOmJyZWFrO2Nhc2UiZXJyb3IiOmJyZWFrO2Nhc2UidGV4dCI6YnJlYWs7Y2FzZSJvbGUiOmJyZWFrO2Nhc2Uibm9hdXRvcmVjb3ZlciI6YnJlYWs7Y2FzZSJwdWJsaXNob2JqZWN0cyI6YnJlYWs7Y2FzZSJkb25vdGNhbGN1bGF0ZWJlZm9yZXNhdmUiOmJyZWFrO2Nhc2UibnVtYmVyIjpicmVhaztjYXNlInJlZm1vZGVyMWMxIjpicmVhaztjYXNlImVtYmVkc2F2ZXNtYXJ0dGFncyI6YnJlYWs7ZGVmYXVsdDpyZT0hMX1icmVhaztjYXNlIndvcmtib29rb3B0aW9ucyI6c3dpdGNoKHNbM10pe2Nhc2Uib3djdmVyc2lvbiI6YnJlYWs7Y2FzZSJoZWlnaHQiOmJyZWFrO2Nhc2Uid2lkdGgiOmJyZWFrO2RlZmF1bHQ6cmU9ITF9YnJlYWs7Y2FzZSJ3b3Jrc2hlZXRvcHRpb25zIjpzd2l0Y2goc1szXSl7Y2FzZSJ2aXNpYmxlIjppZihzWzBdLnNsaWNlKC0yKSE9PSIvPiIpaWYoc1sxXT09PSIvIilzd2l0Y2godC5zbGljZShHLHMuaW5kZXgpKXtjYXNlIlNoZWV0SGlkZGVuIjpPZS5IaWRkZW49MTticmVhaztjYXNlIlNoZWV0VmVyeUhpZGRlbiI6T2UuSGlkZGVuPTI7YnJlYWt9ZWxzZSBHPXMuaW5kZXgrc1swXS5sZW5ndGg7YnJlYWs7Y2FzZSJoZWFkZXIiOnhbIiFtYXJnaW5zIl18fHp0KHhbIiFtYXJnaW5zIl09e30sInhsbWwiKSxpc05hTigrb2Uoc1swXSkuTWFyZ2luKXx8KHhbIiFtYXJnaW5zIl0uaGVhZGVyPStvZShzWzBdKS5NYXJnaW4pO2JyZWFrO2Nhc2UiZm9vdGVyIjp4WyIhbWFyZ2lucyJdfHx6dCh4WyIhbWFyZ2lucyJdPXt9LCJ4bG1sIiksaXNOYU4oK29lKHNbMF0pLk1hcmdpbil8fCh4WyIhbWFyZ2lucyJdLmZvb3Rlcj0rb2Uoc1swXSkuTWFyZ2luKTticmVhaztjYXNlInBhZ2VtYXJnaW5zIjp2YXIgZWU9b2Uoc1swXSk7eFsiIW1hcmdpbnMiXXx8enQoeFsiIW1hcmdpbnMiXT17fSwieGxtbCIpLGlzTmFOKCtlZS5Ub3ApfHwoeFsiIW1hcmdpbnMiXS50b3A9K2VlLlRvcCksaXNOYU4oK2VlLkxlZnQpfHwoeFsiIW1hcmdpbnMiXS5sZWZ0PStlZS5MZWZ0KSxpc05hTigrZWUuUmlnaHQpfHwoeFsiIW1hcmdpbnMiXS5yaWdodD0rZWUuUmlnaHQpLGlzTmFOKCtlZS5Cb3R0b20pfHwoeFsiIW1hcmdpbnMiXS5ib3R0b209K2VlLkJvdHRvbSk7YnJlYWs7Y2FzZSJkaXNwbGF5cmlnaHR0b2xlZnQiOlouVmlld3N8fChaLlZpZXdzPVtdKSxaLlZpZXdzWzBdfHwoWi5WaWV3c1swXT17fSksWi5WaWV3c1swXS5SVEw9ITA7YnJlYWs7Y2FzZSJmcmVlemVwYW5lcyI6YnJlYWs7Y2FzZSJmcm96ZW5ub3NwbGl0IjpicmVhaztjYXNlInNwbGl0aG9yaXpvbnRhbCI6Y2FzZSJzcGxpdHZlcnRpY2FsIjpicmVhaztjYXNlImRvbm90ZGlzcGxheWdyaWRsaW5lcyI6YnJlYWs7Y2FzZSJhY3RpdmVyb3ciOmJyZWFrO2Nhc2UiYWN0aXZlY29sIjpicmVhaztjYXNlInRvcHJvd2JvdHRvbXBhbmUiOmJyZWFrO2Nhc2UibGVmdGNvbHVtbnJpZ2h0cGFuZSI6YnJlYWs7Y2FzZSJ1bnN5bmNlZCI6YnJlYWs7Y2FzZSJwcmludCI6YnJlYWs7Y2FzZSJwcmludGVycm9ycyI6YnJlYWs7Y2FzZSJwYW5lcyI6YnJlYWs7Y2FzZSJzY2FsZSI6YnJlYWs7Y2FzZSJwYW5lIjpicmVhaztjYXNlIm51bWJlciI6YnJlYWs7Y2FzZSJsYXlvdXQiOmJyZWFrO2Nhc2UicGFnZXNldHVwIjpicmVhaztjYXNlInNlbGVjdGVkIjpicmVhaztjYXNlInByb3RlY3RvYmplY3RzIjpicmVhaztjYXNlImVuYWJsZXNlbGVjdGlvbiI6YnJlYWs7Y2FzZSJwcm90ZWN0c2NlbmFyaW9zIjpicmVhaztjYXNlInZhbGlkcHJpbnRlcmluZm8iOmJyZWFrO2Nhc2UiaG9yaXpvbnRhbHJlc29sdXRpb24iOmJyZWFrO2Nhc2UidmVydGljYWxyZXNvbHV0aW9uIjpicmVhaztjYXNlIm51bWJlcm9mY29waWVzIjpicmVhaztjYXNlImFjdGl2ZXBhbmUiOmJyZWFrO2Nhc2UidG9wcm93dmlzaWJsZSI6YnJlYWs7Y2FzZSJsZWZ0Y29sdW1udmlzaWJsZSI6YnJlYWs7Y2FzZSJmaXR0b3BhZ2UiOmJyZWFrO2Nhc2UicmFuZ2VzZWxlY3Rpb24iOmJyZWFrO2Nhc2UicGFwZXJzaXplaW5kZXgiOmJyZWFrO2Nhc2UicGFnZWxheW91dHpvb20iOmJyZWFrO2Nhc2UicGFnZWJyZWFrem9vbSI6YnJlYWs7Y2FzZSJmaWx0ZXJvbiI6YnJlYWs7Y2FzZSJmaXR3aWR0aCI6YnJlYWs7Y2FzZSJmaXRoZWlnaHQiOmJyZWFrO2Nhc2UiY29tbWVudHNsYXlvdXQiOmJyZWFrO2Nhc2Uiem9vbSI6YnJlYWs7Y2FzZSJsZWZ0dG9yaWdodCI6YnJlYWs7Y2FzZSJncmlkbGluZXMiOmJyZWFrO2Nhc2UiYWxsb3dzb3J0IjpicmVhaztjYXNlImFsbG93ZmlsdGVyIjpicmVhaztjYXNlImFsbG93aW5zZXJ0cm93cyI6YnJlYWs7Y2FzZSJhbGxvd2RlbGV0ZXJvd3MiOmJyZWFrO2Nhc2UiYWxsb3dpbnNlcnRjb2xzIjpicmVhaztjYXNlImFsbG93ZGVsZXRlY29scyI6YnJlYWs7Y2FzZSJhbGxvd2luc2VydGh5cGVybGlua3MiOmJyZWFrO2Nhc2UiYWxsb3dmb3JtYXRjZWxscyI6YnJlYWs7Y2FzZSJhbGxvd3NpemVjb2xzIjpicmVhaztjYXNlImFsbG93c2l6ZXJvd3MiOmJyZWFrO2Nhc2Uibm9zdW1tYXJ5cm93c2JlbG93ZGV0YWlsIjp4WyIhb3V0bGluZSJdfHwoeFsiIW91dGxpbmUiXT17fSkseFsiIW91dGxpbmUiXS5hYm92ZT0hMDticmVhaztjYXNlInRhYmNvbG9yaW5kZXgiOmJyZWFrO2Nhc2UiZG9ub3RkaXNwbGF5aGVhZGluZ3MiOmJyZWFrO2Nhc2Uic2hvd3BhZ2VsYXlvdXR6b29tIjpicmVhaztjYXNlIm5vc3VtbWFyeWNvbHVtbnNyaWdodGRldGFpbCI6eFsiIW91dGxpbmUiXXx8KHhbIiFvdXRsaW5lIl09e30pLHhbIiFvdXRsaW5lIl0ubGVmdD0hMDticmVhaztjYXNlImJsYWNrYW5kd2hpdGUiOmJyZWFrO2Nhc2UiZG9ub3RkaXNwbGF5emVyb3MiOmJyZWFrO2Nhc2UiZGlzcGxheXBhZ2VicmVhayI6YnJlYWs7Y2FzZSJyb3djb2xoZWFkaW5ncyI6YnJlYWs7Y2FzZSJkb25vdGRpc3BsYXlvdXRsaW5lIjpicmVhaztjYXNlIm5vb3JpZW50YXRpb24iOmJyZWFrO2Nhc2UiYWxsb3d1c2VwaXZvdHRhYmxlcyI6YnJlYWs7Y2FzZSJ6ZXJvaGVpZ2h0IjpicmVhaztjYXNlInZpZXdhYmxlcmFuZ2UiOmJyZWFrO2Nhc2Uic2VsZWN0aW9uIjpicmVhaztjYXNlInByb3RlY3Rjb250ZW50cyI6YnJlYWs7ZGVmYXVsdDpyZT0hMX1icmVhaztjYXNlInBpdm90dGFibGUiOmNhc2UicGl2b3RjYWNoZSI6c3dpdGNoKHNbM10pe2Nhc2UiaW1tZWRpYXRlaXRlbXNvbmRyb3AiOmJyZWFrO2Nhc2Uic2hvd3BhZ2VtdWx0aXBsZWl0ZW1sYWJlbCI6YnJlYWs7Y2FzZSJjb21wYWN0cm93aW5kZW50IjpicmVhaztjYXNlImxvY2F0aW9uIjpicmVhaztjYXNlInBpdm90ZmllbGQiOmJyZWFrO2Nhc2Uib3JpZW50YXRpb24iOmJyZWFrO2Nhc2UibGF5b3V0Zm9ybSI6YnJlYWs7Y2FzZSJsYXlvdXRzdWJ0b3RhbGxvY2F0aW9uIjpicmVhaztjYXNlImxheW91dGNvbXBhY3Ryb3ciOmJyZWFrO2Nhc2UicG9zaXRpb24iOmJyZWFrO2Nhc2UicGl2b3RpdGVtIjpicmVhaztjYXNlImRhdGF0eXBlIjpicmVhaztjYXNlImRhdGFmaWVsZCI6YnJlYWs7Y2FzZSJzb3VyY2VuYW1lIjpicmVhaztjYXNlInBhcmVudGZpZWxkIjpicmVhaztjYXNlInB0bGluZWl0ZW1zIjpicmVhaztjYXNlInB0bGluZWl0ZW0iOmJyZWFrO2Nhc2UiY291bnRvZnNhbWVpdGVtcyI6YnJlYWs7Y2FzZSJpdGVtIjpicmVhaztjYXNlIml0ZW10eXBlIjpicmVhaztjYXNlInB0c291cmNlIjpicmVhaztjYXNlImNhY2hlaW5kZXgiOmJyZWFrO2Nhc2UiY29uc29saWRhdGlvbnJlZmVyZW5jZSI6YnJlYWs7Y2FzZSJmaWxlbmFtZSI6YnJlYWs7Y2FzZSJyZWZlcmVuY2UiOmJyZWFrO2Nhc2Uibm9jb2x1bW5ncmFuZCI6YnJlYWs7Y2FzZSJub3Jvd2dyYW5kIjpicmVhaztjYXNlImJsYW5rbGluZWFmdGVyaXRlbXMiOmJyZWFrO2Nhc2UiaGlkZGVuIjpicmVhaztjYXNlInN1YnRvdGFsIjpicmVhaztjYXNlImJhc2VmaWVsZCI6YnJlYWs7Y2FzZSJtYXBjaGlsZGl0ZW1zIjpicmVhaztjYXNlImZ1bmN0aW9uIjpicmVhaztjYXNlInJlZnJlc2hvbmZpbGVvcGVuIjpicmVhaztjYXNlInByaW50c2V0dGl0bGVzIjpicmVhaztjYXNlIm1lcmdlbGFiZWxzIjpicmVhaztjYXNlImRlZmF1bHR2ZXJzaW9uIjpicmVhaztjYXNlInJlZnJlc2huYW1lIjpicmVhaztjYXNlInJlZnJlc2hkYXRlIjpicmVhaztjYXNlInJlZnJlc2hkYXRlY29weSI6YnJlYWs7Y2FzZSJ2ZXJzaW9ubGFzdHJlZnJlc2giOmJyZWFrO2Nhc2UidmVyc2lvbmxhc3R1cGRhdGUiOmJyZWFrO2Nhc2UidmVyc2lvbnVwZGF0ZWFibGVtaW4iOmJyZWFrO2Nhc2UidmVyc2lvbnJlZnJlc2hhYmxlbWluIjpicmVhaztjYXNlImNhbGN1bGF0aW9uIjpicmVhaztkZWZhdWx0OnJlPSExfWJyZWFrO2Nhc2UicGFnZWJyZWFrcyI6c3dpdGNoKHNbM10pe2Nhc2UiY29sYnJlYWtzIjpicmVhaztjYXNlImNvbGJyZWFrIjpicmVhaztjYXNlInJvd2JyZWFrcyI6YnJlYWs7Y2FzZSJyb3dicmVhayI6YnJlYWs7Y2FzZSJjb2xzdGFydCI6YnJlYWs7Y2FzZSJjb2xlbmQiOmJyZWFrO2Nhc2Uicm93ZW5kIjpicmVhaztkZWZhdWx0OnJlPSExfWJyZWFrO2Nhc2UiYXV0b2ZpbHRlciI6c3dpdGNoKHNbM10pe2Nhc2UiYXV0b2ZpbHRlcmNvbHVtbiI6YnJlYWs7Y2FzZSJhdXRvZmlsdGVyY29uZGl0aW9uIjpicmVhaztjYXNlImF1dG9maWx0ZXJhbmQiOmJyZWFrO2Nhc2UiYXV0b2ZpbHRlcm9yIjpicmVhaztkZWZhdWx0OnJlPSExfWJyZWFrO2Nhc2UicXVlcnl0YWJsZSI6c3dpdGNoKHNbM10pe2Nhc2UiaWQiOmJyZWFrO2Nhc2UiYXV0b2Zvcm1hdGZvbnQiOmJyZWFrO2Nhc2UiYXV0b2Zvcm1hdHBhdHRlcm4iOmJyZWFrO2Nhc2UicXVlcnlzb3VyY2UiOmJyZWFrO2Nhc2UicXVlcnl0eXBlIjpicmVhaztjYXNlImVuYWJsZXJlZGlyZWN0aW9ucyI6YnJlYWs7Y2FzZSJyZWZyZXNoZWRpbnhsOSI6YnJlYWs7Y2FzZSJ1cmxzdHJpbmciOmJyZWFrO2Nhc2UiaHRtbHRhYmxlcyI6YnJlYWs7Y2FzZSJjb25uZWN0aW9uIjpicmVhaztjYXNlImNvbW1hbmR0ZXh0IjpicmVhaztjYXNlInJlZnJlc2hpbmZvIjpicmVhaztjYXNlIm5vdGl0bGVzIjpicmVhaztjYXNlIm5leHRpZCI6YnJlYWs7Y2FzZSJjb2x1bW5pbmZvIjpicmVhaztjYXNlIm92ZXJ3cml0ZWNlbGxzIjpicmVhaztjYXNlImRvbm90cHJvbXB0Zm9yZmlsZSI6YnJlYWs7Y2FzZSJ0ZXh0d2l6YXJkc2V0dGluZ3MiOmJyZWFrO2Nhc2Uic291cmNlIjpicmVhaztjYXNlIm51bWJlciI6YnJlYWs7Y2FzZSJkZWNpbWFsIjpicmVhaztjYXNlInRob3VzYW5kc2VwYXJhdG9yIjpicmVhaztjYXNlInRyYWlsaW5nbWludXNudW1iZXJzIjpicmVhaztjYXNlImZvcm1hdHNldHRpbmdzIjpicmVhaztjYXNlImZpZWxkdHlwZSI6YnJlYWs7Y2FzZSJkZWxpbWl0ZXJzIjpicmVhaztjYXNlInRhYiI6YnJlYWs7Y2FzZSJjb21tYSI6YnJlYWs7Y2FzZSJhdXRvZm9ybWF0bmFtZSI6YnJlYWs7Y2FzZSJ2ZXJzaW9ubGFzdGVkaXQiOmJyZWFrO2Nhc2UidmVyc2lvbmxhc3RyZWZyZXNoIjpicmVhaztkZWZhdWx0OnJlPSExfWJyZWFrO2Nhc2UiZGF0YXZhbGlkYXRpb24iOnN3aXRjaChzWzNdKXtjYXNlInJhbmdlIjpicmVhaztjYXNlInR5cGUiOmJyZWFrO2Nhc2UibWluIjpicmVhaztjYXNlIm1heCI6YnJlYWs7Y2FzZSJzb3J0IjpicmVhaztjYXNlImRlc2NlbmRpbmciOmJyZWFrO2Nhc2Uib3JkZXIiOmJyZWFrO2Nhc2UiY2FzZXNlbnNpdGl2ZSI6YnJlYWs7Y2FzZSJ2YWx1ZSI6YnJlYWs7Y2FzZSJlcnJvcnN0eWxlIjpicmVhaztjYXNlImVycm9ybWVzc2FnZSI6YnJlYWs7Y2FzZSJlcnJvcnRpdGxlIjpicmVhaztjYXNlImlucHV0bWVzc2FnZSI6YnJlYWs7Y2FzZSJpbnB1dHRpdGxlIjpicmVhaztjYXNlImNvbWJvaGlkZSI6YnJlYWs7Y2FzZSJpbnB1dGhpZGUiOmJyZWFrO2Nhc2UiY29uZGl0aW9uIjpicmVhaztjYXNlInF1YWxpZmllciI6YnJlYWs7Y2FzZSJ1c2VibGFuayI6YnJlYWs7Y2FzZSJ2YWx1ZTEiOmJyZWFrO2Nhc2UidmFsdWUyIjpicmVhaztjYXNlImZvcm1hdCI6YnJlYWs7Y2FzZSJjZWxscmFuZ2VsaXN0IjpicmVhaztkZWZhdWx0OnJlPSExfWJyZWFrO2Nhc2Uic29ydGluZyI6Y2FzZSJjb25kaXRpb25hbGZvcm1hdHRpbmciOnN3aXRjaChzWzNdKXtjYXNlInJhbmdlIjpicmVhaztjYXNlInR5cGUiOmJyZWFrO2Nhc2UibWluIjpicmVhaztjYXNlIm1heCI6YnJlYWs7Y2FzZSJzb3J0IjpicmVhaztjYXNlImRlc2NlbmRpbmciOmJyZWFrO2Nhc2Uib3JkZXIiOmJyZWFrO2Nhc2UiY2FzZXNlbnNpdGl2ZSI6YnJlYWs7Y2FzZSJ2YWx1ZSI6YnJlYWs7Y2FzZSJlcnJvcnN0eWxlIjpicmVhaztjYXNlImVycm9ybWVzc2FnZSI6YnJlYWs7Y2FzZSJlcnJvcnRpdGxlIjpicmVhaztjYXNlImNlbGxyYW5nZWxpc3QiOmJyZWFrO2Nhc2UiaW5wdXRtZXNzYWdlIjpicmVhaztjYXNlImlucHV0dGl0bGUiOmJyZWFrO2Nhc2UiY29tYm9oaWRlIjpicmVhaztjYXNlImlucHV0aGlkZSI6YnJlYWs7Y2FzZSJjb25kaXRpb24iOmJyZWFrO2Nhc2UicXVhbGlmaWVyIjpicmVhaztjYXNlInVzZWJsYW5rIjpicmVhaztjYXNlInZhbHVlMSI6YnJlYWs7Y2FzZSJ2YWx1ZTIiOmJyZWFrO2Nhc2UiZm9ybWF0IjpicmVhaztkZWZhdWx0OnJlPSExfWJyZWFrO2Nhc2UibWFwaW5mbyI6Y2FzZSJzY2hlbWEiOmNhc2UiZGF0YSI6c3dpdGNoKHNbM10pe2Nhc2UibWFwIjpicmVhaztjYXNlImVudHJ5IjpicmVhaztjYXNlInJhbmdlIjpicmVhaztjYXNlInhwYXRoIjpicmVhaztjYXNlImZpZWxkIjpicmVhaztjYXNlInhzZHR5cGUiOmJyZWFrO2Nhc2UiZmlsdGVyb24iOmJyZWFrO2Nhc2UiYWdncmVnYXRlIjpicmVhaztjYXNlImVsZW1lbnR0eXBlIjpicmVhaztjYXNlImF0dHJpYnV0ZXR5cGUiOmJyZWFrO2Nhc2Uic2NoZW1hIjpjYXNlImVsZW1lbnQiOmNhc2UiY29tcGxleHR5cGUiOmNhc2UiZGF0YXR5cGUiOmNhc2UiYWxsIjpjYXNlImF0dHJpYnV0ZSI6Y2FzZSJleHRlbmRzIjpicmVhaztjYXNlInJvdyI6YnJlYWs7ZGVmYXVsdDpyZT0hMX1icmVhaztjYXNlInNtYXJ0dGFncyI6YnJlYWs7ZGVmYXVsdDpyZT0hMTticmVha31pZihyZXx8c1szXS5tYXRjaCgvIVxbQ0RBVEEvKSlicmVhaztpZighY1tjLmxlbmd0aC0xXVsxXSl0aHJvdyJVbnJlY29nbml6ZWQgdGFnOiAiK3NbM10rInwiK2Muam9pbigifCIpO2lmKGNbYy5sZW5ndGgtMV1bMF09PT0iY3VzdG9tZG9jdW1lbnRwcm9wZXJ0aWVzIil7aWYoc1swXS5zbGljZSgtMik9PT0iLz4iKWJyZWFrO3NbMV09PT0iLyI/TXYoTCx3ZSxpZSx0LnNsaWNlKEcscy5pbmRleCkpOihpZT1zLEc9cy5pbmRleCtzWzBdLmxlbmd0aCk7YnJlYWt9aWYoci5XVEYpdGhyb3ciVW5yZWNvZ25pemVkIHRhZzogIitzWzNdKyJ8IitjLmpvaW4oInwiKX12YXIga2U9e307cmV0dXJuIXIuYm9va1NoZWV0cyYmIXIuYm9va1Byb3BzJiYoa2UuU2hlZXRzPWwpLGtlLlNoZWV0TmFtZXM9dSxrZS5Xb3JrYm9vaz1aLGtlLlNTRj1VZShUZSksa2UuUHJvcHM9QixrZS5DdXN0cHJvcHM9TCxrZS5ib29rVHlwZT0ieGxtbCIsa2V9ZnVuY3Rpb24gU24oZSxhKXtzd2l0Y2goRG4oYT1hfHx7fSksYS50eXBlfHwiYmFzZTY0Iil7Y2FzZSJiYXNlNjQiOnJldHVybiB5bihJcihlKSxhKTtjYXNlImJpbmFyeSI6Y2FzZSJidWZmZXIiOmNhc2UiZmlsZSI6cmV0dXJuIHluKGUsYSk7Y2FzZSJhcnJheSI6cmV0dXJuIHluKGZhKGUpLGEpfX1mdW5jdGlvbiBXdihlKXt2YXIgYT17fSxyPWUuY29udGVudDtpZihyLmw9MjgsYS5BbnNpVXNlclR5cGU9ci5yZWFkX3NoaWZ0KDAsImxwc3RyLWFuc2kiKSxhLkFuc2lDbGlwYm9hcmRGb3JtYXQ9T28ociksci5sZW5ndGgtci5sPD00KXJldHVybiBhO3ZhciB0PXIucmVhZF9zaGlmdCg0KTtpZih0PT0wfHx0PjQwfHwoci5sLT00LGEuUmVzZXJ2ZWQxPXIucmVhZF9zaGlmdCgwLCJscHN0ci1hbnNpIiksci5sZW5ndGgtci5sPD00KXx8KHQ9ci5yZWFkX3NoaWZ0KDQpLHQhPT0xOTA3NTA1NjUyKXx8KGEuVW5pY29kZUNsaXBib2FyZEZvcm1hdD1ObyhyKSx0PXIucmVhZF9zaGlmdCg0KSx0PT0wfHx0PjQwKSlyZXR1cm4gYTtyLmwtPTQsYS5SZXNlcnZlZDI9ci5yZWFkX3NoaWZ0KDAsImxwd3N0ciIpfXZhciBWdj1bNjAsMTA4NCwyMDY2LDIxNjUsMjE3NV07ZnVuY3Rpb24gR3YoZSxhLHIsdCxuKXt2YXIgaT10LGY9W10scz1yLnNsaWNlKHIubCxyLmwraSk7aWYobiYmbi5lbmMmJm4uZW5jLmluc2l0dSYmcy5sZW5ndGg+MClzd2l0Y2goZSl7Y2FzZSA5OmNhc2UgNTIxOmNhc2UgMTAzMzpjYXNlIDIwNTc6Y2FzZSA0NzpjYXNlIDQwNTpjYXNlIDIyNTpjYXNlIDQwNjpjYXNlIDMxMjpjYXNlIDQwNDpjYXNlIDEwOmJyZWFrO2Nhc2UgMTMzOmJyZWFrO2RlZmF1bHQ6bi5lbmMuaW5zaXR1KHMpfWYucHVzaChzKSxyLmwrPWk7Zm9yKHZhciBjPWRhKHIsci5sKSxvPUNuW2NdLGw9MDtvIT1udWxsJiZWdi5pbmRleE9mKGMpPi0xOylpPWRhKHIsci5sKzIpLGw9ci5sKzQsYz09MjA2Nj9sKz00OihjPT0yMTY1fHxjPT0yMTc1KSYmKGwrPTEyKSxzPXIuc2xpY2UobCxyLmwrNCtpKSxmLnB1c2gocyksci5sKz00K2ksbz1DbltjPWRhKHIsci5sKV07dmFyIHU9eWEoZik7c3IodSwwKTt2YXIgeD0wO3UubGVucz1bXTtmb3IodmFyIGg9MDtoPGYubGVuZ3RoOysraCl1LmxlbnMucHVzaCh4KSx4Kz1mW2hdLmxlbmd0aDtpZih1Lmxlbmd0aDx0KXRocm93IlhMUyBSZWNvcmQgMHgiK2UudG9TdHJpbmcoMTYpKyIgVHJ1bmNhdGVkOiAiK3UubGVuZ3RoKyIgPCAiK3Q7cmV0dXJuIGEuZih1LHUubGVuZ3RoLG4pfWZ1bmN0aW9uIG5hKGUsYSxyKXtpZihlLnQhPT0ieiImJmUuWEYpe3ZhciB0PTA7dHJ5e3Q9ZS56fHxlLlhGLm51bUZtdElkfHwwLGEuY2VsbE5GJiZlLno9PW51bGwmJihlLno9VGVbdF0pfWNhdGNoKGkpe2lmKGEuV1RGKXRocm93IGl9aWYoIWF8fGEuY2VsbFRleHQhPT0hMSl0cnl7ZS50PT09ImUiP2Uudz1lLnd8fGJyW2Uudl06dD09PTB8fHQ9PSJHZW5lcmFsIj9lLnQ9PT0ibiI/KGUudnwwKT09PWUudj9lLnc9ZS52LnRvU3RyaW5nKDEwKTplLnc9eXQoZS52KTplLnc9UGEoZS52KTplLnc9UnIodCxlLnYse2RhdGUxOTA0OiEhcixkYXRlTkY6YSYmYS5kYXRlTkZ9KX1jYXRjaChpKXtpZihhLldURil0aHJvdyBpfWlmKGEuY2VsbERhdGVzJiZ0JiZlLnQ9PSJuIiYmWnIoVGVbdF18fFN0cmluZyh0KSkpe3ZhciBuPWNhKGUudisocj8xNDYyOjApKTtuJiYoZS50PSJkIixlLnY9bmV3IERhdGUoRGF0ZS5VVEMobi55LG4ubS0xLG4uZCxuLkgsbi5NLG4uUyxuLnUpKSl9fX1mdW5jdGlvbiBiMChlLGEscil7cmV0dXJue3Y6ZSxpeGZlOmEsdDpyfX12YXIgWHY9WyJub25lIiwidGhpbiIsIm1lZGl1bSIsImRhc2hlZCIsImRvdHRlZCIsInRoaWNrIiwiZG91YmxlIiwiaGFpciIsIm1lZGl1bURhc2hlZCIsImRhc2hEb3QiLCJtZWRpdW1EYXNoRG90IiwiZGFzaERvdERvdCIsIm1lZGl1bURhc2hEb3REb3QiLCJzbGFudERhc2hEb3QiXSx3Zj1bbnVsbCwibGVmdCIsImNlbnRlciIsInJpZ2h0IiwiZmlsbCIsImp1c3RpZnkiLCJjZW50ZXJDb250aW51b3VzIiwiZGlzdHJpYnV0ZWQiXSxGZj1bInRvcCIsImNlbnRlciIsImJvdHRvbSIsImp1c3RpZnkiLCJkaXN0cmlidXRlZCJdO2Z1bmN0aW9uIHp2KGUsYSl7dmFyIHI9ZS5sK2EsdD17fTtyZXR1cm4gYT49MTYmJih0Lng9ZS5yZWFkX3NoaWZ0KDQsImkiKSx0Lnk9ZS5yZWFkX3NoaWZ0KDQsImkiKSx0Lnc9ZS5yZWFkX3NoaWZ0KDQsImkiKSx0Lmg9ZS5yZWFkX3NoaWZ0KDQsImkiKSksZS5sPXIsdH1mdW5jdGlvbiAkdihlLGEpe3ZhciByPWUubCthLHQ9e307cmV0dXJuIGE+PTEyJiYodC5jYXRUeXBlPWUucmVhZF9zaGlmdCgyKSx0LnZhbFR5cGU9ZS5yZWFkX3NoaWZ0KDIpLHQuY0NhdD1lLnJlYWRfc2hpZnQoMiksdC5jVmFsPWUucmVhZF9zaGlmdCgyKSx0LmJ1YmJsZVR5cGU9ZS5yZWFkX3NoaWZ0KDIpLHQuY0J1YmJsZT1lLnJlYWRfc2hpZnQoMikpLGUubD1yLHR9ZnVuY3Rpb24gS3YoZSxhLHIpe3ZhciB0PWUubCthLG49e307YT49MiYmKG4uaWQ9ZS5yZWFkX3NoaWZ0KDIpKTt0cnl7ZS5sPHQmJihuLnRleHQ9emEoZSx0LWUubCxyKSl9Y2F0Y2h7ZS5sPXR9cmV0dXJuIGUubD10LG59ZnVuY3Rpb24ganYoZSxhKXt2YXIgcj1lLmwrYSx0PXt9O3JldHVybiBhPj0yMCYmKHQueD1lLnJlYWRfc2hpZnQoNCwiaSIpLHQueT1lLnJlYWRfc2hpZnQoNCwiaSIpLHQudz1lLnJlYWRfc2hpZnQoNCwiaSIpLHQuaD1lLnJlYWRfc2hpZnQoNCwiaSIpLHQuZG9jaz1lLnJlYWRfc2hpZnQoMSksdC5zcGFjaW5nPWUucmVhZF9zaGlmdCgxKSx0LmZsYWdzPWUucmVhZF9zaGlmdCgyKSksZS5sPXIsdH1mdW5jdGlvbiBZdihlLGEpe3ZhciByPWUubCthLHQ9e307cmV0dXJuIGE+PTImJih0LmF4aXNUeXBlPWUucmVhZF9zaGlmdCgyKSksZS5sPXIsdH1mdW5jdGlvbiBKdihlLGEpe3ZhciByPWUubCthLHQ9e307cmV0dXJuIGE+PTMyJiYodC5oQWxpZ249ZS5yZWFkX3NoaWZ0KDEpLHQudkFsaWduPWUucmVhZF9zaGlmdCgxKSx0LmJnTW9kZT1lLnJlYWRfc2hpZnQoMiksdC5jb2xvcj1lLnJlYWRfc2hpZnQoNCksdC54PWUucmVhZF9zaGlmdCg0LCJpIiksdC55PWUucmVhZF9zaGlmdCg0LCJpIiksdC53PWUucmVhZF9zaGlmdCg0LCJpIiksdC5oPWUucmVhZF9zaGlmdCg0LCJpIikpLGUubD1yLHR9ZnVuY3Rpb24gWnYoZSxhKXt2YXIgcj1lLmwrYSx0PXt9O2lmKGE+PTYpe3QuaWQ9ZS5yZWFkX3NoaWZ0KDEpLHQucnQ9ZS5yZWFkX3NoaWZ0KDEpLHQuZmxhZ3M9ZS5yZWFkX3NoaWZ0KDIpO3ZhciBuPWUucmVhZF9zaGlmdCgyKTt0LmNjZT1uLHQuZm9ybXVsYVJhdz1lLnNsaWNlKGUubCxNYXRoLm1pbihyLGUubCtuKSl9cmV0dXJuIGUubD1yLHR9ZnVuY3Rpb24gUWEoZSl7cmV0dXJuIGZ1bmN0aW9uKHIsdCl7dmFyIG49ci5sK3QsaT17dHlwZTplfTtyZXR1cm4gdD49MiYmKGkuZmxhZ3M9ci5yZWFkX3NoaWZ0KDIpKSxyLmw9bixpfX12YXIgcXY9UWEoImJhckNoYXJ0IiksUXY9UWEoImxpbmVDaGFydCIpLGUyPVFhKCJwaWVDaGFydCIpLHIyPVFhKCJhcmVhQ2hhcnQiKSxhMj1RYSgic2NhdHRlckNoYXJ0IiksdDI9UWEoInJhZGFyQ2hhcnQiKSxuMj1RYSgic3VyZmFjZUNoYXJ0Iik7ZnVuY3Rpb24gaTIoZSxhKXt2YXIgcj17b3B0czp7fX0sdD17fSxuPXt9O2EuZGVuc2UmJihuWyIhZGF0YSJdPVtdKTt2YXIgaT17fSxmPXt9LHM9bnVsbCxjPVtdLG89IiIsbD17fSx1LHg9IiIsaCxnLG0sZCxwPXt9LHc9W10sXyx5LFI9W10sUD1bXSxiPXt9LE49W10sST17U2hlZXRzOltdLFdCUHJvcHM6e2RhdGUxOTA0OiExfSxWaWV3czpbe31dfSxCPXt9LEw9ITEsRz1mdW5jdGlvbihNKXtyZXR1cm4gTTw4P3RhW01dOk08NjQmJk5bTS04XXx8dGFbTV19LGllPWZ1bmN0aW9uKE0pe2lmKE09PW51bGwpcmV0dXJuIG51bGw7dmFyIFk9RyhNKSx2PXtpbmRleGVkOk0saW5kZXg6TX07cmV0dXJuIFkmJih2LnJnYj1qYShZKSksWWEodixPZSl9LG5lPWZ1bmN0aW9uKE0pe2lmKCFNKXJldHVybiBudWxsO3ZhciBZPXt9O3N3aXRjaChNLnhjbHJUeXBlKXtjYXNlIDA6WS5hdXRvPTE7YnJlYWs7Y2FzZSAxOlk9aWUoTS54Y2xyVmFsdWUpfHx7fTticmVhaztjYXNlIDI6WS5yZ2I9amEoTS54Y2xyVmFsdWUpO2JyZWFrO2Nhc2UgMzpZLnRoZW1lPU0ueGNsclZhbHVlO2JyZWFrfXJldHVybiBNLm5UaW50U2hhZGUmJihZLnRpbnQ9TS5uVGludFNoYWRlPjA/TS5uVGludFNoYWRlLzMyNzY3Ok0ublRpbnRTaGFkZS8zMjc2OCksWWEoWSxPZSl9LHE9ZnVuY3Rpb24oTSxZKXtpZighTSlyZXR1cm4gbnVsbDt2YXIgdj17fTtyZXR1cm4gTS5uYW1lJiYodi5uYW1lPU0ubmFtZSksTS5zeiYmKHYuc3o9TS5zeiksTS5ib2xkJiYodi5ib2xkPSEwKSxNLml0YWxpYyYmKHYuaXRhbGljPSEwKSxNLnVuZGVybGluZSYmKHYudW5kZXJsaW5lPU0udW5kZXJsaW5lKSxNLnN0cmlrZSYmKHYuc3RyaWtlPSEwKSxNLm91dGxpbmUmJih2Lm91dGxpbmU9ITApLE0uc2hhZG93JiYodi5zaGFkb3c9ITApLE0uZmFtaWx5IT1udWxsJiYodi5mYW1pbHk9TS5mYW1pbHkpLE0uY2hhcnNldCE9bnVsbCYmKHYuY2hhcnNldD1NLmNoYXJzZXQpLE0udmVydEFsaWduPT0xP3YudmVydEFsaWduPSJzdXBlcnNjcmlwdCI6TS52ZXJ0QWxpZ249PTImJih2LnZlcnRBbGlnbj0ic3Vic2NyaXB0IiksWSYmWS5mb250U2NoZW1lIT1udWxsJiYodi5zY2hlbWU9WS5mb250U2NoZW1lPT0xPyJtYWpvciI6WS5mb250U2NoZW1lPT0yPyJtaW5vciI6Im5vbmUiKSx2LmNvbG9yPW5lKFkmJlkueGZleHRGb250KXx8aWUoTS5pY3YpLHYuY29sb3ImJnYuY29sb3IuYXV0byYmZGVsZXRlIHYuY29sb3Isdn0sbGU9ZnVuY3Rpb24oTSl7aWYoIU0pcmV0dXJuIG51bGw7dmFyIFk9e3BhdHRlcm5UeXBlOk0ucGF0dGVyblR5cGV8fCJub25lIn0sdj1uZShNLnhmZXh0Rm9yZSl8fGllKE0uaWN2Rm9yZSksVD1uZShNLnhmZXh0QmFjayl8fGllKE0uaWN2QmFjayk7cmV0dXJuIHYmJihZLmZnQ29sb3I9diksVCYmKFkuYmdDb2xvcj1UKSxNLmdyYWRpZW50RmlsbCYmKFkuZ3JhZGllbnRGaWxsPU0uZ3JhZGllbnRGaWxsKSxZfSxRPWZ1bmN0aW9uKE0sWSx2KXtpZighTSlyZXR1cm4gbnVsbDt2YXIgVD17c3R5bGU6WHZbTV18fCJ0aGluIn0saz1uZSh2KXx8aWUoWSk7cmV0dXJuIGsmJihULmNvbG9yPWspLFR9LGdlPWZ1bmN0aW9uKE0pe2lmKCFNKXJldHVybiBudWxsO3ZhciBZPXt9LHY7cmV0dXJuKHY9UShNLmRnTGVmdCxNLmljdkxlZnQsTS54ZmV4dExlZnQpKSYmKFkubGVmdD12KSwodj1RKE0uZGdSaWdodCxNLmljdlJpZ2h0LE0ueGZleHRSaWdodCkpJiYoWS5yaWdodD12KSwodj1RKE0uZGdUb3AsTS5pY3ZUb3AsTS54ZmV4dFRvcCkpJiYoWS50b3A9diksKHY9UShNLmRnQm90dG9tLE0uaWN2Qm90dG9tLE0ueGZleHRCb3R0b20pKSYmKFkuYm90dG9tPXYpLCh2PVEoTS5kZ0RpYWcsTS5pY3ZEaWFnLE0ueGZleHREaWFnKSkmJihZLmRpYWdvbmFsPXYpLE0uZ3JiaXREaWFnJjEmJihZLmRpYWdvbmFsVXA9ITApLE0uZ3JiaXREaWFnJjImJihZLmRpYWdvbmFsRG93bj0hMCkscHIoWSkubGVuZ3RoP1k6bnVsbH0sdWU9ZnVuY3Rpb24oTSl7aWYoIU0pcmV0dXJuIG51bGw7dmFyIFk9e307cmV0dXJuIHdmW00uYWxjXSYmKFkuaG9yaXpvbnRhbD13ZltNLmFsY10pLEZmW00uYWxjVl0mJk0uYWxjViE9MiYmKFkudmVydGljYWw9RmZbTS5hbGNWXSksTS5mV3JhcCYmKFkud3JhcFRleHQ9ITApLE0uZlNocmlua1RvRml0JiYoWS5zaHJpbmtUb0ZpdD0hMCksTS50cm90JiYoWS50ZXh0Um90YXRpb249TS50cm90KSxNLmNJbmRlbnQmJihZLmluZGVudD1NLmNJbmRlbnQpLE0uaVJlYWRPcmRlciYmKFkucmVhZGluZ09yZGVyPU0uaVJlYWRPcmRlcikscHIoWSkubGVuZ3RoP1k6bnVsbH0saj1mdW5jdGlvbihNLFkpe2lmKCFZKXJldHVybiBNO3ZhciB2PVkuZGF0YXx8e307WS5udW1GbXRJZCE9bnVsbCYmKE0ubnVtRm10SWQ9WS5udW1GbXRJZCxUZVtZLm51bUZtdElkXSE9bnVsbCYmKE0ubnVtRm10PVRlW1kubnVtRm10SWRdKSk7dmFyIFQ9cShQW1kuaWZudF0sWSk7VCYmKE0uZm9udD1UKTt2YXIgaz1sZSh2KTtrJiYoTS5maWxsPWssbGYoTSxrKSk7dmFyIEY9Z2Uodik7RiYmKE0uYm9yZGVyPUYpO3ZhciBFPXVlKHYpO3JldHVybiBFJiYoTS5hbGlnbm1lbnQ9RSksKFkubG9ja2VkfHxZLmhpZGRlbikmJihNLnByb3RlY3Rpb249e2xvY2tlZDpZLmxvY2tlZCxoaWRkZW46WS5oaWRkZW59KSxNfSx5ZT1mdW5jdGlvbihNLFkpe2lmKCFNKXJldHVybiBudWxsO2lmKFk9PW51bGwmJihZPVIuaW5kZXhPZihNKSksYltZXSlyZXR1cm4gYltZXTt2YXIgdj17aWQ6WSx4ZjpVZShNKX07cmV0dXJuIU0uZlN0eWxlJiZNLnhmSWQhPW51bGwmJk0ueGZJZCE9PVkmJlJbTS54ZklkXSYma2Eodix5ZShSW00ueGZJZF0sTS54ZklkKSksdi5pZD1ZLHYueGY9VWUoTSksaih2LE0pLGJbWV09dn0sYmU9ZnVuY3Rpb24oTSxZKXtpZighKCFNLlhGfHwhWXx8IVkuY2VsbFN0eWxlcykpe3ZhciB2PXllKE0uWEYsTS5peGZlKTt2JiYoTS5zPXYpfX0sbWU9ZnVuY3Rpb24oTSxZLHYpe2lmKCEoIUwmJmtlPjEpJiYhKHYuc2hlZXRSb3dzJiZNLnI+PXYuc2hlZXRSb3dzKSl7aWYodi5jZWxsU3R5bGVzJiZZLlhGJiZZLlhGLmRhdGEmJmJlKFksdiksZGVsZXRlIFkuaXhmZSxkZWxldGUgWS5YRix1PU0seD1EZShNKSwoIWZ8fCFmLnN8fCFmLmUpJiYoZj17czp7cjowLGM6MH0sZTp7cjowLGM6MH19KSxNLnI8Zi5zLnImJihmLnMucj1NLnIpLE0uYzxmLnMuYyYmKGYucy5jPU0uYyksTS5yKzE+Zi5lLnImJihmLmUucj1NLnIrMSksTS5jKzE+Zi5lLmMmJihmLmUuYz1NLmMrMSksdi5jZWxsRm9ybXVsYSYmWS5mKXtmb3IodmFyIFQ9MDtUPHcubGVuZ3RoOysrVClpZighKHdbVF1bMF0ucy5jPk0uY3x8d1tUXVswXS5zLnI+TS5yKSYmISh3W1RdWzBdLmUuYzxNLmN8fHdbVF1bMF0uZS5yPE0ucikpe1kuRj1JZSh3W1RdWzBdKSwod1tUXVswXS5zLmMhPU0uY3x8d1tUXVswXS5zLnIhPU0ucikmJmRlbGV0ZSBZLmYsWS5mJiYoWS5mPSIiK3dyKHdbVF1bMV0sZixNLHJlLFopKTticmVha319di5kZW5zZT8oblsiIWRhdGEiXVtNLnJdfHwoblsiIWRhdGEiXVtNLnJdPVtdKSxuWyIhZGF0YSJdW00ucl1bTS5jXT1ZKTpuW3hdPVl9fSxaPXtlbmM6ITEsc2JjY2g6MCxzbmFtZXM6W10sc2hhcmVkZjpwLGFycmF5Zjp3LHJydGFiaWQ6W10sbGFzdHVzZXI6IiIsYmlmZjo4LGNvZGVwYWdlOjAsd2lubG9ja2VkOjAsY2VsbFN0eWxlczohIWEmJiEhYS5jZWxsU3R5bGVzLGRyYXdpbmdzOiEhYSYmISFhLmRyYXdpbmdzLGNoYXJ0czohIWEmJiEhYS5jaGFydHMsV1RGOiEhYSYmISFhLldURn07YS5wYXNzd29yZCYmKFoucGFzc3dvcmQ9YS5wYXNzd29yZCk7dmFyIE9lLHdlPVtdLEFlPVtdLEE9W10sVT1bXSxPPSExLEQ9e2JsaXBzOltdfSx6PW51bGwscGU9W10sSj1udWxsLHJlPVtdO3JlLlNoZWV0TmFtZXM9Wi5zbmFtZXMscmUuc2hhcmVkZj1aLnNoYXJlZGYscmUuYXJyYXlmPVouYXJyYXlmLHJlLm5hbWVzPVtdLHJlLlhUST1bXTt2YXIgZWU9MCxrZT0wLGhlPTAseGU9W10sWGU9W10semUsamU9ZnVuY3Rpb24oKXtyZXR1cm4genx8KHo9e3JhdzpbXSxpbWFnZXM6W10sc2hhcGVzOltdLGNoYXJ0czpbXX0pLHp9LGRlPWZ1bmN0aW9uKE0pe2lmKE0mJiEoIWEuZHJhd2luZ3MmJiFhLmNoYXJ0cykpaWYoTS5ncm91cHMmJk0uYmxpcHMpRC5ibGlwcz1ELmJsaXBzLmNvbmNhdChNLmJsaXBzKTtlbHNle3ZhciBZPWplKCk7TS5yYXcmJlkucmF3LnB1c2goTS5yYXcpLE0uYmxpcHMmJk0uYmxpcHMubGVuZ3RoJiYoRC5ibGlwcz1ELmJsaXBzLmNvbmNhdChNLmJsaXBzKSksKE0uc2hhcGVzfHxbXSkuZm9yRWFjaChmdW5jdGlvbih2KXtwZS5wdXNoKHYpO3ZhciBUPXYuYmxpcElkIT1udWxsP0QuYmxpcHNbdi5ibGlwSWQtMV06bnVsbDtUJiZULmRhdGFVUkk/WS5pbWFnZXMucHVzaCh7aWQ6Inhscy1pbWFnZS0iKyhZLmltYWdlcy5sZW5ndGgrMSksb2JqZWN0SWQ6di5zcGlkLGJpZmZUeXBlOiJtc29EcmF3aW5nIixhbmNob3I6di5hbmNob3IsZGF0YVVSSTpULmRhdGFVUkksY29udGVudFR5cGU6VC5jb250ZW50VHlwZSxyYXc6di5yYXd9KTpZLnNoYXBlcy5wdXNoKHtpZDoieGxzLXNoYXBlLSIrKFkuc2hhcGVzLmxlbmd0aCsxKSxvYmplY3RJZDp2LnNwaWQsYmlmZlR5cGU6Im1zb0RyYXdpbmciLGFuY2hvcjp2LmFuY2hvcixwcm9wczp2LnByb3BzLHJhdzp2LnJhd30pfSl9fSxXZT1mdW5jdGlvbihNKXtpZighKCFNfHwhTS5JbURhdGF8fCFNLkltRGF0YS5kYXRhKSYmISghYS5kcmF3aW5ncyYmIWEuY2hhcnRzKSl7dmFyIFk9amUoKSx2PU0uSW1EYXRhLmRhdGEsVD1Lcyh2LDAsdi5sZW5ndGgpLGs9TS5fc2hhcGV8fHt9LEY9e2lkOiJ4bHMtaW1kYXRhLSIrKFkuaW1hZ2VzLmxlbmd0aCsxKSxvYmplY3RJZDpNLmNtbyYmTS5jbW9bMF0sYmlmZlR5cGU6ImltRGF0YSIsYW5jaG9yOmsuYW5jaG9yLHJhdzpNLkltRGF0YX07VFsxXT8oRi5jb250ZW50VHlwZT1UWzFdLEYuZGF0YVVSST0iZGF0YToiK1RbMV0rIjtiYXNlNjQsIit6MCh2LnNsaWNlKFRbMF0pKSxZLmltYWdlcy5wdXNoKEYpKTpZLnNoYXBlcy5wdXNoKHtpZDoieGxzLWltZGF0YS0iKyhZLnNoYXBlcy5sZW5ndGgrMSksb2JqZWN0SWQ6Ri5vYmplY3RJZCxiaWZmVHlwZToiaW1EYXRhIixhbmNob3I6ay5hbmNob3IscmF3Ok0uSW1EYXRhfSl9fSxmZT1mdW5jdGlvbigpe0o9e3R5cGU6bnVsbCx0aXRsZToiIixzZXJpZXM6W10sc2VyaWVzVGV4dDpbXSxyYXc6W10sY3VycmVudDpudWxsfX0sc2E9ZnVuY3Rpb24oTSxZKXtzd2l0Y2goSnx8ZmUoKSxKLnJhdy5wdXNoKHtydDpNLHY6WX0pLE0pe2Nhc2UgNDA5OTpKLmN1cnJlbnQ9e3JhdzpZLG5hbWU6IiIsZGF0YTpbXX0sSi5zZXJpZXMucHVzaChKLmN1cnJlbnQpO2JyZWFrO2Nhc2UgNDEwOTpZJiZZLnRleHQmJihKLmN1cnJlbnQmJiFKLmN1cnJlbnQubmFtZT9KLmN1cnJlbnQubmFtZT1ZLnRleHQ6Si50aXRsZT9KLnNlcmllc1RleHQucHVzaChZLnRleHQpOkoudGl0bGU9WS50ZXh0KTticmVhaztjYXNlIDQxMTk6Y2FzZSA0MTIwOmNhc2UgNDEyMTpjYXNlIDQxMjI6Y2FzZSA0MTIzOmNhc2UgNDE1ODpjYXNlIDQxNTk6WSYmWS50eXBlJiYoSi50eXBlPVkudHlwZSk7YnJlYWs7Y2FzZSA0MTc3OkouY3VycmVudCYmKEouY3VycmVudC5icmFpfHwoSi5jdXJyZW50LmJyYWk9W10pLEouY3VycmVudC5icmFpLnB1c2goWSkpO2JyZWFrfX0sanI9ZnVuY3Rpb24oTSl7aWYoIUp8fCFKLnJhdy5sZW5ndGgpcmV0dXJuIG51bGw7dmFyIFk9e3R5cGU6Si50eXBlfHwiYmFyQ2hhcnQiLHRpdGxlOkoudGl0bGUsc2VyaWVzOltdLHJhdzpKLnJhd307aWYoTSYmTVsiIXJlZiJdKXt2YXIgdj1aZShNWyIhcmVmIl0pLFQ9TVsiIWRhdGEiXSE9bnVsbCxrLEYsRSxTPSExO2ZvcihGPXYucy5yO0Y8PXYuZS5yOysrRilFPVQ/KE1bIiFkYXRhIl1bRl18fFtdKVt2LnMuY106TVtEZSh7cjpGLGM6di5zLmN9KV0sRSYmRS50PT0ibiImJihTPSEwKTt2YXIgVz1bXTtpZighUyYmdi5lLmM+di5zLmMpZm9yKEY9di5zLnI7Rjw9di5lLnI7KytGKUU9VD8oTVsiIWRhdGEiXVtGXXx8W10pW3Yucy5jXTpNW0RlKHtyOkYsYzp2LnMuY30pXSxXLnB1c2goRT9FLnd8fEUudjoiIik7Zm9yKGs9di5zLmMrKFcubGVuZ3RoPzE6MCk7azw9di5lLmM7KytrKXt2YXIgSz1bXSxIPShKLnNlcmllc1trLXYucy5jXXx8Si5zZXJpZXNbay12LnMuYy0xXXx8e30pLm5hbWV8fCIiO2ZvcihGPXYucy5yO0Y8PXYuZS5yOysrRilFPVQ/KE1bIiFkYXRhIl1bRl18fFtdKVtrXTpNW0RlKHtyOkYsYzprfSldLEUmJkUudD09Im4iP0sucHVzaChFLnYpOkUmJkUudiE9bnVsbCYmIWlzTmFOKCtFLnYpJiZLLnB1c2goK0Uudik7Sy5sZW5ndGgmJlkuc2VyaWVzLnB1c2goe25hbWU6SCxkYXRhOkssdmFsOnt2YWx1ZXM6S30sY2F0Ont2YWx1ZXM6V319KX19cmV0dXJuIFkuc2VyaWVzLmxlbmd0aHx8Si5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihWKXtZLnNlcmllcy5wdXNoKHtuYW1lOlYubmFtZXx8IiIsZGF0YTpbXSxyYXc6Vn0pfSksWX0sWWU9ZnVuY3Rpb24oTSl7aWYoTVsiIW1lcmdlcyJdJiZNWyIhbWVyZ2VzIl0ubGVuZ3RoKXt2YXIgWT1UbihNLHtXVEY6ISEoYSYmKGEuV1RGfHxhLnZhbGlkYXRlTWVyZ2VzKSl9KTtZLmxlbmd0aCYmKE1bIiFtZXJnZUVycm9ycyJdPVkpfXomJih6LmltYWdlcy5sZW5ndGh8fHouc2hhcGVzLmxlbmd0aHx8ei5jaGFydHMubGVuZ3RofHx6LnJhdy5sZW5ndGgpJiYoTVsiIWRyYXdpbmdzIl09eik7dmFyIHY9YS5jaGFydHM/anIoTSk6bnVsbDt2JiYoTVsiIWNoYXJ0Il09dixNWyIhY2hhcnRzIl18fChNWyIhY2hhcnRzIl09W10pLHomJnouY2hhcnRzLmxlbmd0aD96LmNoYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKFQpe1QubW9kZWx8fChULm1vZGVsPXYpLE1bIiFjaGFydHMiXS5wdXNoKFQpfSk6TVsiIWNoYXJ0cyJdLnB1c2goe2lkOiJ4bHMtY2hhcnQtIitNWyIhY2hhcnRzIl0ubGVuZ3RoLHRpdGxlOnYudGl0bGUsbW9kZWw6dixyYXc6di5yYXcsYW5jaG9yOnt0eXBlOiJhYnNvbHV0ZUFuY2hvciIscG9zOnt4OjAseTowfSxleHQ6e2N4OjQ4MCo5NTI1LGN5OjI4OCo5NTI1fX19KSl9O1ouY29kZXBhZ2U9MTIwMCxZcigxMjAwKTtmb3IodmFyIFJhPSExO2UubDxlLmxlbmd0aC0xOyl7dmFyIE9hPWUubCxFZT1lLnJlYWRfc2hpZnQoMik7aWYoRWU9PT0wJiZlZT09PTEwKWJyZWFrO3ZhciBycj1lLmw9PT1lLmxlbmd0aD8wOmUucmVhZF9zaGlmdCgyKSxGcj1DbltFZV07aWYoa2U9PTAmJls5LDUyMSwxMDMzLDIwNTddLmluZGV4T2YoRWUpPT0tMSlicmVhaztpZihGciYmRnIuZil7aWYoYS5ib29rU2hlZXRzJiZlZT09PTEzMyYmRWUhPT0xMzMpYnJlYWs7aWYoZWU9RWUsRnIucj09PTJ8fEZyLnI9PTEyKXt2YXIgRmE9ZS5yZWFkX3NoaWZ0KDIpO2lmKHJyLT0yLCFaLmVuYyYmRmEhPT1FZSYmKChGYSYyNTUpPDw4fEZhPj44KSE9PUVlKXRocm93IG5ldyBFcnJvcigicnQgbWlzbWF0Y2g6ICIrRmErIiE9IitFZSk7RnIucj09MTImJihlLmwrPTEwLHJyLT0xMCl9dmFyIEM9e307aWYoRWU9PT0xMD9DPUZyLmYoZSxycixaKTpDPUd2KEVlLEZyLGUscnIsWiksa2U9PTAmJls5LDUyMSwxMDMzLDIwNTddLmluZGV4T2YoZWUpPT09LTEpY29udGludWU7c3dpdGNoKEVlKXtjYXNlIDM0OnIub3B0cy5EYXRlMTkwND1JLldCUHJvcHMuZGF0ZTE5MDQ9QzticmVhaztjYXNlIDEzNDpyLm9wdHMuV3JpdGVQcm90ZWN0PSEwO2JyZWFrO2Nhc2UgNDc6aWYoWi5lbmN8fChlLmw9MCksWi5lbmM9QywhYS5wYXNzd29yZCl0aHJvdyBuZXcgRXJyb3IoIkZpbGUgaXMgcGFzc3dvcmQtcHJvdGVjdGVkIik7aWYoQy52YWxpZD09bnVsbCl0aHJvdyBuZXcgRXJyb3IoIkVuY3J5cHRpb24gc2NoZW1lIHVuc3VwcG9ydGVkIik7aWYoIUMudmFsaWQpdGhyb3cgbmV3IEVycm9yKCJQYXNzd29yZCBpcyBpbmNvcnJlY3QiKTticmVhaztjYXNlIDkyOloubGFzdHVzZXI9QzticmVhaztjYXNlIDY2OnZhciBCcj1OdW1iZXIoQyk7c3dpdGNoKEJyKXtjYXNlIDIxMDEwOkJyPTEyMDA7YnJlYWs7Y2FzZSAzMjc2ODpCcj0xZTQ7YnJlYWs7Y2FzZSAzMjc2OTpCcj0xMjUyO2JyZWFrfVlyKFouY29kZXBhZ2U9QnIpLFJhPSEwO2JyZWFrO2Nhc2UgMzE3OloucnJ0YWJpZD1DO2JyZWFrO2Nhc2UgMjU6Wi53aW5sb2NrZWQ9QzticmVhaztjYXNlIDQzOTpyLm9wdHMuUmVmcmVzaEFsbD1DO2JyZWFrO2Nhc2UgMTI6ci5vcHRzLkNhbGNDb3VudD1DO2JyZWFrO2Nhc2UgMTY6ci5vcHRzLkNhbGNEZWx0YT1DO2JyZWFrO2Nhc2UgMTc6ci5vcHRzLkNhbGNJdGVyPUM7YnJlYWs7Y2FzZSAxMzpyLm9wdHMuQ2FsY01vZGU9QzticmVhaztjYXNlIDE0OnIub3B0cy5DYWxjUHJlY2lzaW9uPUM7YnJlYWs7Y2FzZSA5NTpyLm9wdHMuQ2FsY1NhdmVSZWNhbGM9QzticmVhaztjYXNlIDE1OlouQ2FsY1JlZk1vZGU9QzticmVhaztjYXNlIDIyMTE6ci5vcHRzLkZ1bGxDYWxjPUM7YnJlYWs7Y2FzZSAxMjk6Qy5mRGlhbG9nJiYoblsiIXR5cGUiXT0iZGlhbG9nIiksQy5mQmVsb3d8fCgoblsiIW91dGxpbmUiXXx8KG5bIiFvdXRsaW5lIl09e30pKS5hYm92ZT0hMCksQy5mUmlnaHR8fCgoblsiIW91dGxpbmUiXXx8KG5bIiFvdXRsaW5lIl09e30pKS5sZWZ0PSEwKTticmVhaztjYXNlIDY3OmNhc2UgNTc5OmNhc2UgMTA5MTpjYXNlIDIyNDpSLnB1c2goQyk7YnJlYWs7Y2FzZSA0OTpQLnB1c2goQyksWi5iaWZmPj01JiZQLmxlbmd0aD09NCYmUC5wdXNoKG51bGwpO2JyZWFrO2Nhc2UgNDMwOnJlLnB1c2goW0NdKSxyZVtyZS5sZW5ndGgtMV0uWFRJPVtdO2JyZWFrO2Nhc2UgMzU6Y2FzZSA1NDc6cmVbcmUubGVuZ3RoLTFdLnB1c2goQyk7YnJlYWs7Y2FzZSAyNDpjYXNlIDUzNjp6ZT17TmFtZTpDLk5hbWUsUmVmOndyKEMucmdjZSxmLG51bGwscmUsWil9LEMuaXRhYj4wJiYoemUuU2hlZXQ9Qy5pdGFiLTEpLHJlLm5hbWVzLnB1c2goemUpLHJlWzBdfHwocmVbMF09W10scmVbMF0uWFRJPVtdKSxyZVtyZS5sZW5ndGgtMV0ucHVzaChDKSxDLk5hbWU9PSJfeGxubS5fRmlsdGVyRGF0YWJhc2UiJiZDLml0YWI+MCYmQy5yZ2NlJiZDLnJnY2VbMF0mJkMucmdjZVswXVswXSYmQy5yZ2NlWzBdWzBdWzBdPT0iUHRnQXJlYTNkIiYmKFhlW0MuaXRhYi0xXT17cmVmOkllKEMucmdjZVswXVswXVsxXVsyXSl9KTticmVhaztjYXNlIDIyOlouRXh0ZXJuQ291bnQ9QzticmVhaztjYXNlIDIzOnJlLmxlbmd0aD09MCYmKHJlWzBdPVtdLHJlWzBdLlhUST1bXSkscmVbcmUubGVuZ3RoLTFdLlhUST1yZVtyZS5sZW5ndGgtMV0uWFRJLmNvbmNhdChDKSxyZS5YVEk9cmUuWFRJLmNvbmNhdChDKTticmVhaztjYXNlIDIxOTY6aWYoWi5iaWZmPDgpYnJlYWs7emUhPW51bGwmJih6ZS5Db21tZW50PUNbMV0pO2JyZWFrO2Nhc2UgMTg6blsiIXByb3RlY3QiXT1DO2JyZWFrO2Nhc2UgMTk6QyE9PTAmJlouV1RGJiZjb25zb2xlLmVycm9yKCJQYXNzd29yZCB2ZXJpZmllcjogIitDKTticmVhaztjYXNlIDEzMzppW1ouYmlmZj09ND9aLnNuYW1lcy5sZW5ndGg6Qy5wb3NdPUMsWi5zbmFtZXMucHVzaChDLm5hbWUpO2JyZWFrO2Nhc2UgMTA6e2lmKC0ta2U/IUw6TClicmVhaztpZihmLmUpe2lmKGYuZS5yPjAmJmYuZS5jPjApe2lmKGYuZS5yLS0sZi5lLmMtLSxuWyIhcmVmIl09SWUoZiksYS5zaGVldFJvd3MmJmEuc2hlZXRSb3dzPD1mLmUucil7dmFyIF90PWYuZS5yO2YuZS5yPWEuc2hlZXRSb3dzLTEsblsiIWZ1bGxyZWYiXT1uWyIhcmVmIl0sblsiIXJlZiJdPUllKGYpLGYuZS5yPV90fWYuZS5yKyssZi5lLmMrK313ZS5sZW5ndGg+MCYmKG5bIiFtZXJnZXMiXT13ZSksQWUubGVuZ3RoPjAmJihuWyIhb2JqZWN0cyJdPUFlKSxBLmxlbmd0aD4wJiYoblsiIWNvbHMiXT1BKSxVLmxlbmd0aD4wJiYoblsiIXJvd3MiXT1VKSxZZShuKSxJLlNoZWV0cy5wdXNoKEIpfW89PT0iIj9sPW46dFtvXT1uLG49e30sYS5kZW5zZSYmKG5bIiFkYXRhIl09W10pfWJyZWFrO2Nhc2UgOTpjYXNlIDUyMTpjYXNlIDEwMzM6Y2FzZSAyMDU3OntpZihaLmJpZmY9PT04JiYoWi5iaWZmPXs5OjIsNTIxOjMsMTAzMzo0fVtFZV18fHs1MTI6Miw3Njg6MywxMDI0OjQsMTI4MDo1LDE1MzY6OCwyOjIsNzoyfVtDLkJJRkZWZXJdfHw4KSxaLmJpZmZndWVzcz1DLkJJRkZWZXI9PTAsQy5CSUZGVmVyPT0wJiZDLmR0PT00MDk2JiYoWi5iaWZmPTUsUmE9ITAsWXIoWi5jb2RlcGFnZT0yODU5MSkpLFouYmlmZj09NCYmQy5kdCYyNTYmJihMPSEwKSxaLmJpZmY9PTgmJkMuQklGRlZlcj09MCYmQy5kdD09MTYmJihaLmJpZmY9Miksa2UrKyYmIUwpYnJlYWs7aWYobj17fSxhLmRlbnNlJiYoblsiIWRhdGEiXT1bXSksWi5iaWZmPDgmJiFSYSYmKFJhPSEwLFlyKFouY29kZXBhZ2U9YS5jb2RlcGFnZXx8MTI1MikpLFouYmlmZj09NCYmTClvPShpW1ouc25hbWVzLmluZGV4T2YobykrMV18fHtuYW1lOiIifSkubmFtZTtlbHNlIGlmKFouYmlmZjw1fHxDLkJJRkZWZXI9PTAmJkMuZHQ9PTQwOTYpe289PT0iIiYmKG89IlNoZWV0MSIpLGY9e3M6e3I6MCxjOjB9LGU6e3I6MCxjOjB9fTt2YXIgUXQ9e3BvczplLmwtcnIsbmFtZTpvfTtpW1F0LnBvc109UXQsWi5zbmFtZXMucHVzaChvKX1lbHNlIG89KGlbT2FdfHx7bmFtZToiIn0pLm5hbWU7Qy5kdD09MzImJihuWyIhdHlwZSJdPSJjaGFydCIpLEMuZHQ9PTY0JiYoblsiIXR5cGUiXT0ibWFjcm8iKSx3ZT1bXSxBZT1bXSx6PW51bGwscGU9W10sZmUoKSxaLmFycmF5Zj13PVtdLEE9W10sVT1bXSxPPSExLEI9e0hpZGRlbjooaVtPYV18fHtoczowfSkuaHMsbmFtZTpvfX1icmVhaztjYXNlIDUxNTpjYXNlIDM6Y2FzZSAyOm5bIiF0eXBlIl09PSJjaGFydCImJihhLmRlbnNlPyhuWyIhZGF0YSJdW0Mucl18fFtdKVtDLmNdOm5bSGUoQy5jKStHZShDLnIpXSkmJisrQy5jLF89e2l4ZmU6Qy5peGZlLFhGOlJbQy5peGZlXXx8e30sdjpDLnZhbCx0OiJuIn0saGU+MCYmKF8uej1fLlhGJiZfLlhGLm51bUZtdElkJiZ4ZVtfLlhGLm51bUZtdElkXXx8eGVbXy5peGZlPj44JjYzXSksbmEoXyxhLHIub3B0cy5EYXRlMTkwNCksbWUoe2M6Qy5jLHI6Qy5yfSxfLGEpO2JyZWFrO2Nhc2UgNTpjYXNlIDUxNzpfPXtpeGZlOkMuaXhmZSxYRjpSW0MuaXhmZV0sdjpDLnZhbCx0OkMudH0saGU+MCYmKF8uej1fLlhGJiZfLlhGLm51bUZtdElkJiZ4ZVtfLlhGLm51bUZtdElkXXx8eGVbXy5peGZlPj44JjYzXSksbmEoXyxhLHIub3B0cy5EYXRlMTkwNCksbWUoe2M6Qy5jLHI6Qy5yfSxfLGEpO2JyZWFrO2Nhc2UgNjM4Ol89e2l4ZmU6Qy5peGZlLFhGOlJbQy5peGZlXSx2OkMucmtudW0sdDoibiJ9LGhlPjAmJihfLno9Xy5YRiYmXy5YRi5udW1GbXRJZCYmeGVbXy5YRi5udW1GbXRJZF18fHhlW18uaXhmZT4+OCY2M10pLG5hKF8sYSxyLm9wdHMuRGF0ZTE5MDQpLG1lKHtjOkMuYyxyOkMucn0sXyxhKTticmVhaztjYXNlIDE4OTpmb3IodmFyIE5hPUMuYztOYTw9Qy5DOysrTmEpe3ZhciBlMD1DLnJrcmVjW05hLUMuY11bMF07Xz17aXhmZTplMCxYRjpSW2UwXSx2OkMucmtyZWNbTmEtQy5jXVsxXSx0OiJuIn0saGU+MCYmKF8uej1fLlhGJiZfLlhGLm51bUZtdElkJiZ4ZVtfLlhGLm51bUZtdElkXXx8eGVbXy5peGZlPj44JjYzXSksbmEoXyxhLHIub3B0cy5EYXRlMTkwNCksbWUoe2M6TmEscjpDLnJ9LF8sYSl9YnJlYWs7Y2FzZSA2OmNhc2UgNTE4OmNhc2UgMTAzMDp7aWYoQy52YWw9PSJTdHJpbmciKXtzPUM7YnJlYWt9aWYoXz1iMChDLnZhbCxDLmNlbGwuaXhmZSxDLnR0KSxfLlhGPVJbXy5peGZlXSxhLmNlbGxGb3JtdWxhKXt2YXIgTWE9Qy5mb3JtdWxhO2lmKE1hJiZNYVswXSYmTWFbMF1bMF0mJk1hWzBdWzBdWzBdPT0iUHRnRXhwIil7dmFyIFUwPU1hWzBdWzBdWzFdWzBdLGF0PU1hWzBdWzBdWzFdWzFdLEgwPURlKHtyOlUwLGM6YXR9KTtwW0gwXT9fLmY9IiIrd3IoQy5mb3JtdWxhLGYsQy5jZWxsLHJlLFopOl8uRj0oKGEuZGVuc2U/KG5bIiFkYXRhIl1bVTBdfHxbXSlbYXRdOm5bSDBdKXx8e30pLkZ9ZWxzZSBfLmY9IiIrd3IoQy5mb3JtdWxhLGYsQy5jZWxsLHJlLFopfWhlPjAmJihfLno9Xy5YRiYmXy5YRi5udW1GbXRJZCYmeGVbXy5YRi5udW1GbXRJZF18fHhlW18uaXhmZT4+OCY2M10pLG5hKF8sYSxyLm9wdHMuRGF0ZTE5MDQpLG1lKEMuY2VsbCxfLGEpLHM9Q31icmVhaztjYXNlIDc6Y2FzZSA1MTk6aWYocylzLnZhbD1DLF89YjAoQyxzLmNlbGwuaXhmZSwicyIpLF8uWEY9UltfLml4ZmVdLGEuY2VsbEZvcm11bGEmJihfLmY9IiIrd3Iocy5mb3JtdWxhLGYscy5jZWxsLHJlLFopKSxoZT4wJiYoXy56PV8uWEYmJl8uWEYubnVtRm10SWQmJnhlW18uWEYubnVtRm10SWRdfHx4ZVtfLml4ZmU+PjgmNjNdKSxuYShfLGEsci5vcHRzLkRhdGUxOTA0KSxtZShzLmNlbGwsXyxhKSxzPW51bGw7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIlN0cmluZyByZWNvcmQgZXhwZWN0cyBGb3JtdWxhIik7YnJlYWs7Y2FzZSAzMzpjYXNlIDU0NTp7dy5wdXNoKEMpO3ZhciBXMD1EZShDWzBdLnMpO2lmKGg9YS5kZW5zZT8oblsiIWRhdGEiXVtDWzBdLnMucl18fFtdKVtDWzBdLnMuY106bltXMF0sYS5jZWxsRm9ybXVsYSYmaCl7aWYoIXN8fCFXMHx8IWgpYnJlYWs7aC5mPSIiK3dyKENbMV0sZixDWzBdLHJlLFopLGguRj1JZShDWzBdKX19YnJlYWs7Y2FzZSAxMjEyOntpZighYS5jZWxsRm9ybXVsYSlicmVhaztpZih4KXtpZighcylicmVhaztwW0RlKHMuY2VsbCldPUNbMF0saD1hLmRlbnNlPyhuWyIhZGF0YSJdW3MuY2VsbC5yXXx8W10pW3MuY2VsbC5jXTpuW0RlKHMuY2VsbCldLChofHx7fSkuZj0iIit3cihDWzBdLGYsdSxyZSxaKX19YnJlYWs7Y2FzZSAyNTM6Xz1iMChjW0MuaXNzdF0udCxDLml4ZmUsInMiKSxjW0MuaXNzdF0uaCYmKF8uaD1jW0MuaXNzdF0uaCksXy5YRj1SW18uaXhmZV0saGU+MCYmKF8uej1fLlhGJiZfLlhGLm51bUZtdElkJiZ4ZVtfLlhGLm51bUZtdElkXXx8eGVbXy5peGZlPj44JjYzXSksbmEoXyxhLHIub3B0cy5EYXRlMTkwNCksbWUoe2M6Qy5jLHI6Qy5yfSxfLGEpO2JyZWFrO2Nhc2UgNTEzOmEuc2hlZXRTdHVicyYmKF89e2l4ZmU6Qy5peGZlLFhGOlJbQy5peGZlXSx0OiJ6In0saGU+MCYmKF8uej1fLlhGJiZfLlhGLm51bUZtdElkJiZ4ZVtfLlhGLm51bUZtdElkXXx8eGVbXy5peGZlPj44JjYzXSksbmEoXyxhLHIub3B0cy5EYXRlMTkwNCksbWUoe2M6Qy5jLHI6Qy5yfSxfLGEpKTticmVhaztjYXNlIDE5MDppZihhLnNoZWV0U3R1YnMpZm9yKHZhciBrdD1DLmM7a3Q8PUMuQzsrK2t0KXt2YXIgVjA9Qy5peGZlW2t0LUMuY107Xz17aXhmZTpWMCxYRjpSW1YwXSx0OiJ6In0saGU+MCYmKF8uej1fLlhGJiZfLlhGLm51bUZtdElkJiZ4ZVtfLlhGLm51bUZtdElkXXx8eGVbXy5peGZlPj44JjYzXSksbmEoXyxhLHIub3B0cy5EYXRlMTkwNCksbWUoe2M6a3QscjpDLnJ9LF8sYSl9YnJlYWs7Y2FzZSAyMTQ6Y2FzZSA1MTY6Y2FzZSA0Ol89YjAoQy52YWwsQy5peGZlLCJzIiksXy5YRj1SW18uaXhmZV0saGU+MCYmKF8uej1fLlhGJiZfLlhGLm51bUZtdElkJiZ4ZVtfLlhGLm51bUZtdElkXXx8eGVbXy5peGZlPj44JjYzXSksbmEoXyxhLHIub3B0cy5EYXRlMTkwNCksbWUoe2M6Qy5jLHI6Qy5yfSxfLGEpO2JyZWFrO2Nhc2UgMDpjYXNlIDUxMjprZT09PTEmJihmPUMpO2JyZWFrO2Nhc2UgMjUyOmM9QzticmVhaztjYXNlIDEwNTQ6aWYoWi5iaWZmPj0zJiZaLmJpZmY8PTQpe3hlW2hlKytdPUNbMV07Zm9yKHZhciB3dD0wO3d0PGhlKzE2MyYmVGVbd3RdIT1DWzFdOysrd3QpO3d0Pj0xNjMmJkxhKENbMV0saGUrMTYzKX1lbHNlIExhKENbMV0sQ1swXSk7YnJlYWs7Y2FzZSAzMDp7eGVbaGUrK109Qztmb3IodmFyIEZ0PTA7RnQ8aGUrMTYzJiZUZVtGdF0hPUM7KytGdCk7RnQ+PTE2MyYmTGEoQyxoZSsxNjMpfWJyZWFrO2Nhc2UgMjI5OndlPXdlLmNvbmNhdChDKTticmVhaztjYXNlIDIzNTpkZShDKTticmVhaztjYXNlIDIzNjpkZShDKTticmVhaztjYXNlIDkzOmlmKEFlW0MuY21vWzBdXT1aLmxhc3RvYmo9QyxwZS5sZW5ndGgmJihDLl9zaGFwZT1wZS5zaGlmdCgpLEMuX3NoYXBlLm9iamVjdD1DLEMuY21vWzFdPT01KSl7dmFyIFVuPWplKCk7VW4uY2hhcnRzLnB1c2goe2lkOiJ4bHMtY2hhcnQtb2JqZWN0LSIrQy5jbW9bMF0sb2JqZWN0SWQ6Qy5jbW9bMF0sYmlmZlR5cGU6Im9iaiIsYW5jaG9yOkMuX3NoYXBlLmFuY2hvcixyYXc6Qy5fc2hhcGUucmF3fSl9YnJlYWs7Y2FzZSA0Mzg6Wi5sYXN0b2JqLlR4Tz1DO2JyZWFrO2Nhc2UgMTI3OloubGFzdG9iai5JbURhdGE9QyxXZShaLmxhc3RvYmopO2JyZWFrO2Nhc2UgNDQwOmZvcihkPUNbMF0ucy5yO2Q8PUNbMF0uZS5yOysrZClmb3IobT1DWzBdLnMuYzttPD1DWzBdLmUuYzsrK20paD1hLmRlbnNlPyhuWyIhZGF0YSJdW2RdfHxbXSlbbV06bltEZSh7YzptLHI6ZH0pXSxoJiYoaC5sPUNbMV0pO2JyZWFrO2Nhc2UgMjA0ODpmb3IoZD1DWzBdLnMucjtkPD1DWzBdLmUucjsrK2QpZm9yKG09Q1swXS5zLmM7bTw9Q1swXS5lLmM7KyttKWg9YS5kZW5zZT8oblsiIWRhdGEiXVtkXXx8W10pW21dOm5bRGUoe2M6bSxyOmR9KV0saCYmaC5sJiYoaC5sLlRvb2x0aXA9Q1sxXSk7YnJlYWs7Y2FzZSAyODp7aWYoaD1hLmRlbnNlPyhuWyIhZGF0YSJdW0NbMF0ucl18fFtdKVtDWzBdLmNdOm5bRGUoQ1swXSldLGh8fChhLmRlbnNlPyhuWyIhZGF0YSJdW0NbMF0ucl18fChuWyIhZGF0YSJdW0NbMF0ucl09W10pLGg9blsiIWRhdGEiXVtDWzBdLnJdW0NbMF0uY109e3Q6InoifSk6aD1uW0RlKENbMF0pXT17dDoieiJ9LGYuZS5yPU1hdGgubWF4KGYuZS5yLENbMF0uciksZi5zLnI9TWF0aC5taW4oZi5zLnIsQ1swXS5yKSxmLmUuYz1NYXRoLm1heChmLmUuYyxDWzBdLmMpLGYucy5jPU1hdGgubWluKGYucy5jLENbMF0uYykpLGguY3x8KGguYz1bXSksWi5iaWZmPD01JiZaLmJpZmY+PTIpZz17YToiU2hlZXRKNSIsdDpDWzFdfTtlbHNle3ZhciBIbj1BZVtDWzJdXTtnPXthOkNbMV0sdDpIbi5UeE8udH0sQ1szXSE9bnVsbCYmIShDWzNdJjIpJiYoaC5jLmhpZGRlbj0hMCl9aC5jLnB1c2goZyl9YnJlYWs7Y2FzZSAyMTczOm4xKFJbQy5peGZlXSxDLmV4dCksYj17fTticmVhaztjYXNlIDEyNTp7aWYoIVouY2VsbFN0eWxlcylicmVhaztmb3IoO0MuZT49Qy5zOylBW0MuZS0tXT17d2lkdGg6Qy53LzI1NixsZXZlbDpDLmxldmVsfHwwLGhpZGRlbjohIShDLmZsYWdzJjEpfSxDLml4ZmUhPW51bGwmJlJbQy5peGZlXSYmKEFbQy5lKzFdLnM9eWUoUltDLml4ZmVdLEMuaXhmZSkpLE98fChPPSEwLHZuKEMudy8yNTYpKSx1dChBW0MuZSsxXSl9YnJlYWs7Y2FzZSA1MjA6e3ZhciBVcj17fTtDLmxldmVsIT1udWxsJiYoVVtDLnJdPVVyLFVyLmxldmVsPUMubGV2ZWwpLEMuaGlkZGVuJiYoVVtDLnJdPVVyLFVyLmhpZGRlbj0hMCksWi5jZWxsU3R5bGVzJiZDLml4ZmUhPW51bGwmJkMuaXhmZSE9NDA5NSYmUltDLml4ZmVdJiYoVVtDLnJdPVVyLFVyLnM9eWUoUltDLml4ZmVdLEMuaXhmZSkpLEMuaHB0JiYoVVtDLnJdPVVyLFVyLmhwdD1DLmhwdCxVci5ocHg9VXQoQy5ocHQpKX1icmVhaztjYXNlIDM4OmNhc2UgMzk6Y2FzZSA0MDpjYXNlIDQxOm5bIiFtYXJnaW5zIl18fHp0KG5bIiFtYXJnaW5zIl09e30pLG5bIiFtYXJnaW5zIl1bezM4OiJsZWZ0IiwzOToicmlnaHQiLDQwOiJ0b3AiLDQxOiJib3R0b20ifVtFZV1dPUM7YnJlYWs7Y2FzZSAxNjE6blsiIW1hcmdpbnMiXXx8enQoblsiIW1hcmdpbnMiXT17fSksblsiIW1hcmdpbnMiXS5oZWFkZXI9Qy5oZWFkZXIsblsiIW1hcmdpbnMiXS5mb290ZXI9Qy5mb290ZXI7YnJlYWs7Y2FzZSA1NzQ6Qy5SVEwmJihJLlZpZXdzWzBdLlJUTD0hMCk7YnJlYWs7Y2FzZSAxNDY6Tj1DLGI9e307YnJlYWs7Y2FzZSAyMTk4Ok9lPUMsYj17fTticmVhaztjYXNlIDE0MDp5PUM7YnJlYWs7Y2FzZSA0MDk4OmNhc2UgNDA5OTpjYXNlIDQxMDk6Y2FzZSA0MTE2OmNhc2UgNDExNzpjYXNlIDQxMTk6Y2FzZSA0MTIwOmNhc2UgNDEyMTpjYXNlIDQxMjI6Y2FzZSA0MTIzOmNhc2UgNDEyNTpjYXNlIDQxMjc6Y2FzZSA0MTI4OmNhc2UgNDEzMzpjYXNlIDQxNDk6Y2FzZSA0MTU0OmNhc2UgNDE1ODpjYXNlIDQxNTk6Y2FzZSA0MTYxOmNhc2UgNDE2NTpjYXNlIDQxNzc6c2EoRWUsQyk7YnJlYWs7Y2FzZSA0NDI6bz9CLkNvZGVOYW1lPUN8fEIubmFtZTpJLldCUHJvcHMuQ29kZU5hbWU9Q3x8IlRoaXNXb3JrYm9vayI7YnJlYWt9fWVsc2UgRnJ8fGNvbnNvbGUuZXJyb3IoIk1pc3NpbmcgSW5mbyBmb3IgWExTIFJlY29yZCAweCIrRWUudG9TdHJpbmcoMTYpKSxlLmwrPXJyfXJldHVybiByLlNoZWV0TmFtZXM9cHIoaSkuc29ydChmdW5jdGlvbigkZSxNKXtyZXR1cm4gTnVtYmVyKCRlKS1OdW1iZXIoTSl9KS5tYXAoZnVuY3Rpb24oJGUpe3JldHVybiBpWyRlXS5uYW1lfSksYS5ib29rU2hlZXRzfHwoci5TaGVldHM9dCksIXIuU2hlZXROYW1lcy5sZW5ndGgmJmxbIiFyZWYiXT8oci5TaGVldE5hbWVzLnB1c2goIlNoZWV0MSIpLHIuU2hlZXRzJiYoci5TaGVldHMuU2hlZXQxPWwpKTpyLlByZWFtYmxlPWwsci5TaGVldHMmJlhlLmZvckVhY2goZnVuY3Rpb24oJGUsTSl7ci5TaGVldHNbci5TaGVldE5hbWVzW01dXVsiIWF1dG9maWx0ZXIiXT0kZX0pLHIuU3RyaW5ncz1jLHIuU1NGPVVlKFRlKSxaLmVuYyYmKHIuRW5jcnlwdGlvbj1aLmVuYyksT2UmJihyLlRoZW1lcz1PZSksci5NZXRhZGF0YT17fSx5IT09dm9pZCAwJiYoci5NZXRhZGF0YS5Db3VudHJ5PXkpLHJlLm5hbWVzLmxlbmd0aD4wJiYoSS5OYW1lcz1yZS5uYW1lcyksci5Xb3JrYm9vaz1JLHJ9dmFyIFRmPXtTSToiZTA4NTlmZjJmOTRmNjgxMGFiOTEwODAwMmIyN2IzZDkiLERTSToiMDJkNWNkZDU5YzJlMWIxMDkzOTcwODAwMmIyY2Y5YWUiLFVESToiMDVkNWNkZDU5YzJlMWIxMDkzOTcwODAwMmIyY2Y5YWUifTtmdW5jdGlvbiBzMihlLGEscil7dmFyIHQ9TWUuZmluZChlLCIvIURvY3VtZW50U3VtbWFyeUluZm9ybWF0aW9uIik7aWYodCYmdC5zaXplPjApdHJ5e3ZhciBuPWhzKHQsSG8sVGYuRFNJKTtmb3IodmFyIGkgaW4gbilhW2ldPW5baV19Y2F0Y2gobyl7ci5XVEYmJmNvbnNvbGUuZXJyb3IobyYmby5tZXNzYWdlfHxvKX12YXIgZj1NZS5maW5kKGUsIi8hU3VtbWFyeUluZm9ybWF0aW9uIik7aWYoZiYmZi5zaXplPjApdHJ5e3ZhciBzPWhzKGYsV28sVGYuU0kpO2Zvcih2YXIgYyBpbiBzKWFbY109PW51bGwmJihhW2NdPXNbY10pfWNhdGNoKG8pe3IuV1RGJiZjb25zb2xlLmVycm9yKG8mJm8ubWVzc2FnZXx8byl9YS5IZWFkaW5nUGFpcnMmJmEuVGl0bGVzT2ZQYXJ0cyYmKGZzKGEuSGVhZGluZ1BhaXJzLGEuVGl0bGVzT2ZQYXJ0cyxhLHIpLGRlbGV0ZSBhLkhlYWRpbmdQYWlycyxkZWxldGUgYS5UaXRsZXNPZlBhcnRzKX1mdW5jdGlvbiBFZihlLGEpe2F8fChhPXt9KSxEbihhKSxWbigpLGEuY29kZXBhZ2UmJlgwKGEuY29kZXBhZ2UpO3ZhciByLHQ7aWYoZS5GdWxsUGF0aHMpe2lmKE1lLmZpbmQoZSwiL2VuY3J5cHRpb24iKSl0aHJvdyBuZXcgRXJyb3IoIkZpbGUgaXMgcGFzc3dvcmQtcHJvdGVjdGVkIik7cj1NZS5maW5kKGUsIiFDb21wT2JqIiksdD1NZS5maW5kKGUsIi9Xb3JrYm9vayIpfHxNZS5maW5kKGUsIi9Cb29rIil9ZWxzZXtzd2l0Y2goYS50eXBlKXtjYXNlImJhc2U2NCI6ZT1EcihJcihlKSk7YnJlYWs7Y2FzZSJiaW5hcnkiOmU9RHIoZSk7YnJlYWs7Y2FzZSJidWZmZXIiOmJyZWFrO2Nhc2UiYXJyYXkiOkFycmF5LmlzQXJyYXkoZSl8fChlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpKTticmVha31zcihlLDApLHQ9e2NvbnRlbnQ6ZX19dmFyIG4saTtpZihyJiZXdihyKSxhLmJvb2tQcm9wcyYmIWEuYm9va1NoZWV0cyluPXt9O2Vsc2V7dmFyIGY9TmU/ImJ1ZmZlciI6ImFycmF5IjtpZih0JiZ0LmNvbnRlbnQpbj1pMih0LmNvbnRlbnQsYSk7ZWxzZSBpZigoaT1NZS5maW5kKGUsIlBlcmZlY3RPZmZpY2VfTUFJTiIpKSYmaS5jb250ZW50KW49THQudG9fd29ya2Jvb2soaS5jb250ZW50LChhLnR5cGU9ZixhKSk7ZWxzZSBpZigoaT1NZS5maW5kKGUsIk5hdGl2ZUNvbnRlbnRfTUFJTiIpKSYmaS5jb250ZW50KW49THQudG9fd29ya2Jvb2soaS5jb250ZW50LChhLnR5cGU9ZixhKSk7ZWxzZSB0aHJvdyhpPU1lLmZpbmQoZSwiTU4wIikpJiZpLmNvbnRlbnQ/bmV3IEVycm9yKCJVbnN1cHBvcnRlZCBXb3JrcyA0IGZvciBNYWMgZmlsZSIpOm5ldyBFcnJvcigiQ2Fubm90IGZpbmQgV29ya2Jvb2sgc3RyZWFtIik7YS5ib29rVkJBJiZlLkZ1bGxQYXRocyYmTWUuZmluZChlLCIvX1ZCQV9QUk9KRUNUX0NVUi9WQkEvZGlyIikmJihuLnZiYXJhdz1iMShlKSl9dmFyIHM9e307cmV0dXJuIGUuRnVsbFBhdGhzJiZzMihlLHMsYSksbi5Qcm9wcz1uLkN1c3Rwcm9wcz1zLGEuYm9va0ZpbGVzJiYobi5jZmI9ZSksbn12YXIgSTA9ezA6e2Y6VGR9LDE6e2Y6U2R9LDI6e2Y6UGR9LDM6e2Y6RGR9LDQ6e2Y6YmR9LDU6e2Y6TWR9LDY6e2Y6VWR9LDc6e2Y6T2R9LDg6e2Y6WGR9LDk6e2Y6R2R9LDEwOntmOldkfSwxMTp7ZjpWZH0sMTI6e2Y6Q2R9LDEzOntmOkxkfSwxNDp7ZjpSZH0sMTU6e2Y6SWR9LDE2OntmOnhmfSwxNzp7ZjpIZH0sMTg6e2Y6TmR9LDE5OntmOmZufSwyMDp7fSwyMTp7fSwyMjp7fSwyMzp7fSwyNDp7fSwyNTp7fSwyNjp7fSwyNzp7fSwyODp7fSwyOTp7fSwzMDp7fSwzMTp7fSwzMjp7fSwzMzp7fSwzNDp7fSwzNTp7VDoxfSwzNjp7VDotMX0sMzc6e1Q6MX0sMzg6e1Q6LTF9LDM5OntmOmt2fSw0MDp7fSw0Mjp7fSw0Mzp7ZjpWaH0sNDQ6e2Y6V2h9LDQ1OntmOkdofSw0Njp7Zjp6aH0sNDc6e2Y6WGh9LDQ4Ont9LDQ5OntmOnlvfSw1MDp7fSw1MTp7ZjpzMX0sNTI6e1Q6MX0sNTM6e1Q6LTF9LDU0OntUOjF9LDU1OntUOi0xfSw1Njp7VDoxfSw1Nzp7VDotMX0sNTg6e30sNTk6e30sNjA6e2Y6Q3N9LDYyOntmOkJkfSw2Mzp7Zjp1MX0sNjQ6e2Y6UWR9LDY1Ont9LDY2Ont9LDY3Ont9LDY4Ont9LDY5Ont9LDcwOnt9LDEyODp7fSwxMjk6e1Q6MX0sMTMwOntUOi0xfSwxMzE6e1Q6MSxmOnlyLHA6MH0sMTMyOntUOi0xfSwxMzM6e1Q6MX0sMTM0OntUOi0xfSwxMzU6e1Q6MX0sMTM2OntUOi0xfSwxMzc6e1Q6MSxmOnFkfSwxMzg6e1Q6LTF9LDEzOTp7VDoxfSwxNDA6e1Q6LTF9LDE0MTp7VDoxfSwxNDI6e1Q6LTF9LDE0Mzp7VDoxfSwxNDQ6e1Q6LTF9LDE0NTp7VDoxfSwxNDY6e1Q6LTF9LDE0Nzp7Zjp5ZH0sMTQ4OntmOkVkLHA6MTZ9LDE1MTp7ZjpLZH0sMTUyOnt9LDE1Mzp7Zjptdn0sMTU0Ont9LDE1NTp7fSwxNTY6e2Y6Z3Z9LDE1Nzp7fSwxNTg6e30sMTU5OntUOjEsZjpYdX0sMTYwOntUOi0xfSwxNjE6e1Q6MSxmOkdhfSwxNjI6e1Q6LTF9LDE2Mzp7VDoxfSwxNjQ6e1Q6LTF9LDE2NTp7VDoxfSwxNjY6e1Q6LTF9LDE2Nzp7fSwxNjg6e30sMTY5Ont9LDE3MDp7fSwxNzE6e30sMTcyOntUOjF9LDE3Mzp7VDotMX0sMTc0Ont9LDE3NTp7fSwxNzY6e2Y6emR9LDE3Nzp7VDoxfSwxNzg6e1Q6LTF9LDE3OTp7VDoxfSwxODA6e1Q6LTF9LDE4MTp7VDoxfSwxODI6e1Q6LTF9LDE4Mzp7VDoxfSwxODQ6e1Q6LTF9LDE4NTp7VDoxfSwxODY6e1Q6LTF9LDE4Nzp7VDoxfSwxODg6e1Q6LTF9LDE4OTp7VDoxfSwxOTA6e1Q6LTF9LDE5MTp7VDoxfSwxOTI6e1Q6LTF9LDE5Mzp7VDoxfSwxOTQ6e1Q6LTF9LDE5NTp7VDoxfSwxOTY6e1Q6LTF9LDE5Nzp7VDoxfSwxOTg6e1Q6LTF9LDE5OTp7VDoxfSwyMDA6e1Q6LTF9LDIwMTp7VDoxfSwyMDI6e1Q6LTF9LDIwMzp7VDoxfSwyMDQ6e1Q6LTF9LDIwNTp7VDoxfSwyMDY6e1Q6LTF9LDIwNzp7VDoxfSwyMDg6e1Q6LTF9LDIwOTp7VDoxfSwyMTA6e1Q6LTF9LDIxMTp7VDoxfSwyMTI6e1Q6LTF9LDIxMzp7VDoxfSwyMTQ6e1Q6LTF9LDIxNTp7VDoxfSwyMTY6e1Q6LTF9LDIxNzp7VDoxfSwyMTg6e1Q6LTF9LDIxOTp7VDoxfSwyMjA6e1Q6LTF9LDIyMTp7VDoxfSwyMjI6e1Q6LTF9LDIyMzp7VDoxfSwyMjQ6e1Q6LTF9LDIyNTp7VDoxfSwyMjY6e1Q6LTF9LDIyNzp7VDoxfSwyMjg6e1Q6LTF9LDIyOTp7VDoxfSwyMzA6e1Q6LTF9LDIzMTp7VDoxfSwyMzI6e1Q6LTF9LDIzMzp7VDoxfSwyMzQ6e1Q6LTF9LDIzNTp7VDoxfSwyMzY6e1Q6LTF9LDIzNzp7VDoxfSwyMzg6e1Q6LTF9LDIzOTp7VDoxfSwyNDA6e1Q6LTF9LDI0MTp7VDoxfSwyNDI6e1Q6LTF9LDI0Mzp7VDoxfSwyNDQ6e1Q6LTF9LDI0NTp7VDoxfSwyNDY6e1Q6LTF9LDI0Nzp7VDoxfSwyNDg6e1Q6LTF9LDI0OTp7VDoxfSwyNTA6e1Q6LTF9LDI1MTp7VDoxfSwyNTI6e1Q6LTF9LDI1Mzp7VDoxfSwyNTQ6e1Q6LTF9LDI1NTp7VDoxfSwyNTY6e1Q6LTF9LDI1Nzp7VDoxfSwyNTg6e1Q6LTF9LDI1OTp7VDoxfSwyNjA6e1Q6LTF9LDI2MTp7VDoxfSwyNjI6e1Q6LTF9LDI2Mzp7VDoxfSwyNjQ6e1Q6LTF9LDI2NTp7VDoxfSwyNjY6e1Q6LTF9LDI2Nzp7VDoxfSwyNjg6e1Q6LTF9LDI2OTp7VDoxfSwyNzA6e1Q6LTF9LDI3MTp7VDoxfSwyNzI6e1Q6LTF9LDI3Mzp7VDoxfSwyNzQ6e1Q6LTF9LDI3NTp7VDoxfSwyNzY6e1Q6LTF9LDI3Nzp7fSwyNzg6e1Q6MX0sMjc5OntUOi0xfSwyODA6e1Q6MX0sMjgxOntUOi0xfSwyODI6e1Q6MX0sMjgzOntUOjF9LDI4NDp7VDotMX0sMjg1OntUOjF9LDI4Njp7VDotMX0sMjg3OntUOjF9LDI4ODp7VDotMX0sMjg5OntUOjF9LDI5MDp7VDotMX0sMjkxOntUOjF9LDI5Mjp7VDotMX0sMjkzOntUOjF9LDI5NDp7VDotMX0sMjk1OntUOjF9LDI5Njp7VDotMX0sMjk3OntUOjF9LDI5ODp7VDotMX0sMjk5OntUOjF9LDMwMDp7VDotMX0sMzAxOntUOjF9LDMwMjp7VDotMX0sMzAzOntUOjF9LDMwNDp7VDotMX0sMzA1OntUOjF9LDMwNjp7VDotMX0sMzA3OntUOjF9LDMwODp7VDotMX0sMzA5OntUOjF9LDMxMDp7VDotMX0sMzExOntUOjF9LDMxMjp7VDotMX0sMzEzOntUOi0xfSwzMTQ6e1Q6MX0sMzE1OntUOi0xfSwzMTY6e1Q6MX0sMzE3OntUOi0xfSwzMTg6e1Q6MX0sMzE5OntUOi0xfSwzMjA6e1Q6MX0sMzIxOntUOi0xfSwzMjI6e1Q6MX0sMzIzOntUOi0xfSwzMjQ6e1Q6MX0sMzI1OntUOi0xfSwzMjY6e1Q6MX0sMzI3OntUOi0xfSwzMjg6e1Q6MX0sMzI5OntUOi0xfSwzMzA6e1Q6MX0sMzMxOntUOi0xfSwzMzI6e1Q6MX0sMzMzOntUOi0xfSwzMzQ6e1Q6MX0sMzM1OntmOmkxfSwzMzY6e1Q6LTF9LDMzNzp7ZjpmMSxUOjF9LDMzODp7VDotMX0sMzM5OntUOjF9LDM0MDp7VDotMX0sMzQxOntUOjF9LDM0Mjp7VDotMX0sMzQzOntUOjF9LDM0NDp7VDotMX0sMzQ1OntUOjF9LDM0Njp7VDotMX0sMzQ3OntUOjF9LDM0ODp7VDotMX0sMzQ5OntUOjF9LDM1MDp7VDotMX0sMzUxOnt9LDM1Mjp7fSwzNTM6e1Q6MX0sMzU0OntUOi0xfSwzNTU6e2Y6Y259LDM1Nzp7fSwzNTg6e30sMzU5Ont9LDM2MDp7VDoxfSwzNjE6e30sMzYyOntmOkFzfSwzNjM6e30sMzY0Ont9LDM2Njp7fSwzNjc6e30sMzY4Ont9LDM2OTp7fSwzNzA6e30sMzcxOnt9LDM3Mjp7VDoxfSwzNzM6e1Q6LTF9LDM3NDp7VDoxfSwzNzU6e1Q6LTF9LDM3Njp7VDoxfSwzNzc6e1Q6LTF9LDM3ODp7VDoxfSwzNzk6e1Q6LTF9LDM4MDp7VDoxfSwzODE6e1Q6LTF9LDM4Mjp7VDoxfSwzODM6e1Q6LTF9LDM4NDp7VDoxfSwzODU6e1Q6LTF9LDM4Njp7VDoxfSwzODc6e1Q6LTF9LDM4ODp7VDoxfSwzODk6e1Q6LTF9LDM5MDp7VDoxfSwzOTE6e1Q6LTF9LDM5Mjp7VDoxfSwzOTM6e1Q6LTF9LDM5NDp7VDoxfSwzOTU6e1Q6LTF9LDM5Njp7fSwzOTc6e30sMzk4Ont9LDM5OTp7fSw0MDA6e30sNDAxOntUOjF9LDQwMzp7fSw0MDQ6e30sNDA1Ont9LDQwNjp7fSw0MDc6e30sNDA4Ont9LDQwOTp7fSw0MTA6e30sNDExOnt9LDQxMjp7fSw0MTM6e30sNDE0Ont9LDQxNTp7fSw0MTY6e30sNDE3Ont9LDQxODp7fSw0MTk6e30sNDIwOnt9LDQyMTp7fSw0MjI6e1Q6MX0sNDIzOntUOjF9LDQyNDp7VDotMX0sNDI1OntUOi0xfSw0MjY6e2Y6amR9LDQyNzp7ZjpZZH0sNDI4Ont9LDQyOTp7VDoxfSw0MzA6e1Q6LTF9LDQzMTp7VDoxfSw0MzI6e1Q6LTF9LDQzMzp7VDoxfSw0MzQ6e1Q6LTF9LDQzNTp7VDoxfSw0MzY6e1Q6LTF9LDQzNzp7VDoxfSw0Mzg6e1Q6LTF9LDQzOTp7VDoxfSw0NDA6e1Q6LTF9LDQ0MTp7VDoxfSw0NDI6e1Q6LTF9LDQ0Mzp7VDoxfSw0NDQ6e1Q6LTF9LDQ0NTp7VDoxfSw0NDY6e1Q6LTF9LDQ0Nzp7VDoxfSw0NDg6e1Q6LTF9LDQ0OTp7VDoxfSw0NTA6e1Q6LTF9LDQ1MTp7VDoxfSw0NTI6e1Q6LTF9LDQ1Mzp7VDoxfSw0NTQ6e1Q6LTF9LDQ1NTp7VDoxfSw0NTY6e1Q6LTF9LDQ1Nzp7VDoxfSw0NTg6e1Q6LTF9LDQ1OTp7VDoxfSw0NjA6e1Q6LTF9LDQ2MTp7VDoxfSw0NjI6e1Q6LTF9LDQ2Mzp7VDoxfSw0NjQ6e1Q6LTF9LDQ2NTp7VDoxfSw0NjY6e1Q6LTF9LDQ2Nzp7VDoxfSw0Njg6e1Q6LTF9LDQ2OTp7VDoxfSw0NzA6e1Q6LTF9LDQ3MTp7fSw0NzI6e30sNDczOntUOjF9LDQ3NDp7VDotMX0sNDc1Ont9LDQ3Njp7ZjpaZH0sNDc3Ont9LDQ3ODp7fSw0Nzk6e1Q6MX0sNDgwOntUOi0xfSw0ODE6e1Q6MX0sNDgyOntUOi0xfSw0ODM6e1Q6MX0sNDg0OntUOi0xfSw0ODU6e2Y6QWR9LDQ4Njp7VDoxfSw0ODc6e1Q6LTF9LDQ4ODp7VDoxfSw0ODk6e1Q6LTF9LDQ5MDp7VDoxfSw0OTE6e1Q6LTF9LDQ5Mjp7VDoxfSw0OTM6e1Q6LTF9LDQ5NDp7ZjokZH0sNDk1OntUOjF9LDQ5Njp7VDotMX0sNDk3OntUOjF9LDQ5ODp7VDotMX0sNDk5Ont9LDUwMDp7VDoxfSw1MDE6e1Q6LTF9LDUwMjp7VDoxfSw1MDM6e1Q6LTF9LDUwNDp7fSw1MDU6e1Q6MX0sNTA2OntUOi0xfSw1MDc6e30sNTA4OntUOjF9LDUwOTp7VDotMX0sNTEwOntUOjF9LDUxMTp7VDotMX0sNTEyOnt9LDUxMzp7fSw1MTQ6e1Q6MX0sNTE1OntUOi0xfSw1MTY6e1Q6MX0sNTE3OntUOi0xfSw1MTg6e1Q6MX0sNTE5OntUOi0xfSw1MjA6e1Q6MX0sNTIxOntUOi0xfSw1MjI6e30sNTIzOnt9LDUyNDp7fSw1MjU6e30sNTI2Ont9LDUyNzp7fSw1Mjg6e1Q6MX0sNTI5OntUOi0xfSw1MzA6e1Q6MX0sNTMxOntUOi0xfSw1MzI6e1Q6MX0sNTMzOntUOi0xfSw1MzQ6e30sNTM1Ont9LDUzNjp7fSw1Mzc6e30sNTM4OntUOjF9LDUzOTp7VDotMX0sNTQwOntUOjF9LDU0MTp7VDotMX0sNTQyOntUOjF9LDU0ODp7fSw1NDk6e30sNTUwOntmOmNufSw1NTE6e2Y6ZDB9LDU1Mjp7fSw1NTM6e30sNTU0OntUOjF9LDU1NTp7VDotMX0sNTU2OntUOjF9LDU1Nzp7VDotMX0sNTU4OntUOjF9LDU1OTp7VDotMX0sNTYwOntUOjF9LDU2MTp7VDotMX0sNTYyOnt9LDU2NDp7fSw1NjU6e1Q6MX0sNTY2OntUOi0xfSw1Njk6e1Q6MX0sNTcwOntUOi0xfSw1NzI6e30sNTczOntUOjF9LDU3NDp7VDotMX0sNTc3Ont9LDU3ODp7fSw1Nzk6e30sNTgwOnt9LDU4MTp7fSw1ODI6e30sNTgzOnt9LDU4NDp7fSw1ODU6e30sNTg2Ont9LDU4Nzp7fSw1ODg6e1Q6LTF9LDU4OTp7fSw1OTA6e1Q6MX0sNTkxOntUOi0xfSw1OTI6e1Q6MX0sNTkzOntUOi0xfSw1OTQ6e1Q6MX0sNTk1OntUOi0xfSw1OTY6e30sNTk3OntUOjF9LDU5ODp7VDotMX0sNTk5OntUOjF9LDYwMDp7VDotMX0sNjAxOntUOjF9LDYwMjp7VDotMX0sNjAzOntUOjF9LDYwNDp7VDotMX0sNjA1OntUOjF9LDYwNjp7VDotMX0sNjA3Ont9LDYwODp7VDoxfSw2MDk6e1Q6LTF9LDYxMDp7fSw2MTE6e1Q6MX0sNjEyOntUOi0xfSw2MTM6e1Q6MX0sNjE0OntUOi0xfSw2MTU6e1Q6MX0sNjE2OntUOi0xfSw2MTc6e1Q6MX0sNjE4OntUOi0xfSw2MTk6e1Q6MX0sNjIwOntUOi0xfSw2MjU6e30sNjI2OntUOjF9LDYyNzp7VDotMX0sNjI4OntUOjF9LDYyOTp7VDotMX0sNjMwOntUOjF9LDYzMTp7VDotMX0sNjMyOntmOnkxfSw2MzM6e1Q6MX0sNjM0OntUOi0xfSw2MzU6e1Q6MSxmOkExfSw2MzY6e1Q6LTF9LDYzNzp7ZjpDb30sNjM4OntUOjF9LDYzOTp7fSw2NDA6e1Q6LTF9LDY0MTp7VDoxfSw2NDI6e1Q6LTF9LDY0Mzp7VDoxfSw2NDQ6e30sNjQ1OntUOi0xfSw2NDY6e1Q6MX0sNjQ4OntUOjF9LDY0OTp7fSw2NTA6e1Q6LTF9LDY1MTp7Zjpjdn0sNjUyOnt9LDY1Mzp7VDoxfSw2NTQ6e1Q6LTF9LDY1NTp7VDoxfSw2NTY6e1Q6LTF9LDY1Nzp7VDoxfSw2NTg6e1Q6LTF9LDY1OTp7fSw2NjA6e1Q6MX0sNjYxOnt9LDY2Mjp7VDotMX0sNjYzOnt9LDY2NDp7VDoxfSw2NjU6e30sNjY2OntUOi0xfSw2Njc6e30sNjY4Ont9LDY2OTp7fSw2NzE6e1Q6MX0sNjcyOntUOi0xfSw2NzM6e1Q6MX0sNjc0OntUOi0xfSw2NzU6e30sNjc2Ont9LDY3Nzp7fSw2Nzg6e30sNjc5Ont9LDY4MDp7fSw2ODE6e30sMTAyNDp7fSwxMDI1Ont9LDEwMjY6e1Q6MX0sMTAyNzp7VDotMX0sMTAyODp7VDoxfSwxMDI5OntUOi0xfSwxMDMwOnt9LDEwMzE6e1Q6MX0sMTAzMjp7VDotMX0sMTAzMzp7VDoxfSwxMDM0OntUOi0xfSwxMDM1Ont9LDEwMzY6e30sMTAzNzp7fSwxMDM4OntUOjF9LDEwMzk6e1Q6LTF9LDEwNDA6e30sMTA0MTp7VDoxfSwxMDQyOntUOi0xfSwxMDQzOnt9LDEwNDQ6e30sMTA0NTp7fSwxMDQ2OntUOjF9LDEwNDc6e1Q6LTF9LDEwNDg6e1Q6MX0sMTA0OTp7VDotMX0sMTA1MDp7fSwxMDUxOntUOjF9LDEwNTI6e1Q6MX0sMTA1Mzp7Zjpldn0sMTA1NDp7VDoxfSwxMDU1Ont9LDEwNTY6e1Q6MX0sMTA1Nzp7VDotMX0sMTA1ODp7VDoxfSwxMDU5OntUOi0xfSwxMDYxOnt9LDEwNjI6e1Q6MX0sMTA2Mzp7VDotMX0sMTA2NDp7VDoxfSwxMDY1OntUOi0xfSwxMDY2OntUOjF9LDEwNjc6e1Q6LTF9LDEwNjg6e1Q6MX0sMTA2OTp7VDotMX0sMTA3MDp7VDoxfSwxMDcxOntUOi0xfSwxMDcyOntUOjF9LDEwNzM6e1Q6LTF9LDEwNzU6e1Q6MX0sMTA3Njp7VDotMX0sMTA3Nzp7VDoxfSwxMDc4OntUOi0xfSwxMDc5OntUOjF9LDEwODA6e1Q6LTF9LDEwODE6e1Q6MX0sMTA4Mjp7VDotMX0sMTA4Mzp7VDoxfSwxMDg0OntUOi0xfSwxMDg1Ont9LDEwODY6e1Q6MX0sMTA4Nzp7VDotMX0sMTA4ODp7VDoxfSwxMDg5OntUOi0xfSwxMDkwOntUOjF9LDEwOTE6e1Q6LTF9LDEwOTI6e1Q6MX0sMTA5Mzp7VDotMX0sMTA5NDp7VDoxfSwxMDk1OntUOi0xfSwxMDk2Ont9LDEwOTc6e1Q6MX0sMTA5ODp7fSwxMDk5OntUOi0xfSwxMTAwOntUOjF9LDExMDE6e1Q6LTF9LDExMDI6e30sMTEwMzp7fSwxMTA0Ont9LDExMDU6e30sMTExMTp7fSwxMTEyOnt9LDExMTM6e1Q6MX0sMTExNDp7VDotMX0sMTExNTp7VDoxfSwxMTE2OntUOi0xfSwxMTE3Ont9LDExMTg6e1Q6MX0sMTExOTp7VDotMX0sMTEyMDp7VDoxfSwxMTIxOntUOi0xfSwxMTIyOntUOjF9LDExMjM6e1Q6LTF9LDExMjQ6e1Q6MX0sMTEyNTp7VDotMX0sMTEyNjp7fSwxMTI4OntUOjF9LDExMjk6e1Q6LTF9LDExMzA6e30sMTEzMTp7VDoxfSwxMTMyOntUOi0xfSwxMTMzOntUOjF9LDExMzQ6e1Q6LTF9LDExMzU6e1Q6MX0sMTEzNjp7VDotMX0sMTEzNzp7VDoxfSwxMTM4OntUOi0xfSwxMTM5OntUOjF9LDExNDA6e1Q6LTF9LDExNDE6e30sMTE0Mjp7VDoxfSwxMTQzOntUOi0xfSwxMTQ0OntUOjF9LDExNDU6e1Q6LTF9LDExNDY6e30sMTE0Nzp7VDoxfSwxMTQ4OntUOi0xfSwxMTQ5OntUOjF9LDExNTA6e1Q6LTF9LDExNTI6e1Q6MX0sMTE1Mzp7VDotMX0sMTE1NDp7VDotMX0sMTE1NTp7VDotMX0sMTE1Njp7VDotMX0sMTE1Nzp7VDoxfSwxMTU4OntUOi0xfSwxMTU5OntUOjF9LDExNjA6e1Q6LTF9LDExNjE6e1Q6MX0sMTE2Mjp7VDotMX0sMTE2Mzp7VDoxfSwxMTY0OntUOi0xfSwxMTY1OntUOjF9LDExNjY6e1Q6LTF9LDExNjc6e1Q6MX0sMTE2ODp7VDotMX0sMTE2OTp7VDoxfSwxMTcwOntUOi0xfSwxMTcxOnt9LDExNzI6e1Q6MX0sMTE3Mzp7VDotMX0sMTE3Nzp7fSwxMTc4OntUOjF9LDExODA6e30sMTE4MTp7fSwxMTgyOnt9LDIwNDg6e1Q6MX0sMjA0OTp7VDotMX0sMjA1MDp7fSwyMDUxOntUOjF9LDIwNTI6e1Q6LTF9LDIwNTM6e30sMjA1NDp7fSwyMDU1OntUOjF9LDIwNTY6e1Q6LTF9LDIwNTc6e1Q6MX0sMjA1ODp7VDotMX0sMjA2MDp7fSwyMDY3Ont9LDIwNjg6e1Q6MX0sMjA2OTp7VDotMX0sMjA3MDp7fSwyMDcxOnt9LDIwNzI6e1Q6MX0sMjA3Mzp7VDotMX0sMjA3NTp7fSwyMDc2Ont9LDIwNzc6e1Q6MX0sMjA3ODp7VDotMX0sMjA3OTp7fSwyMDgwOntUOjF9LDIwODE6e1Q6LTF9LDIwODI6e30sMjA4Mzp7VDoxfSwyMDg0OntUOi0xfSwyMDg1OntUOjF9LDIwODY6e1Q6LTF9LDIwODc6e1Q6MX0sMjA4ODp7VDotMX0sMjA4OTp7VDoxfSwyMDkwOntUOi0xfSwyMDkxOnt9LDIwOTI6e30sMjA5Mzp7VDoxfSwyMDk0OntUOi0xfSwyMDk1Ont9LDIwOTY6e1Q6MX0sMjA5Nzp7VDotMX0sMjA5ODp7VDoxfSwyMDk5OntUOi0xfSwyMTAwOntUOjF9LDIxMDE6e1Q6LTF9LDIxMDI6e30sMjEwMzp7VDoxfSwyMTA0OntUOi0xfSwyMTA1Ont9LDIxMDY6e1Q6MX0sMjEwNzp7VDotMX0sMjEwODp7fSwyMTA5OntUOjF9LDIxMTA6e1Q6LTF9LDIxMTE6e1Q6MX0sMjExMjp7VDotMX0sMjExMzp7VDoxfSwyMTE0OntUOi0xfSwyMTE1Ont9LDIxMTY6e30sMjExNzp7fSwyMTE4OntUOjF9LDIxMTk6e1Q6LTF9LDIxMjA6e30sMjEyMTp7VDoxfSwyMTIyOntUOi0xfSwyMTIzOntUOjF9LDIxMjQ6e1Q6LTF9LDIxMjU6e30sMjEyNjp7VDoxfSwyMTI3OntUOi0xfSwyMTI4Ont9LDIxMjk6e1Q6MX0sMjEzMDp7VDotMX0sMjEzMTp7VDoxfSwyMTMyOntUOi0xfSwyMTMzOntUOjF9LDIxMzQ6e30sMjEzNTp7fSwyMTM2Ont9LDIxMzc6e1Q6MX0sMjEzODp7VDotMX0sMjEzOTp7VDoxfSwyMTQwOntUOi0xfSwyMTQxOnt9LDMwNzI6e30sMzA3Mzp7fSw0MDk2OntUOjF9LDQwOTc6e1Q6LTF9LDUwMDI6e1Q6MX0sNTAwMzp7VDotMX0sNTA4MTp7VDoxfSw1MDgyOntUOi0xfSw1MDgzOnt9LDUwODQ6e1Q6MX0sNTA4NTp7VDotMX0sNTA4Njp7VDoxfSw1MDg3OntUOi0xfSw1MDg4Ont9LDUwODk6e30sNTA5MDp7fSw1MDkyOntUOjF9LDUwOTM6e1Q6LTF9LDUwOTQ6e30sNTA5NTp7VDoxfSw1MDk2OntUOi0xfSw1MDk3Ont9LDUwOTk6e30sNTEwMDp7fSw1MTAxOnt9LDUxMDI6e30sNTEwMzp7fSw1MTA1Ont9LDUxMDg6e30sNTEwOTp7fSw1MTEwOnt9LDUxMTE6e30sNTExMjp7fSw1MTEzOnt9LDUxMTQ6e30sNTExNzp7fSw1MTI3Ont9LDUxMzA6e30sNTEzMTp7fSw1MTMyOnt9LDUxMzQ6e30sNTEzNTp7fSw2NTUzNTp7bjoiIn19LENuPXs2OntmOndufSwxMDp7ZjpiYX0sMTI6e2Y6ZXJ9LDEzOntmOmVyfSwxNDp7Zjphcn0sMTU6e2Y6YXJ9LDE2OntmOl9yfSwxNzp7Zjphcn0sMTg6e2Y6YXJ9LDE5OntmOmVyfSwyMDp7ZjpGc30sMjE6e2Y6RnN9LDIzOntmOkFzfSwyNDp7ZjpFc30sMjU6e2Y6YXJ9LDI2Ont9LDI3Ont9LDI4OntmOm51fSwyOTp7fSwzNDp7Zjphcn0sMzU6e2Y6VHN9LDM4OntmOl9yfSwzOTp7Zjpfcn0sNDA6e2Y6X3J9LDQxOntmOl9yfSw0Mjp7Zjphcn0sNDM6e2Y6YXJ9LDQ3OntmOm9ofSw0OTp7ZjpMbH0sNTE6e2Y6ZXJ9LDYwOnt9LDYxOntmOk5sfSw2NDp7Zjphcn0sNjU6e2Y6UGx9LDY2OntmOmVyfSw3Nzp7fSw4MDp7fSw4MTp7fSw4Mjp7fSw4NTp7Zjplcn0sODk6e30sOTA6e30sOTE6e30sOTI6e2Y6eWx9LDkzOntmOnN1fSw5NDp7fSw5NTp7Zjphcn0sOTY6e30sOTc6e30sOTk6e2Y6YXJ9LDEyNTp7ZjpDc30sMTI4OntmOkpsfSwxMjk6e2Y6U2x9LDEzMDp7Zjplcn0sMTMxOntmOmFyfSwxMzI6e2Y6YXJ9LDEzMzp7ZjpDbH0sMTM0Ont9LDE0MDp7ZjpodX0sMTQxOntmOmVyfSwxNDQ6e30sMTQ2OntmOmR1fSwxNTE6e30sMTUyOnt9LDE1Mzp7fSwxNTQ6e30sMTU1Ont9LDE1Njp7Zjplcn0sMTU3Ont9LDE1ODp7fSwxNjA6e2Y6X3V9LDE2MTp7ZjpwdX0sMTc0Ont9LDE3NTp7fSwxNzY6e30sMTc3Ont9LDE3ODp7fSwxODA6e30sMTgxOnt9LDE4Mjp7fSwxODQ6e30sMTg1Ont9LDE4OTp7ZjpHbH0sMTkwOntmOlhsfSwxOTM6e2Y6YmF9LDE5Nzp7fSwxOTg6e30sMTk5Ont9LDIwMDp7fSwyMDE6e30sMjAyOntmOmFyfSwyMDM6e30sMjA0Ont9LDIwNTp7fSwyMDY6e30sMjA3Ont9LDIwODp7fSwyMDk6e30sMjEwOnt9LDIxMTp7fSwyMTM6e30sMjE1Ont9LDIxNjp7fSwyMTc6e30sMjE4OntmOmVyfSwyMjA6e30sMjIxOntmOmFyfSwyMjI6e30sMjI0OntmOiRsfSwyMjU6e2Y6QWx9LDIyNjp7ZjpiYX0sMjI3Ont9LDIyOTp7ZjppdX0sMjMzOnt9LDIzNTp7ZjpwMX0sMjM2OntmOmcxfSwyMzc6e30sMjM5Ont9LDI0MDp7fSwyNDE6e30sMjQyOnt9LDI0NDp7fSwyNDU6e30sMjQ2Ont9LDI0Nzp7fSwyNDg6e30sMjQ5Ont9LDI1MTp7fSwyNTI6e2Y6Ymx9LDI1Mzp7ZjpCbH0sMjU1OntmOklsfSwyNTY6e30sMjU5Ont9LDI5MDp7fSwzMTE6e30sMzEyOnt9LDMxNTp7fSwzMTc6e2Y6eHN9LDMxODp7fSwzMTk6e30sMzIwOnt9LDMzMDp7fSwzMzE6e30sMzMzOnt9LDMzNDp7fSwzMzU6e30sMzM2Ont9LDMzNzp7fSwzMzg6e30sMzM5Ont9LDM0MDp7fSwzNTE6e30sMzUyOntmOmFyfSwzNTM6e2Y6YmF9LDQwMTp7fSw0MDI6e30sNDAzOnt9LDQwNDp7fSw0MDU6e30sNDA2Ont9LDQwNzp7fSw0MDg6e30sNDI1Ont9LDQyNjp7fSw0Mjc6e30sNDI4Ont9LDQyOTp7fSw0MzA6e2Y6UWx9LDQzMTp7Zjphcn0sNDMyOnt9LDQzMzp7fSw0MzQ6e30sNDM3Ont9LDQzODp7ZjpvdX0sNDM5OntmOmFyfSw0NDA6e2Y6bHV9LDQ0MTp7fSw0NDI6e2Y6UHR9LDQ0Mzp7fSw0NDQ6e2Y6ZXJ9LDQ0NTp7fSw0NDY6e30sNDQ4OntmOmJhfSw0NDk6e2Y6T2wscjoyfSw0NTA6e2Y6YmF9LDUxMjp7Zjp3c30sNTEzOntmOm11fSw1MTU6e2Y6cWx9LDUxNjp7ZjpVbH0sNTE3OntmOlpsfSw1MTk6e2Y6a3V9LDUyMDp7ZjpEbH0sNTIzOnt9LDU0NTp7ZjpTc30sNTQ5OntmOmtzfSw1NjY6e30sNTc0OntmOk1sfSw2Mzg6e2Y6Vmx9LDY1OTp7fSwxMDQ4Ont9LDEwNTQ6e2Y6SGx9LDEwODQ6e30sMTIxMjp7ZjpydX0sMjA0ODp7Zjp1dX0sMjA0OTp7fSwyMDUwOnt9LDIwNTE6e30sMjA1Mjp7fSwyMDUzOnt9LDIwNTQ6e30sMjA1NTp7fSwyMDU2Ont9LDIwNTc6e2Y6RjB9LDIwNTg6e30sMjA1OTp7fSwyMDYwOnt9LDIwNjE6e30sMjA2Mjp7fSwyMDYzOnt9LDIwNjQ6e30sMjA2Njp7fSwyMDY3Ont9LDIxMjg6e30sMjEyOTp7fSwyMTMwOnt9LDIxMzE6e30sMjEzMjp7fSwyMTMzOnt9LDIxMzQ6e30sMjEzNTp7fSwyMTM2Ont9LDIxMzc6e30sMjEzODp7fSwyMTQ2Ont9LDIxNDc6e3I6MTJ9LDIxNDg6e30sMjE0OTp7fSwyMTUwOnt9LDIxNTE6e2Y6YmF9LDIxNTI6e30sMjE1NDp7fSwyMTU1Ont9LDIxNTY6e30sMjE2MTp7fSwyMTYyOnt9LDIxNjQ6e30sMjE2NTp7fSwyMTY2Ont9LDIxNjc6e30sMjE2ODp7fSwyMTY5Ont9LDIxNzA6e30sMjE3MTp7fSwyMTcyOntmOnZ1LHI6MTJ9LDIxNzM6e2Y6dDEscjoxMn0sMjE3NDp7fSwyMTc1Ont9LDIxODA6e30sMjE4MTp7fSwyMTgyOnt9LDIxODM6e30sMjE4NDp7fSwyMTg1Ont9LDIxODY6e30sMjE4Nzp7fSwyMTg4OntmOmFyLHI6MTJ9LDIxODk6e30sMjE5MDp7cjoxMn0sMjE5MTp7fSwyMTkyOnt9LDIxOTQ6e30sMjE5NTp7fSwyMTk2OntmOmV1LHI6MTJ9LDIxOTc6e30sMjE5ODp7ZjpaaCxyOjEyfSwyMTk5Ont9LDIyMDA6e30sMjIwMTp7fSwyMjAyOntmOmF1LHI6MTJ9LDIyMDM6e2Y6YmF9LDIyMDQ6e30sMjIwNTp7fSwyMjA2Ont9LDIyMDc6e30sMjIxMTp7ZjpSbH0sMjIxMjp7fSwyMjEzOnt9LDIyMTQ6e30sMjIxNTp7fSw0MDk3Ont9LDQwOTg6e2Y6enZ9LDQwOTk6e2Y6JHZ9LDQxMDI6e30sNDEwMzp7fSw0MTA1Ont9LDQxMDY6e30sNDEwNzp7fSw0MTA4Ont9LDQxMDk6e2Y6S3Z9LDQxMTY6e30sNDExNzp7Zjpqdn0sNDExODp7fSw0MTE5OntmOnF2fSw0MTIwOntmOlF2fSw0MTIxOntmOmUyfSw0MTIyOntmOnIyfSw0MTIzOntmOmEyfSw0MTI0Ont9LDQxMjU6e2Y6WXZ9LDQxMjY6e30sNDEyNzp7fSw0MTI4Ont9LDQxMjk6e30sNDEzMDp7fSw0MTMyOnt9LDQxMzM6e2Y6SnZ9LDQxMzQ6e2Y6ZXJ9LDQxMzU6e30sNDE0Njp7fSw0MTQ3Ont9LDQxNDg6e30sNDE0OTp7fSw0MTU0Ont9LDQxNTY6e30sNDE1Nzp7fSw0MTU4OntmOnQyfSw0MTU5OntmOm4yfSw0MTYwOnt9LDQxNjE6e30sNDE2Mzp7fSw0MTY0OntmOmd1fSw0MTY1Ont9LDQxNjY6e30sNDE2ODp7fSw0MTcwOnt9LDQxNzE6e30sNDE3NDp7fSw0MTc1Ont9LDQxNzY6e30sNDE3Nzp7Zjpadn0sNDE4Nzp7fSw0MTg4OntmOnh1fSw0MTg5Ont9LDQxOTE6e30sNDE5Mjp7fSw0MTkzOnt9LDQxOTQ6e30sNDE5NTp7fSw0MTk2Ont9LDQxOTc6e30sNDE5ODp7fSw0MTk5Ont9LDQyMDA6e30sMDp7Zjp3c30sMTp7fSwyOntmOkV1fSwzOntmOlR1fSw0OntmOkZ1fSw1OntmOnl1fSw3OntmOkF1fSw4Ont9LDk6e2Y6RjB9LDExOnt9LDIyOntmOmVyfSwzMDp7ZjpXbH0sMzE6e30sMzI6e30sMzM6e2Y6U3N9LDM2Ont9LDM3OntmOmtzfSw1MDp7ZjpTdX0sNjI6e30sNTI6e30sNjc6e2Y6S2x9LDY4OntmOmVyfSw2OTp7fSw4Njp7fSwxMjY6e30sMTI3OntmOnd1fSwxMzU6e30sMTM2Ont9LDEzNzp7fSwxNDM6e2Y6YnV9LDE0NTp7fSwxNDg6e30sMTQ5Ont9LDE1MDp7fSwxNjk6e30sMTcxOnt9LDE4ODp7fSwxOTE6e30sMTkyOnt9LDE5NDp7fSwxOTU6e30sMjE0OntmOkN1fSwyMjM6e30sMjM0Ont9LDM1NDp7fSw0MjE6e30sNTE4OntmOndufSw1MjE6e2Y6RjB9LDUzNjp7ZjpFc30sNTQ3OntmOlRzfSw1NjE6e30sNTc5OntmOmpsfSwxMDMwOntmOndufSwxMDMzOntmOkYwfSwxMDkxOntmOllsfSwyMTU3Ont9LDIxNjM6e30sMjE3Nzp7fSwyMjQwOnt9LDIyNDE6e30sMjI0Mjp7fSwyMjQzOnt9LDIyNDQ6e30sMjI0NTp7fSwyMjQ2Ont9LDIyNDc6e30sMjI0ODp7fSwyMjQ5Ont9LDIyNTA6e30sMjI1MTp7fSwyMjYyOntyOjEyfSwxMDE6e30sMTAyOnt9LDEwNTp7fSwxMDY6e30sMTA3Ont9LDEwOTp7fSwxMTI6e30sMTE0Ont9LDI5MjgyOnt9fTtmdW5jdGlvbiBQcihlLGEscix0KXt2YXIgbj1hO2lmKCFpc05hTihuKSl7dmFyIGk9dHx8KHJ8fFtdKS5sZW5ndGh8fDAsZj1lLm5leHQoNCk7Zi53cml0ZV9zaGlmdCgyLG4pLGYud3JpdGVfc2hpZnQoMixpKSxpPjAmJktpKHIpJiZlLnB1c2gocil9fWZ1bmN0aW9uIEFmKGUsYSl7dmFyIHI9YXx8e30sdD1yLmRlbnNlIT1udWxsP3IuZGVuc2U6dGMsbj17fTt0JiYoblsiIWRhdGEiXT1bXSksZT1DdChlLCI8IS0tIiwiLS0+Iik7dmFyIGk9ZS5tYXRjaCgvPHRhYmxlL2kpO2lmKCFpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBIVE1MOiBjb3VsZCBub3QgZmluZCA8dGFibGU+Iik7dmFyIGY9ZS5tYXRjaCgvPFwvdGFibGUvaSkscz1pLmluZGV4LGM9ZiYmZi5pbmRleHx8ZS5sZW5ndGgsbz16YyhlLnNsaWNlKHMsYyksLyg6Pzx0cltePD5dKj4pL2ksIjx0cj4iKSxsPS0xLHU9MCx4PTAsaD0wLGc9e3M6e3I6MWU3LGM6MWU3fSxlOntyOjAsYzowfX0sbT1bXTtmb3Iocz0wO3M8by5sZW5ndGg7KytzKXt2YXIgZD1vW3NdLnRyaW0oKSxwPWQuc2xpY2UoMCwzKS50b0xvd2VyQ2FzZSgpO2lmKHA9PSI8dHIiKXtpZigrK2wsci5zaGVldFJvd3MmJnIuc2hlZXRSb3dzPD1sKXstLWw7YnJlYWt9dT0wO2NvbnRpbnVlfWlmKCEocCE9Ijx0ZCImJnAhPSI8dGgiKSl7dmFyIHc9ZC5zcGxpdCgvPFwvdFtkaF0+L2kpO2ZvcihjPTA7Yzx3Lmxlbmd0aDsrK2Mpe3ZhciBfPXdbY10udHJpbSgpO2lmKF8ubWF0Y2goLzx0W2RoXS9pKSl7Zm9yKHZhciB5PV8sUj0wO3kuY2hhckF0KDApPT0iPCImJihSPXkuaW5kZXhPZigiPiIpKT4tMTspeT15LnNsaWNlKFIrMSk7Zm9yKHZhciBQPTA7UDxtLmxlbmd0aDsrK1Ape3ZhciBiPW1bUF07Yi5zLmM9PXUmJmIucy5yPGwmJmw8PWIuZS5yJiYodT1iLmUuYysxLFA9LTEpfXZhciBOPW9lKF8uc2xpY2UoMCxfLmluZGV4T2YoIj4iKSkpO2g9Ti5jb2xzcGFuPytOLmNvbHNwYW46MSwoKHg9K04ucm93c3Bhbik+MXx8aD4xKSYmbS5wdXNoKHtzOntyOmwsYzp1fSxlOntyOmwrKHh8fDEpLTEsYzp1K2gtMX19KTt2YXIgST1OLnR8fE5bImRhdGEtdCJdfHwiIjtpZigheS5sZW5ndGgpe3UrPWg7Y29udGludWV9aWYoeT1DaSh5KSxnLnMucj5sJiYoZy5zLnI9bCksZy5lLnI8bCYmKGcuZS5yPWwpLGcucy5jPnUmJihnLnMuYz11KSxnLmUuYzx1JiYoZy5lLmM9dSksIXkubGVuZ3RoKXt1Kz1oO2NvbnRpbnVlfXZhciBCPXt0OiJzIix2Onl9O3IucmF3fHwheS50cmltKCkubGVuZ3RofHxJPT0icyJ8fCh5PT09IlRSVUUiP0I9e3Q6ImIiLHY6ITB9Onk9PT0iRkFMU0UiP0I9e3Q6ImIiLHY6ITF9OmlzTmFOKE9yKHkpKT9pc05hTihTdCh5KS5nZXREYXRlKCkpP3kuY2hhckNvZGVBdCgwKT09MzUmJmRyW3ldIT1udWxsJiYoQi50PSJlIixCLnc9eSxCLnY9ZHJbeV0pOihCPXt0OiJkIix2OnhyKHkpfSxyLlVUQz09PSExJiYoQi52PVVhKEIudikpLHIuY2VsbERhdGVzfHwoQj17dDoibiIsdjpvcihCLnYpfSksQi56PXIuZGF0ZU5GfHxUZVsxNF0pOkI9e3Q6Im4iLHY6T3IoeSl9KSxCLmNlbGxUZXh0IT09ITEmJihCLnc9eSksdD8oblsiIWRhdGEiXVtsXXx8KG5bIiFkYXRhIl1bbF09W10pLG5bIiFkYXRhIl1bbF1bdV09Qik6bltEZSh7cjpsLGM6dX0pXT1CLHUrPWh9fX19cmV0dXJuIG5bIiFyZWYiXT1JZShnKSxtLmxlbmd0aCYmKG5bIiFtZXJnZXMiXT1tKSxufWZ1bmN0aW9uIGYyKGUpe3JldHVybiBhbyhTdHJpbmcoZSkucmVwbGFjZSgvIi9nLCInIikpfWZ1bmN0aW9uIEt0KGUpe3JldHVybiBlJiZlLnJnYj8iIyIrU3RyaW5nKGUucmdiKS5zbGljZSgtNik6IiJ9ZnVuY3Rpb24gYzIoZSl7cmV0dXJuIGU/IiciK2YyKGUpLnJlcGxhY2UoLycvZywiXFwnIikrIiciOiIifWZ1bmN0aW9uIG8yKGUpe3N3aXRjaChlKXtjYXNlImRhc2hEb3QiOmNhc2UiZGFzaERvdERvdCI6Y2FzZSJkYXNoZWQiOmNhc2UibWVkaXVtRGFzaGVkIjpyZXR1cm4iZGFzaGVkIjtjYXNlImRvdHRlZCI6Y2FzZSJoYWlyIjpyZXR1cm4iZG90dGVkIjtjYXNlImRvdWJsZSI6cmV0dXJuImRvdWJsZSI7Y2FzZSJub25lIjpyZXR1cm4ibm9uZSI7ZGVmYXVsdDpyZXR1cm4ic29saWQifX1mdW5jdGlvbiBsMihlKXtzd2l0Y2goZSl7Y2FzZSJtZWRpdW0iOmNhc2UibWVkaXVtRGFzaERvdCI6Y2FzZSJtZWRpdW1EYXNoRG90RG90IjpjYXNlIm1lZGl1bURhc2hlZCI6cmV0dXJuIjJweCI7Y2FzZSJ0aGljayI6cmV0dXJuIjNweCI7Y2FzZSJoYWlyIjpyZXR1cm4iMXB4IjtkZWZhdWx0OnJldHVybiIxcHgifX1mdW5jdGlvbiBEMChlLGEscil7aWYoISghcnx8IXIuc3R5bGV8fHIuc3R5bGU9PSJub25lIikpe3ZhciB0PUt0KHIuY29sb3IpfHwiIzAwMDAwMCI7ZS5wdXNoKCJib3JkZXItIithKyI6IitsMihyLnN0eWxlKSsiICIrbzIoci5zdHlsZSkrIiAiK3QpfX1mdW5jdGlvbiB1MihlLGEpe2lmKCFhfHwhYS5jZWxsU3R5bGVzfHwhZXx8IWUucylyZXR1cm4iIjt2YXIgcj1lLnMsdD1bXSxuPXIuZm9udHx8e307bi5uYW1lJiZ0LnB1c2goImZvbnQtZmFtaWx5OiIrYzIobi5uYW1lKSksbi5zeiYmdC5wdXNoKCJmb250LXNpemU6IituLnN6KyJwdCIpLG4uYm9sZCYmdC5wdXNoKCJmb250LXdlaWdodDpib2xkIiksbi5pdGFsaWMmJnQucHVzaCgiZm9udC1zdHlsZTppdGFsaWMiKTt2YXIgaT1bXTtuLnVuZGVybGluZSYmaS5wdXNoKCJ1bmRlcmxpbmUiKSxuLnN0cmlrZSYmaS5wdXNoKCJsaW5lLXRocm91Z2giKSxpLmxlbmd0aCYmdC5wdXNoKCJ0ZXh0LWRlY29yYXRpb246IitpLmpvaW4oIiAiKSksbi5jb2xvciYmS3Qobi5jb2xvcikmJnQucHVzaCgiY29sb3I6IitLdChuLmNvbG9yKSk7dmFyIGY9ci5maWxsfHxyLHM9IiI7Zi5wYXR0ZXJuVHlwZSE9Im5vbmUiJiZmLnBhdHRlcm5UeXBlIT0iZ3JheTEyNSImJihzPUt0KGYuZmdDb2xvcil8fEt0KGYuYmdDb2xvcikpLHMmJnQucHVzaCgiYmFja2dyb3VuZC1jb2xvcjoiK3MpO3ZhciBjPXIuYWxpZ25tZW50fHx7fTtpZihjLmhvcml6b250YWwmJnQucHVzaCgidGV4dC1hbGlnbjoiK2MuaG9yaXpvbnRhbCksYy52ZXJ0aWNhbCYmdC5wdXNoKCJ2ZXJ0aWNhbC1hbGlnbjoiK2MudmVydGljYWwpLGMudGV4dFJvdGF0aW9uIT1udWxsJiZjLnRleHRSb3RhdGlvbiE9PTApe3ZhciBvPWMudGV4dFJvdGF0aW9uPT0yNTU/OTA6Yy50ZXh0Um90YXRpb24+OTA/OTAtYy50ZXh0Um90YXRpb246Yy50ZXh0Um90YXRpb247dC5wdXNoKCJ0cmFuc2Zvcm06cm90YXRlKCIrbysiZGVnKSIpLHQucHVzaCgidHJhbnNmb3JtLW9yaWdpbjpjZW50ZXIiKX12YXIgbD1yLmJvcmRlcnx8e307cmV0dXJuIEQwKHQsImxlZnQiLGwubGVmdHx8bC5zdGFydCksRDAodCwicmlnaHQiLGwucmlnaHR8fGwuZW5kKSxEMCh0LCJ0b3AiLGwudG9wKSxEMCh0LCJib3R0b20iLGwuYm90dG9tKSx0LmpvaW4oIjsiKX1mdW5jdGlvbiBoMihlLGEscix0LG4pe2lmKCFhfHwhZSlyZXR1cm4iIjt2YXIgaT1lLnN8fHt9LGY9aS5hbGlnbm1lbnR8fHt9LHM9W107aWYoKGEuYnJvd3NlclBpeGVsc3x8YS5hdXRvRml0KSYmcy5wdXNoKCJib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzowIDJweDttaW4td2lkdGg6MCIpLGYud3JhcFRleHQ/cy5wdXNoKCJ3aGl0ZS1zcGFjZTpwcmUtd3JhcDtvdmVyZmxvdy13cmFwOm5vcm1hbDt3b3JkLWJyZWFrOm5vcm1hbCIpOihzLnB1c2goIndoaXRlLXNwYWNlOnByZSIpLGYuc2hyaW5rVG9GaXR8fGEub3ZlcmZsb3c9PSJjbGlwInx8YS5vdmVyZmxvdz09ImhpZGRlbiI/cy5wdXNoKCJvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzpjbGlwIik6cy5wdXNoKCJvdmVyZmxvdzp2aXNpYmxlIikpLGYuc2hyaW5rVG9GaXQmJm4mJnIhPW51bGwpe2Zvcih2YXIgYz0wLG89dHx8MSxsPTA7bDxvOysrbCljKz1SMChuW3IrbF0pO3ZhciB1PVVzKGUsaSxhKTtpZihjPjAmJnU+Yyl7dmFyIHg9TWF0aC5tYXgoLjI1LE1hdGgubWluKDEsYy91KSk7cy5wdXNoKCJmb250LXNpemU6IitNYXRoLm1heCgxLEJ0KGkpKngpKyJwdCIpfX1yZXR1cm4gcy5qb2luKCI7Iil9ZnVuY3Rpb24gUjAoZSl7cmV0dXJuIFBzKGUpfWZ1bmN0aW9uIGJuKGUpe3JldHVybiBlP2UuaHB4IT1udWxsP2UuaHB4OmUuaHB0IT1udWxsP0h0KGUuaHB0KToyMDoyMH1mdW5jdGlvbiB4MihlLGEscix0KXtmb3IodmFyIG49ZVsiIW1lcmdlcyJdfHxbXSxpPVtdLGY9e30scz1lWyIhZGF0YSJdIT1udWxsLGM9KGVbIiFyb3dzIl18fFtdKVtyXSxvPXQmJnQuX2h0bWxDb2xzfHxlWyIhY29scyJdfHxbXSxsPWEucy5jO2w8PWEuZS5jOysrbCl7Zm9yKHZhciB1PTAseD0wLGg9MDtoPG4ubGVuZ3RoOysraClpZighKG5baF0ucy5yPnJ8fG5baF0ucy5jPmwpJiYhKG5baF0uZS5yPHJ8fG5baF0uZS5jPGwpKXtpZihuW2hdLnMucjxyfHxuW2hdLnMuYzxsKXt1PS0xO2JyZWFrfXU9bltoXS5lLnItbltoXS5zLnIrMSx4PW5baF0uZS5jLW5baF0ucy5jKzE7YnJlYWt9aWYoISh1PDApKXt2YXIgZz1IZShsKStHZShyKSxtPXM/KGVbIiFkYXRhIl1bcl18fFtdKVtsXTplW2ddLGQ9bTtpZihtJiZtLnQ9PSJuIiYmbS52IT1udWxsJiYhaXNGaW5pdGUobS52KSYmKGlzTmFOKG0udik/bT17dDoiZSIsdjozNix3OmJyWzM2XX06bT17dDoiZSIsdjo3LHc6YnJbN119LGQ9bSksdC5jZWxsU3R5bGVzKXt2YXIgcD17fTtvW2xdJiZvW2xdLnMmJmthKHAsb1tsXS5zKSxjJiZjLnMmJmthKHAsYy5zKSxtJiZtLnMmJmthKHAsbS5zKSxwcihwKS5sZW5ndGgmJihkPW0/VWUobSk6e3Q6InoifSxkLnM9cCl9dmFyIHc9bSYmbS52IT1udWxsJiYobS5ofHx4YShtLnd8fChnYShtKSxtLncpfHwiIikpfHwiIjtmPXt9LHU+MSYmKGYucm93c3Bhbj11KSx4PjEmJihmLmNvbHNwYW49eCksdC5lZGl0YWJsZT93PSc8c3BhbiBjb250ZW50ZWRpdGFibGU9InRydWUiPicrdysiPC9zcGFuPiI6bSYmKGZbImRhdGEtdCJdPW0mJm0udHx8InoiLG0udiE9bnVsbCYmKGZbImRhdGEtdiJdPXhhKG0udiBpbnN0YW5jZW9mIERhdGU/bS52LnRvSVNPU3RyaW5nKCk6bS52KSksbS56IT1udWxsJiYoZlsiZGF0YS16Il09bS56KSxtLmYhPW51bGwmJihmWyJkYXRhLWYiXT14YShtLmYpKSxtLmwmJihtLmwuVGFyZ2V0fHwiIyIpLmNoYXJBdCgwKSE9IiMiJiYoIXQuc2FuaXRpemVMaW5rc3x8KG0ubC5UYXJnZXR8fCIiKS5zbGljZSgwLDExKS50b0xvd2VyQ2FzZSgpIT0iamF2YXNjcmlwdDoiKSYmKHc9JzxhIGhyZWY9IicreGEobS5sLlRhcmdldCkrJyI+Jyt3KyI8L2E+IikpO3ZhciBfPXUyKGQsdCkseT1oMihkLHQsbCx4LG8pO3kmJihfPV8/XysiOyIreTp5KSxfJiYoZi5zdHlsZT1fKSxmLmlkPSh0LmlkfHwic2pzIikrIi0iK2csaS5wdXNoKHUwKCJ0ZCIsdyxmKSl9fXZhciBSPXt9LFA9W107cmV0dXJuIGMmJihjLmhpZGRlbiYmUC5wdXNoKCJkaXNwbGF5Om5vbmUiKSx0LmJyb3dzZXJQaXhlbHMmJlAucHVzaCgiaGVpZ2h0OiIrYm4oYykrInB4IikpLFAubGVuZ3RoJiYoUi5zdHlsZT1QLmpvaW4oIjsiKSksdTAoInRyIixpLmpvaW4oIiIpLFIpfXZhciBkMj0nPGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0idXRmLTgiLz48dGl0bGU+U2hlZXRKUyBUYWJsZSBFeHBvcnQ8L3RpdGxlPjwvaGVhZD48Ym9keT4nLHYyPSI8L2JvZHk+PC9odG1sPiI7ZnVuY3Rpb24gcDIoZSxhKXt2YXIgcj1qYyhlLCJ0YWJsZSIpO2lmKCFyfHxyLmxlbmd0aD09MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgSFRNTDogY291bGQgbm90IGZpbmQgPHRhYmxlPiIpO2lmKHIubGVuZ3RoPT0xKXt2YXIgdD1DYShBZihyWzBdLGEpLGEpO3JldHVybiB0LmJvb2tUeXBlPSJodG1sIix0fXZhciBuPU1uKCk7cmV0dXJuIHIuZm9yRWFjaChmdW5jdGlvbihpLGYpe1p0KG4sQWYoaSxhKSwiU2hlZXQiKyhmKzEpKX0pLG4uYm9va1R5cGU9Imh0bWwiLG59dmFyIGR0PTk1MjU7ZnVuY3Rpb24geWYoZSxhLHIpe2Zvcih2YXIgdD17bGVmdDowLHRvcDowLHdpZHRoOjQ4MCxoZWlnaHQ6Mjg4fSxuPXImJnIuX2h0bWxDb2xzfHxlWyIhY29scyJdfHxbXSxpPWVbIiFyb3dzIl18fFtdLGY9YSYmYS5mcm9tfHx7Y29sOjAscm93OjAsY29sT2ZmOjAscm93T2ZmOjB9LHM9YSYmYS50byxjPTA7YzwoZi5jb2x8fDApOysrYyl0LmxlZnQrPVIwKG5bY10pO2Zvcih2YXIgbz0wO288KGYucm93fHwwKTsrK28pdC50b3ArPWJuKGlbb10pO2lmKHQubGVmdCs9KGYuY29sT2ZmfHwwKS9kdCx0LnRvcCs9KGYucm93T2ZmfHwwKS9kdCxzKXt2YXIgbD0wLHU9MDtmb3IoYz0wO2M8KHMuY29sfHwwKTsrK2MpbCs9UjAobltjXSk7Zm9yKG89MDtvPChzLnJvd3x8MCk7KytvKXUrPWJuKGlbb10pO2wrPShzLmNvbE9mZnx8MCkvZHQsdSs9KHMucm93T2ZmfHwwKS9kdCx0LndpZHRoPU1hdGgubWF4KDEsbC10LmxlZnQpLHQuaGVpZ2h0PU1hdGgubWF4KDEsdS10LnRvcCl9ZWxzZSBhJiZhLmV4dCYmKGEuZXh0LmN4JiYodC53aWR0aD1hLmV4dC5jeC9kdCksYS5leHQuY3kmJih0LmhlaWdodD1hLmV4dC5jeS9kdCkpO3JldHVybiB0fWZ1bmN0aW9uIFNmKGUpe3JldHVybiJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OiIrTWF0aC5yb3VuZChlLmxlZnQpKyJweDt0b3A6IitNYXRoLnJvdW5kKGUudG9wKSsicHg7d2lkdGg6IitNYXRoLnJvdW5kKGUud2lkdGgpKyJweDtoZWlnaHQ6IitNYXRoLnJvdW5kKGUuaGVpZ2h0KSsicHgifWZ1bmN0aW9uIE8wKGUpe3JldHVybiBlP2UudmFsJiZlLnZhbC52YWx1ZXM/ZS52YWwudmFsdWVzOmUueVZhbCYmZS55VmFsLnZhbHVlcz9lLnlWYWwudmFsdWVzOmUuZGF0YSYmZS5kYXRhLmxlbmd0aD9lLmRhdGE6W106W119ZnVuY3Rpb24gZzIoZSl7cmV0dXJuIGU/ZS5jYXQmJmUuY2F0LnZhbHVlcz9lLmNhdC52YWx1ZXM6ZS54VmFsJiZlLnhWYWwudmFsdWVzP2UueFZhbC52YWx1ZXM6W106W119ZnVuY3Rpb24gbTIoZSxhLHIpe3ZhciB0PWUmJihlLm1vZGVsfHxlWyIhY2hhcnQiXXx8ZSk7aWYoIXQpcmV0dXJuIiI7dmFyIG49dC5zZXJpZXN8fFtdLGk9KHQudHlwZXx8IiIpLnJlcGxhY2UoL0NoYXJ0JC8sIiIpLGY9TWF0aC5tYXgoMTYwLE1hdGgucm91bmQoYXx8NDgwKSkscz1NYXRoLm1heCgxMjAsTWF0aC5yb3VuZChyfHwyODgpKSxjPXQudGl0bGV8fGUudGl0bGV8fCIiLG89WyIjNEY4MUJEIiwiI0MwNTA0RCIsIiM5QkJCNTkiLCIjODA2NEEyIiwiIzRCQUNDNiIsIiNGNzk2NDYiXSxsPVsnPHN2ZyBjbGFzcz0ic2pzLWNoYXJ0LXN2ZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iJytmKyciIGhlaWdodD0iJytzKyciIHZpZXdCb3g9IjAgMCAnK2YrIiAiK3MrJyI+J107bC5wdXNoKCc8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iJytmKyciIGhlaWdodD0iJytzKyciIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2QwZDdkZSIvPicpLGMmJmwucHVzaCgnPHRleHQgeD0iJytmLzIrJyIgeT0iMjAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCI+Jyt4YShjKSsiPC90ZXh0PiIpO3ZhciB1PWM/MzQ6MTYseD00MixoPTE0LGc9MjgsbT1mLXgtaCxkPXMtdS1nLHA9W107bi5mb3JFYWNoKGZ1bmN0aW9uKGllKXtPMChpZSkuZm9yRWFjaChmdW5jdGlvbihuZSl7dHlwZW9mIG5lPT0ibnVtYmVyIiYmaXNGaW5pdGUobmUpJiZwLnB1c2gobmUpfSl9KTt2YXIgdz1NYXRoLm1heC5hcHBseShNYXRoLHAuY29uY2F0KFswXSkpLF89TWF0aC5taW4uYXBwbHkoTWF0aCxwLmNvbmNhdChbMF0pKTtpZihfPjAmJihfPTApLHc9PV8mJih3PV8rMSksbC5wdXNoKCc8bGluZSB4MT0iJyt4KyciIHkxPSInKyh1K2QpKyciIHgyPSInKyh4K20pKyciIHkyPSInKyh1K2QpKyciIHN0cm9rZT0iIzQ0NCIvPicpLGwucHVzaCgnPGxpbmUgeDE9IicreCsnIiB5MT0iJyt1KyciIHgyPSInK3grJyIgeTI9IicrKHUrZCkrJyIgc3Ryb2tlPSIjNDQ0Ii8+JyksaT09InBpZSJ8fGk9PSJkb3VnaG51dCIpe3ZhciB5PU8wKG5bMF18fHt9KSxSPXkucmVkdWNlKGZ1bmN0aW9uKGllLG5lKXtyZXR1cm4gaWUrKHR5cGVvZiBuZT09Im51bWJlciI/TWF0aC5tYXgoMCxuZSk6MCl9LDApfHwxLFA9Zi8yLGI9dStkLzIsTj1NYXRoLm1heCgxMCxNYXRoLm1pbihtLGQpLzItOCksST0tTWF0aC5QSS8yO3JldHVybiB5LmZvckVhY2goZnVuY3Rpb24oaWUsbmUpe3ZhciBxPUkrTWF0aC5tYXgoMCwraWV8fDApL1IqTWF0aC5QSSoyLGxlPVArTipNYXRoLmNvcyhJKSxRPWIrTipNYXRoLnNpbihJKSxnZT1QK04qTWF0aC5jb3MocSksdWU9YitOKk1hdGguc2luKHEpLGo9cS1JPk1hdGguUEk/MTowO2wucHVzaCgnPHBhdGggZD0iTScrUCsiLCIrYisiIEwiK2xlKyIsIitRKyIgQSIrTisiLCIrTisiIDAgIitqKyIsMSAiK2dlKyIsIit1ZSsnIFoiIGZpbGw9Iicrb1tuZSVvLmxlbmd0aF0rJyIvPicpLEk9cX0pLGk9PSJkb3VnaG51dCImJmwucHVzaCgnPGNpcmNsZSBjeD0iJytQKyciIGN5PSInK2IrJyIgcj0iJytOKi40NSsnIiBmaWxsPSIjZmZmIi8+JyksbC5wdXNoKCI8L3N2Zz4iKSxsLmpvaW4oIiIpfXZhciBCPTA7aWYobi5mb3JFYWNoKGZ1bmN0aW9uKGllKXtCPU1hdGgubWF4KEIsTzAoaWUpLmxlbmd0aCl9KSwhQilyZXR1cm4gbC5wdXNoKCI8L3N2Zz4iKSxsLmpvaW4oIiIpO3ZhciBMPW0vQjtuLmZvckVhY2goZnVuY3Rpb24oaWUsbmUpe3ZhciBxPU8wKGllKSxsZT1vW25lJW8ubGVuZ3RoXTtpZihpPT0ibGluZSJ8fGk9PSJzY2F0dGVyInx8aT09ImFyZWEiKXt2YXIgUT1bXTtxLmZvckVhY2goZnVuY3Rpb24odWUsail7aWYoISh0eXBlb2YgdWUhPSJudW1iZXIifHwhaXNGaW5pdGUodWUpKSl7dmFyIHllPXgrTCooaisuNSksYmU9dStkLSh1ZS1fKS8ody1fKSpkO1EucHVzaChbeWUsYmVdKX19KSxpPT0iYXJlYSImJlEubGVuZ3RoJiZsLnB1c2goJzxwb2x5Z29uIHBvaW50cz0iJytbW1FbMF1bMF0sdStkXV0uY29uY2F0KFEpLmNvbmNhdChbW1FbUS5sZW5ndGgtMV1bMF0sdStkXV0pLm1hcChmdW5jdGlvbih1ZSl7cmV0dXJuIHVlWzBdKyIsIit1ZVsxXX0pLmpvaW4oIiAiKSsnIiBmaWxsPSInK2xlKyciIG9wYWNpdHk9IjAuMzUiLz4nKSxRLmxlbmd0aCYmbC5wdXNoKCc8cG9seWxpbmUgcG9pbnRzPSInK1EubWFwKGZ1bmN0aW9uKHVlKXtyZXR1cm4gdWVbMF0rIiwiK3VlWzFdfSkuam9pbigiICIpKyciIGZpbGw9Im5vbmUiIHN0cm9rZT0iJytsZSsnIiBzdHJva2Utd2lkdGg9IjIiLz4nKSxRLmZvckVhY2goZnVuY3Rpb24odWUpe2wucHVzaCgnPGNpcmNsZSBjeD0iJyt1ZVswXSsnIiBjeT0iJyt1ZVsxXSsnIiByPSIyLjUiIGZpbGw9IicrbGUrJyIvPicpfSl9ZWxzZXt2YXIgZ2U9TWF0aC5tYXgoMSxML01hdGgubWF4KG4ubGVuZ3RoLDEpKi43Mik7cS5mb3JFYWNoKGZ1bmN0aW9uKHVlLGope2lmKCEodHlwZW9mIHVlIT0ibnVtYmVyInx8IWlzRmluaXRlKHVlKSkpe3ZhciB5ZT14K0wqaisoTC1nZSpuLmxlbmd0aCkvMitnZSpuZSxiZT11K2QtKHVlLV8pLyh3LV8pKmQsbWU9dStkLSgwLV8pLyh3LV8pKmQ7bC5wdXNoKCc8cmVjdCB4PSInK3llKyciIHk9IicrTWF0aC5taW4oYmUsbWUpKyciIHdpZHRoPSInK2dlKyciIGhlaWdodD0iJytNYXRoLm1heCgxLE1hdGguYWJzKG1lLWJlKSkrJyIgZmlsbD0iJytsZSsnIi8+Jyl9fSl9aWUubmFtZSYmbC5wdXNoKCc8dGV4dCB4PSInKyh4KzgpKyciIHk9IicrKHUrMTQrbmUqMTQpKyciIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMSIgZmlsbD0iJytsZSsnIj4nK3hhKGllLm5hbWUpKyI8L3RleHQ+Iil9KTt2YXIgRz1nMihuWzBdfHx7fSk7cmV0dXJuIEcuc2xpY2UoMCxNYXRoLm1pbihHLmxlbmd0aCxCKSkuZm9yRWFjaChmdW5jdGlvbihpZSxuZSl7bmUlTWF0aC5jZWlsKEIvOCk9PTAmJmwucHVzaCgnPHRleHQgeD0iJysoeCtMKihuZSsuNSkpKyciIHk9IicrKHUrZCsxNikrJyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEwIj4nK3hhKFN0cmluZyhpZSkpKyI8L3RleHQ+Iil9KSxsLnB1c2goIjwvc3ZnPiIpLGwuam9pbigiIil9ZnVuY3Rpb24gXzIoZSxhKXt2YXIgcj1bXSx0PWVbIiFkcmF3aW5ncyJdfHx7fSxuPWVbIiFjaGFydHMiXXx8W107cmV0dXJuIGEmJmEuZHJhd2luZ3MmJnQuaW1hZ2VzJiZ0LmltYWdlcy5mb3JFYWNoKGZ1bmN0aW9uKGkpe2lmKCEoIWl8fCFpLmRhdGFVUkkpKXt2YXIgZj15ZihlLGkuYW5jaG9yLGEpO3IucHVzaCgnPGltZyBjbGFzcz0ic2pzLWRyYXdpbmctaW1hZ2UiIHNyYz0iJytpLmRhdGFVUkkrJyIgc3R5bGU9IicrU2YoZikrJyIvPicpfX0pLGEmJmEuY2hhcnRzJiZuLmZvckVhY2goZnVuY3Rpb24oaSl7dmFyIGY9eWYoZSxpLmFuY2hvcixhKTtyLnB1c2goJzxkaXYgY2xhc3M9InNqcy1jaGFydCIgc3R5bGU9IicrU2YoZikrJyI+JyttMihpLGYud2lkdGgsZi5oZWlnaHQpKyI8L2Rpdj4iKX0pLHIubGVuZ3RoPyc8ZGl2IGNsYXNzPSJzanMtZHJhd2luZy1sYXllciIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDtwb2ludGVyLWV2ZW50czpub25lIj4nK3Iuam9pbigiIikrIjwvZGl2PiI6IiJ9ZnVuY3Rpb24gazIoZSxhLHIpe3ZhciB0PVtdLG49e30saT1bXTtyJiZyLmlkJiYobi5pZD1yLmlkKSxyJiYoci5icm93c2VyUGl4ZWxzfHxyLmF1dG9GaXQpJiZpLnB1c2goImJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTt0YWJsZS1sYXlvdXQ6Zml4ZWQiKSxpLmxlbmd0aCYmKG4uc3R5bGU9aS5qb2luKCI7IikpO3ZhciBmPXUwKCJ0YWJsZSIsIiIsbikucmVwbGFjZSgvPFwvdGFibGU+JC8sIiIpLHM9ciYmci5faHRtbENvbHN8fGVbIiFjb2xzIl07aWYociYmKHIuYnJvd3NlclBpeGVsc3x8ci5hdXRvRml0KSYmcyl7dC5wdXNoKCI8Y29sZ3JvdXA+Iik7Zm9yKHZhciBjPWEucy5jO2M8PWEuZS5jOysrYyl7dmFyIG89c1tjXSxsPVtdO2wucHVzaCgid2lkdGg6IitSMChvKSsicHgiKSxvJiZvLmhpZGRlbiYmbC5wdXNoKCJkaXNwbGF5Om5vbmUiKSx0LnB1c2godTAoImNvbCIsbnVsbCx7c3R5bGU6bC5qb2luKCI7Iil9KSl9dC5wdXNoKCI8L2NvbGdyb3VwPiIpfXJldHVybiBmK3Quam9pbigiIil9ZnVuY3Rpb24gdzIoZSxhKXt2YXIgcj17fTtpZihhKWZvcih2YXIgdCBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLHQpJiYoclt0XT1hW3RdKTtpZihyLmF1dG9GaXQpe3ZhciBuPXtzZXQ6ITF9O2lmKHR5cGVvZiByLmF1dG9GaXQ9PSJvYmplY3QiKWZvcih0IGluIHIuYXV0b0ZpdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoci5hdXRvRml0LHQpJiYoblt0XT1yLmF1dG9GaXRbdF0pO3IubWVhc3VyZVRleHQmJm4ubWVhc3VyZVRleHQ9PW51bGwmJihuLm1lYXN1cmVUZXh0PXIubWVhc3VyZVRleHQpLHIuY2FudmFzJiZuLmNhbnZhcz09bnVsbCYmKG4uY2FudmFzPXIuY2FudmFzKSxyLl9odG1sQ29scz1nbihlLG4pLHIuYnJvd3NlclBpeGVscz09bnVsbCYmKHIuYnJvd3NlclBpeGVscz0hMCl9dmFyIGk9ci5oZWFkZXIhPW51bGw/ci5oZWFkZXI6ZDIsZj1yLmZvb3RlciE9bnVsbD9yLmZvb3Rlcjp2MixzPVtpXSxjPXBhKGVbIiFyZWYiXXx8IkExIiksbz1yLmNoYXJ0cyYmZVsiIWNoYXJ0cyJdJiZlWyIhY2hhcnRzIl0ubGVuZ3RofHxyLmRyYXdpbmdzJiZlWyIhZHJhd2luZ3MiXTtpZihvJiZzLnB1c2goJzxkaXYgY2xhc3M9InNqcy1zaGVldCIgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrIj4nKSxzLnB1c2goazIoZSxjLHIpKSxlWyIhcmVmIl0pZm9yKHZhciBsPWMucy5yO2w8PWMuZS5yOysrbClzLnB1c2goeDIoZSxjLGwscikpO3JldHVybiBvPyhzLnB1c2goIjwvdGFibGU+Iikscy5wdXNoKF8yKGUscikpLHMucHVzaCgiPC9kaXY+Iikscy5wdXNoKGYpKTpzLnB1c2goIjwvdGFibGU+IitmKSxzLmpvaW4oIiIpfWZ1bmN0aW9uIENmKGUsYSxyKXt2YXIgdD1yfHx7fSxuPWVbIiFkYXRhIl0hPW51bGwsaT0wLGY9MDtpZih0Lm9yaWdpbiE9bnVsbClpZih0eXBlb2YgdC5vcmlnaW49PSJudW1iZXIiKWk9dC5vcmlnaW47ZWxzZXt2YXIgcz10eXBlb2YgdC5vcmlnaW49PSJzdHJpbmciP2dyKHQub3JpZ2luKTp0Lm9yaWdpbjtpPXMucixmPXMuY312YXIgYz17czp7cjowLGM6MH0sZTp7cjppLGM6Zn19O2lmKGVbIiFyZWYiXSl7dmFyIG89cGEoZVsiIXJlZiJdKTtjLnMucj1NYXRoLm1pbihjLnMucixvLnMuciksYy5zLmM9TWF0aC5taW4oYy5zLmMsby5zLmMpLGMuZS5yPU1hdGgubWF4KGMuZS5yLG8uZS5yKSxjLmUuYz1NYXRoLm1heChjLmUuYyxvLmUuYyksaT09LTEmJihjLmUucj1pPW8uZS5yKzEpfXZhciBsPWEucm93cztpZighbCl0aHJvdyJVbnN1cHBvcnRlZCBvcmlnaW4gd2hlbiAiK2EudGFnTmFtZSsiIGlzIG5vdCBhIFRBQkxFIjt2YXIgdT1NYXRoLm1pbih0LnNoZWV0Um93c3x8MWU3LGwubGVuZ3RoKSx4PVtdLGg9MCxnPWVbIiFyb3dzIl18fChlWyIhcm93cyJdPVtdKSxtPTAsZD0wLHA9MCx3PTAsXz0wLHk9MDtmb3IoZVsiIWNvbHMiXXx8KGVbIiFjb2xzIl09W10pO208bC5sZW5ndGgmJmQ8dTsrK20pe3ZhciBSPWxbbV07aWYoSWYoUikpe2lmKHQuZGlzcGxheSljb250aW51ZTtnW2RdPXtoaWRkZW46ITB9fXZhciBQPVIuY2VsbHM7Zm9yKHA9dz0wO3A8UC5sZW5ndGg7KytwKXt2YXIgYj1QW3BdO2lmKCEodC5kaXNwbGF5JiZJZihiKSkpe3ZhciBOPWIuaGFzQXR0cmlidXRlKCJkYXRhLXYiKT9iLmdldEF0dHJpYnV0ZSgiZGF0YS12Iik6Yi5oYXNBdHRyaWJ1dGUoInYiKT9iLmdldEF0dHJpYnV0ZSgidiIpOkNpKGIuaW5uZXJIVE1MKSxJPWIuZ2V0QXR0cmlidXRlKCJkYXRhLXoiKXx8Yi5nZXRBdHRyaWJ1dGUoInoiKSxCPWIuaGFzQXR0cmlidXRlKCJkYXRhLWYiKT9iLmdldEF0dHJpYnV0ZSgiZGF0YS1mIik6Yi5oYXNBdHRyaWJ1dGUoImYiKT9iLmdldEF0dHJpYnV0ZSgiZiIpOm51bGw7Zm9yKGg9MDtoPHgubGVuZ3RoOysraCl7dmFyIEw9eFtoXTtMLnMuYz09dytmJiZMLnMucjxkK2kmJmQraTw9TC5lLnImJih3PUwuZS5jKzEtZixoPS0xKX15PStiLmdldEF0dHJpYnV0ZSgiY29sc3BhbiIpfHwxLCgoXz0rYi5nZXRBdHRyaWJ1dGUoInJvd3NwYW4iKXx8MSk+MXx8eT4xKSYmeC5wdXNoKHtzOntyOmQraSxjOncrZn0sZTp7cjpkK2krKF98fDEpLTEsYzp3K2YrKHl8fDEpLTF9fSk7dmFyIEc9e3Q6InMiLHY6Tn0saWU9Yi5nZXRBdHRyaWJ1dGUoImRhdGEtdCIpfHxiLmdldEF0dHJpYnV0ZSgidCIpfHwiIjtOIT1udWxsJiYoTi5sZW5ndGg9PTA/Ry50PWllfHwieiI6dC5yYXd8fE4udHJpbSgpLmxlbmd0aD09MHx8aWU9PSJzInx8KGllPT0iZSImJmJyWytOXT9HPXt0OiJlIix2OitOLHc6YnJbK05dfTpOPT09IlRSVUUiP0c9e3Q6ImIiLHY6ITB9Ok49PT0iRkFMU0UiP0c9e3Q6ImIiLHY6ITF9OmlzTmFOKE9yKE4pKT9pc05hTihTdChOKS5nZXREYXRlKCkpP04uY2hhckNvZGVBdCgwKT09MzUmJmRyW05dIT1udWxsJiYoRz17dDoiZSIsdjpkcltOXSx3Ok59KTooRz17dDoiZCIsdjp4cihOKX0sdC5VVEMmJihHLnY9bzAoRy52KSksdC5jZWxsRGF0ZXN8fChHPXt0OiJuIix2Om9yKEcudil9KSxHLno9dC5kYXRlTkZ8fFRlWzE0XSk6Rz17dDoibiIsdjpPcihOKX0pKSxHLno9PT12b2lkIDAmJkkhPW51bGwmJihHLno9SSk7dmFyIG5lPSIiLHE9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiQSIpO2lmKHEmJnEubGVuZ3RoKWZvcih2YXIgbGU9MDtsZTxxLmxlbmd0aCYmIShxW2xlXS5oYXNBdHRyaWJ1dGUoImhyZWYiKSYmKG5lPXFbbGVdLmdldEF0dHJpYnV0ZSgiaHJlZiIpLG5lLmNoYXJBdCgwKSE9IiMiKSk7KytsZSk7bmUmJm5lLmNoYXJBdCgwKSE9IiMiJiZuZS5zbGljZSgwLDExKS50b0xvd2VyQ2FzZSgpIT0iamF2YXNjcmlwdDoiJiYoRy5sPXtUYXJnZXQ6bmV9KSxCIT1udWxsJiYoRy5mPUIpLG4/KGVbIiFkYXRhIl1bZCtpXXx8KGVbIiFkYXRhIl1bZCtpXT1bXSksZVsiIWRhdGEiXVtkK2ldW3crZl09Ryk6ZVtEZSh7Yzp3K2YscjpkK2l9KV09RyxjLmUuYzx3K2YmJihjLmUuYz13K2YpLHcrPXl9fSsrZH1yZXR1cm4geC5sZW5ndGgmJihlWyIhbWVyZ2VzIl09KGVbIiFtZXJnZXMiXXx8W10pLmNvbmNhdCh4KSksYy5lLnI9TWF0aC5tYXgoYy5lLnIsZC0xK2kpLGVbIiFyZWYiXT1JZShjKSxkPj11JiYoZVsiIWZ1bGxyZWYiXT1JZSgoYy5lLnI9bC5sZW5ndGgtbStkLTEraSxjKSkpLGV9ZnVuY3Rpb24gYmYoZSxhKXt2YXIgcj1hfHx7fSx0PXt9O3JldHVybiByLmRlbnNlJiYodFsiIWRhdGEiXT1bXSksQ2YodCxlLGEpfWZ1bmN0aW9uIEYyKGUsYSl7dmFyIHI9Q2EoYmYoZSxhKSxhKTtyZXR1cm4gcn1mdW5jdGlvbiBJZihlKXt2YXIgYT0iIixyPVQyKGUpO3JldHVybiByJiYoYT1yKGUpLmdldFByb3BlcnR5VmFsdWUoImRpc3BsYXkiKSksYXx8KGE9ZS5zdHlsZSYmZS5zdHlsZS5kaXNwbGF5KSxhPT09Im5vbmUifWZ1bmN0aW9uIFQyKGUpe3JldHVybiBlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcmJnR5cGVvZiBlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZT09ImZ1bmN0aW9uIj9lLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZTp0eXBlb2YgZ2V0Q29tcHV0ZWRTdHlsZT09ImZ1bmN0aW9uIj9nZXRDb21wdXRlZFN0eWxlOm51bGx9ZnVuY3Rpb24gRTIoZSl7dmFyIGE9ZS5yZXBsYWNlKC9bXHRcclxuXS9nLCIgIikudHJpbSgpLnJlcGxhY2UoLyArL2csIiAiKS5yZXBsYWNlKC88dGV4dDpzXC8+L2csIiAiKS5yZXBsYWNlKC88dGV4dDpzIHRleHQ6Yz0iKFxkKykiXC8+L2csZnVuY3Rpb24odCxuKXtyZXR1cm4gQXJyYXkocGFyc2VJbnQobiwxMCkrMSkuam9pbigiICIpfSkucmVwbGFjZSgvPHRleHQ6dGFiW148Pl0qXC8+L2csIgkiKS5yZXBsYWNlKC88dGV4dDpsaW5lLWJyZWFrXC8+L2csYApgKSxyPUNlKGEucmVwbGFjZSgvPFtePD5dKj4vZywiIikpO3JldHVybltyXX1mdW5jdGlvbiBEZihlLGEscil7dmFyIHQ9cnx8e30sbj1oMChlKTtpci5sYXN0SW5kZXg9MCxuPVowKEN0KG4sIjwhLS0iLCItLT4iKSk7Zm9yKHZhciBpLGYscz0iIixjPSIiLG8sbD0wLHU9LTEseD0iIjtpPWlyLmV4ZWMobik7KXN3aXRjaChpWzNdPWlbM10ucmVwbGFjZSgvX1tcc1xTXSokLywiIikpe2Nhc2UibnVtYmVyLXN0eWxlIjpjYXNlImN1cnJlbmN5LXN0eWxlIjpjYXNlInBlcmNlbnRhZ2Utc3R5bGUiOmNhc2UiZGF0ZS1zdHlsZSI6Y2FzZSJ0aW1lLXN0eWxlIjpjYXNlInRleHQtc3R5bGUiOmlbMV09PT0iLyI/KGZbInRydW5jYXRlLW9uLW92ZXJmbG93Il09PSJmYWxzZSImJihzLm1hdGNoKC9oLyk/cz1zLnJlcGxhY2UoL2grLywiWyQmXSIpOnMubWF0Y2goL20vKT9zPXMucmVwbGFjZSgvbSsvLCJbJCZdIik6cy5tYXRjaCgvcy8pJiYocz1zLnJlcGxhY2UoL3MrLywiWyQmXSIpKSksdFtmLm5hbWVdPXMscz0iIik6aVswXS5jaGFyQXQoaVswXS5sZW5ndGgtMikhPT0iLyImJihzPSIiLGY9b2UoaVswXSwhMSkpO2JyZWFrO2Nhc2UiYm9vbGVhbi1zdHlsZSI6aVsxXT09PSIvIj8odFtmLm5hbWVdPSJHZW5lcmFsIixzPSIiKTppWzBdLmNoYXJBdChpWzBdLmxlbmd0aC0yKSE9PSIvIiYmKHM9IiIsZj1vZShpWzBdLCExKSk7YnJlYWs7Y2FzZSJib29sZWFuIjpzKz0iR2VuZXJhbCI7YnJlYWs7Y2FzZSJ0ZXh0IjppWzFdPT09Ii8iPyh4PW4uc2xpY2UodSxpci5sYXN0SW5kZXgtaVswXS5sZW5ndGgpLHg9PSIlIiYmZlswXT09IjxudW1iZXI6cGVyY2VudGFnZS1zdHlsZSI/cys9IiUiOnMrPSciJyt4LnJlcGxhY2UoLyIvZywnIiInKSsnIicpOmlbMF0uY2hhckF0KGlbMF0ubGVuZ3RoLTIpIT09Ii8iJiYodT1pci5sYXN0SW5kZXgpO2JyZWFrO2Nhc2UiZGF5Ijpzd2l0Y2gobz1vZShpWzBdLCExKSxvLnN0eWxlKXtjYXNlInNob3J0IjpzKz0iZCI7YnJlYWs7Y2FzZSJsb25nIjpzKz0iZGQiO2JyZWFrO2RlZmF1bHQ6cys9ImRkIjticmVha31icmVhaztjYXNlImRheS1vZi13ZWVrIjpzd2l0Y2gobz1vZShpWzBdLCExKSxvLnN0eWxlKXtjYXNlInNob3J0IjpzKz0iZGRkIjticmVhaztjYXNlImxvbmciOnMrPSJkZGRkIjticmVhaztkZWZhdWx0OnMrPSJkZGQiO2JyZWFrfWJyZWFrO2Nhc2UiZXJhIjpzd2l0Y2gobz1vZShpWzBdLCExKSxvLnN0eWxlKXtjYXNlInNob3J0IjpzKz0iZWUiO2JyZWFrO2Nhc2UibG9uZyI6cys9ImVlZWUiO2JyZWFrO2RlZmF1bHQ6cys9ImVlZWUiO2JyZWFrfWJyZWFrO2Nhc2UiaG91cnMiOnN3aXRjaChvPW9lKGlbMF0sITEpLG8uc3R5bGUpe2Nhc2Uic2hvcnQiOnMrPSJoIjticmVhaztjYXNlImxvbmciOnMrPSJoaCI7YnJlYWs7ZGVmYXVsdDpzKz0iaGgiO2JyZWFrfWJyZWFrO2Nhc2UibWludXRlcyI6c3dpdGNoKG89b2UoaVswXSwhMSksby5zdHlsZSl7Y2FzZSJzaG9ydCI6cys9Im0iO2JyZWFrO2Nhc2UibG9uZyI6cys9Im1tIjticmVhaztkZWZhdWx0OnMrPSJtbSI7YnJlYWt9YnJlYWs7Y2FzZSJtb250aCI6c3dpdGNoKG89b2UoaVswXSwhMSksby50ZXh0dWFsJiYocys9Im1tIiksby5zdHlsZSl7Y2FzZSJzaG9ydCI6cys9Im0iO2JyZWFrO2Nhc2UibG9uZyI6cys9Im1tIjticmVhaztkZWZhdWx0OnMrPSJtIjticmVha31icmVhaztjYXNlInNlY29uZHMiOntzd2l0Y2gobz1vZShpWzBdLCExKSxvLnN0eWxlKXtjYXNlInNob3J0IjpzKz0icyI7YnJlYWs7Y2FzZSJsb25nIjpzKz0ic3MiO2JyZWFrO2RlZmF1bHQ6cys9InNzIjticmVha31vWyJkZWNpbWFsLXBsYWNlcyJdJiYocys9Ii4iK1BlKCIwIiwrb1siZGVjaW1hbC1wbGFjZXMiXSkpfWJyZWFrO2Nhc2UieWVhciI6c3dpdGNoKG89b2UoaVswXSwhMSksby5zdHlsZSl7Y2FzZSJzaG9ydCI6cys9Inl5IjticmVhaztjYXNlImxvbmciOnMrPSJ5eXl5IjticmVhaztkZWZhdWx0OnMrPSJ5eSI7YnJlYWt9YnJlYWs7Y2FzZSJhbS1wbSI6cys9IkFNL1BNIjticmVhaztjYXNlIndlZWstb2YteWVhciI6Y2FzZSJxdWFydGVyIjpjb25zb2xlLmVycm9yKCJFeGNlbCBkb2VzIG5vdCBzdXBwb3J0IE9EUyBmb3JtYXQgdG9rZW4gIitpWzNdKTticmVhaztjYXNlImZpbGwtY2hhcmFjdGVyIjppWzFdPT09Ii8iPyh4PW4uc2xpY2UodSxpci5sYXN0SW5kZXgtaVswXS5sZW5ndGgpLHMrPSciJyt4LnJlcGxhY2UoLyIvZywnIiInKSsnIionKTppWzBdLmNoYXJBdChpWzBdLmxlbmd0aC0yKSE9PSIvIiYmKHU9aXIubGFzdEluZGV4KTticmVhaztjYXNlInNjaWVudGlmaWMtbnVtYmVyIjpvPW9lKGlbMF0sITEpLHMrPSIwLiIrUGUoIjAiLCtvWyJtaW4tZGVjaW1hbC1wbGFjZXMiXXx8K29bImRlY2ltYWwtcGxhY2VzIl18fDIpK1BlKCI/Iiwrb1siZGVjaW1hbC1wbGFjZXMiXS0rb1sibWluLWRlY2ltYWwtcGxhY2VzIl18fDApKyJFIisoRmUob1siZm9yY2VkLWV4cG9uZW50LXNpZ24iXSk/IisiOiIiKStQZSgiMCIsK29bIm1pbi1leHBvbmVudC1kaWdpdHMiXXx8Mik7YnJlYWs7Y2FzZSJmcmFjdGlvbiI6bz1vZShpWzBdLCExKSwrb1sibWluLWludGVnZXItZGlnaXRzIl0/cys9UGUoIjAiLCtvWyJtaW4taW50ZWdlci1kaWdpdHMiXSk6cys9IiMiLHMrPSIgIixzKz1QZSgiPyIsK29bIm1pbi1udW1lcmF0b3ItZGlnaXRzIl18fDEpLHMrPSIvIiwrb1siZGVub21pbmF0b3ItdmFsdWUiXT9zKz1vWyJkZW5vbWluYXRvci12YWx1ZSJdOnMrPVBlKCI/Iiwrb1sibWluLWRlbm9taW5hdG9yLWRpZ2l0cyJdfHwxKTticmVhaztjYXNlImN1cnJlbmN5LXN5bWJvbCI6aVsxXT09PSIvIj9zKz0nIicrbi5zbGljZSh1LGlyLmxhc3RJbmRleC1pWzBdLmxlbmd0aCkucmVwbGFjZSgvIi9nLCciIicpKyciJzppWzBdLmNoYXJBdChpWzBdLmxlbmd0aC0yKSE9PSIvIj91PWlyLmxhc3RJbmRleDpzKz0iJCI7YnJlYWs7Y2FzZSJ0ZXh0LXByb3BlcnRpZXMiOnN3aXRjaChvPW9lKGlbMF0sITEpLChvLmNvbG9yfHwiIikudG9Mb3dlckNhc2UoKS5yZXBsYWNlKCIjIiwiIikpe2Nhc2UiZmYwMDAwIjpjYXNlInJlZCI6cz0iW1JlZF0iK3M7YnJlYWt9YnJlYWs7Y2FzZSJ0ZXh0LWNvbnRlbnQiOnMrPSJAIjticmVhaztjYXNlIm1hcCI6bz1vZShpWzBdLCExKSxDZShvLmNvbmRpdGlvbik9PSJ2YWx1ZSgpPj0wIj9zPXRbb1siYXBwbHktc3R5bGUtbmFtZSJdXSsiOyIrczphJiZhLldURiYmY29uc29sZS5lcnJvcigiT0RTIG51bWJlciBmb3JtYXQgbWF5IGJlIGluY29ycmVjdDogIitvLmNvbmRpdGlvbik7YnJlYWs7Y2FzZSJudW1iZXIiOmlmKGlbMV09PT0iLyIpYnJlYWs7bz1vZShpWzBdLCExKSxjPSIiLGMrPVBlKCIwIiwrb1sibWluLWludGVnZXItZGlnaXRzIl18fDEpLEZlKG8uZ3JvdXBpbmcpJiYoYz1vYShQZSgiIyIsTWF0aC5tYXgoMCw0LWMubGVuZ3RoKSkrYykpLCgrb1sibWluLWRlY2ltYWwtcGxhY2VzIl18fCtvWyJkZWNpbWFsLXBsYWNlcyJdKSYmKGMrPSIuIiksK29bIm1pbi1kZWNpbWFsLXBsYWNlcyJdJiYoYys9UGUoIjAiLCtvWyJtaW4tZGVjaW1hbC1wbGFjZXMiXXx8MSkpLCtvWyJkZWNpbWFsLXBsYWNlcyJdLSgrb1sibWluLWRlY2ltYWwtcGxhY2VzIl18fDApJiYoYys9UGUoIjAiLCtvWyJkZWNpbWFsLXBsYWNlcyJdLSgrb1sibWluLWRlY2ltYWwtcGxhY2VzIl18fDApKSkscys9YzticmVhaztjYXNlImVtYmVkZGVkLXRleHQiOmlbMV09PT0iLyI/bD09MD9zKz0nIicrbi5zbGljZSh1LGlyLmxhc3RJbmRleC1pWzBdLmxlbmd0aCkucmVwbGFjZSgvIi9nLCciIicpKyciJzpzPXMuc2xpY2UoMCxsKSsnIicrbi5zbGljZSh1LGlyLmxhc3RJbmRleC1pWzBdLmxlbmd0aCkucmVwbGFjZSgvIi9nLCciIicpKyciJytzLnNsaWNlKGwpOmlbMF0uY2hhckF0KGlbMF0ubGVuZ3RoLTIpIT09Ii8iJiYodT1pci5sYXN0SW5kZXgsbD0tK29lKGlbMF0sITEpLnBvc2l0aW9ufHwwKTticmVha31yZXR1cm4gdH1mdW5jdGlvbiBSZihlLGEscil7dmFyIHQ9YXx8e30sbj1oMChlKSxpPVtdLGYscyxjLG89IiIsbD0wLHUseCxoPXt9LGc9W10sbT17fTt0LmRlbnNlJiYobVsiIWRhdGEiXT1bXSk7dmFyIGQscCx3PXt2YWx1ZToiIn0sXz17fSx5PSIiLFI9MCxQPSIiLGI9MCxOPVtdLEk9W10sQj0tMSxMPS0xLEc9e3M6e3I6MWU2LGM6MWU3fSxlOntyOjAsYzowfX0saWU9MCxuZT1yfHx7fSxxPXt9LGxlPXt9LFE9W10sZ2U9e30sdWU9MCxqPTAseWU9W10sYmU9MSxtZT0xLFo9W10sT2U9e05hbWVzOltdLFdCUHJvcHM6e30sU2hlZXRzOltdfSx3ZT17fSxBZT1bIiIsIiJdLEE9W10sVT17fSxPPSIiLEQ9MCx6PSExLHBlPSExLEo9MDtmb3IoaXIubGFzdEluZGV4PTAsbj1aMChDdChuLCI8IS0tIiwiLS0+IikpO2Q9aXIuZXhlYyhuKTspc3dpdGNoKGRbM109ZFszXS5yZXBsYWNlKC9fW1xzXFNdKiQvLCIiKSl7Y2FzZSJ0YWJsZSI6Y2FzZSLlt6XkvZzooagiOmRbMV09PT0iLyI/KEcuZS5jPj1HLnMuYyYmRy5lLnI+PUcucy5yP21bIiFyZWYiXT1JZShHKTptWyIhcmVmIl09IkExOkExIix0LnNoZWV0Um93cz4wJiZ0LnNoZWV0Um93czw9Ry5lLnImJihtWyIhZnVsbHJlZiJdPW1bIiFyZWYiXSxHLmUucj10LnNoZWV0Um93cy0xLG1bIiFyZWYiXT1JZShHKSksUS5sZW5ndGgmJihtWyIhbWVyZ2VzIl09USkseWUubGVuZ3RoJiYobVsiIXJvd3MiXT15ZSksdS5uYW1lPXUu5ZCN56ewfHx1Lm5hbWUsdHlwZW9mIEpTT048InUiJiZKU09OLnN0cmluZ2lmeSh1KSxnLnB1c2godS5uYW1lKSxoW3UubmFtZV09bSxPZS5TaGVldHMucHVzaCh7SGlkZGVuOmxlW3VbInN0eWxlLW5hbWUiXV0mJmxlW3VbInN0eWxlLW5hbWUiXV0uZGlzcGxheT9GZShsZVt1WyJzdHlsZS1uYW1lIl1dLmRpc3BsYXkpPzA6MTowfSkscGU9ITEpOmRbMF0uY2hhckF0KGRbMF0ubGVuZ3RoLTIpIT09Ii8iJiYodT1vZShkWzBdLCExKSxCPUw9LTEsRy5zLnI9Ry5zLmM9MWU3LEcuZS5yPUcuZS5jPTAsbT17fSx0LmRlbnNlJiYobVsiIWRhdGEiXT1bXSksUT1bXSx5ZT1bXSxwZT0hMCk7YnJlYWs7Y2FzZSJ0YWJsZS1yb3ctZ3JvdXAiOmRbMV09PT0iLyI/LS1pZTorK2llO2JyZWFrO2Nhc2UidGFibGUtcm93IjpjYXNlIuihjCI6aWYoZFsxXT09PSIvIil7Qis9YmUsYmU9MTticmVha31pZih4PW9lKGRbMF0sITEpLHgu6KGM5Y+3P0I9eC7ooYzlj7ctMTpCPT0tMSYmKEI9MCksYmU9K3hbIm51bWJlci1yb3dzLXJlcGVhdGVkIl18fDEsYmU8MTApZm9yKEo9MDtKPGJlOysrSilpZT4wJiYoeWVbQitKXT17bGV2ZWw6aWV9KTtMPS0xO2JyZWFrO2Nhc2UiY292ZXJlZC10YWJsZS1jZWxsIjppZihkWzFdIT09Ii8iKWlmKCsrTCx3PW9lKGRbMF0sITEpLG1lPXBhcnNlSW50KHdbIm51bWJlci1jb2x1bW5zLXJlcGVhdGVkIl18fCIxIiwxMCl8fDEsdC5zaGVldFN0dWJzKXtmb3IoO21lLS0gPjA7KXQuZGVuc2U/KG1bIiFkYXRhIl1bQl18fChtWyIhZGF0YSJdW0JdPVtdKSxtWyIhZGF0YSJdW0JdW0xdPXt0OiJ6In0pOm1bRGUoe3I6QixjOkx9KV09e3Q6InoifSwrK0w7LS1MfWVsc2UgTCs9bWUtMTt5PSIiLE49W107YnJlYWs7Y2FzZSJ0YWJsZS1jZWxsIjpjYXNlIuaVsOaNriI6aWYoZFswXS5jaGFyQXQoZFswXS5sZW5ndGgtMik9PT0iLyIpKytMLHc9b2UoZFswXSwhMSksbWU9cGFyc2VJbnQod1sibnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQiXXx8IjEiLDEwKXx8MSxwPXt0OiJ6Iix2Om51bGx9LHcuZm9ybXVsYSYmdC5jZWxsRm9ybXVsYSE9ITEmJihwLmY9b2YoQ2Uody5mb3JtdWxhKSkpLHdbInN0eWxlLW5hbWUiXSYmcVt3WyJzdHlsZS1uYW1lIl1dJiYocC56PXFbd1sic3R5bGUtbmFtZSJdXSksKHcu5pWw5o2u57G75Z6LfHx3WyJ2YWx1ZS10eXBlIl0pPT0ic3RyaW5nIiYmKHAudD0icyIscC52PUNlKHdbInN0cmluZy12YWx1ZSJdfHwiIiksdC5kZW5zZT8obVsiIWRhdGEiXVtCXXx8KG1bIiFkYXRhIl1bQl09W10pLG1bIiFkYXRhIl1bQl1bTF09cCk6bVtIZShMKStHZShCKV09cCksTCs9bWUtMTtlbHNlIGlmKGRbMV0hPT0iLyIpeysrTCx5PVA9IiIsUj1iPTAsTj1bXSxJPVtdLG1lPTE7dmFyIHJlPWJlP0IrYmUtMTpCO2lmKEw+Ry5lLmMmJihHLmUuYz1MKSxMPEcucy5jJiYoRy5zLmM9TCksQjxHLnMuciYmKEcucy5yPUIpLHJlPkcuZS5yJiYoRy5lLnI9cmUpLHc9b2UoZFswXSwhMSksXz1lbyhkWzBdLCEwKSxBPVtdLFU9e30scD17dDp3LuaVsOaNruexu+Wei3x8d1sidmFsdWUtdHlwZSJdLHY6bnVsbH0sd1sic3R5bGUtbmFtZSJdJiZxW3dbInN0eWxlLW5hbWUiXV0mJihwLno9cVt3WyJzdHlsZS1uYW1lIl1dKSx0LmNlbGxGb3JtdWxhKWlmKHcuZm9ybXVsYSYmKHcuZm9ybXVsYT1DZSh3LmZvcm11bGEpKSx3WyJudW1iZXItbWF0cml4LWNvbHVtbnMtc3Bhbm5lZCJdJiZ3WyJudW1iZXItbWF0cml4LXJvd3Mtc3Bhbm5lZCJdJiYodWU9cGFyc2VJbnQod1sibnVtYmVyLW1hdHJpeC1yb3dzLXNwYW5uZWQiXSwxMCl8fDAsaj1wYXJzZUludCh3WyJudW1iZXItbWF0cml4LWNvbHVtbnMtc3Bhbm5lZCJdLDEwKXx8MCxnZT17czp7cjpCLGM6TH0sZTp7cjpCK3VlLTEsYzpMK2otMX19LHAuRj1JZShnZSksWi5wdXNoKFtnZSxwLkZdKSksdy5mb3JtdWxhKXAuZj1vZih3LmZvcm11bGEpO2Vsc2UgZm9yKEo9MDtKPFoubGVuZ3RoOysrSilCPj1aW0pdWzBdLnMuciYmQjw9WltKXVswXS5lLnImJkw+PVpbSl1bMF0ucy5jJiZMPD1aW0pdWzBdLmUuYyYmKHAuRj1aW0pdWzFdKTtzd2l0Y2goKHdbIm51bWJlci1jb2x1bW5zLXNwYW5uZWQiXXx8d1sibnVtYmVyLXJvd3Mtc3Bhbm5lZCJdKSYmKHVlPXBhcnNlSW50KHdbIm51bWJlci1yb3dzLXNwYW5uZWQiXXx8IjEiLDEwKXx8MSxqPXBhcnNlSW50KHdbIm51bWJlci1jb2x1bW5zLXNwYW5uZWQiXXx8IjEiLDEwKXx8MSx1ZSpqPjEmJihnZT17czp7cjpCLGM6TH0sZTp7cjpCK3VlLTEsYzpMK2otMX19LFEucHVzaChnZSkpKSx3WyJudW1iZXItY29sdW1ucy1yZXBlYXRlZCJdJiYobWU9cGFyc2VJbnQod1sibnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQiXSwxMCkpLHAudCl7Y2FzZSJib29sZWFuIjpwLnQ9ImIiLHAudj1GZSh3WyJib29sZWFuLXZhbHVlIl0pfHwrd1siYm9vbGVhbi12YWx1ZSJdPj0xO2JyZWFrO2Nhc2UiZmxvYXQiOnAudD0ibiIscC52PXBhcnNlRmxvYXQody52YWx1ZSksdC5jZWxsRGF0ZXMmJnAueiYmWnIocC56KSYmKHAudj1TYShwLnYrKE9lLldCUHJvcHMuZGF0ZTE5MDQ/MTQ2MjowKSkscC50PXR5cGVvZiBwLnY9PSJudW1iZXIiPyJuIjoiZCIpO2JyZWFrO2Nhc2UicGVyY2VudGFnZSI6cC50PSJuIixwLnY9cGFyc2VGbG9hdCh3LnZhbHVlKTticmVhaztjYXNlImN1cnJlbmN5IjpwLnQ9Im4iLHAudj1wYXJzZUZsb2F0KHcudmFsdWUpO2JyZWFrO2Nhc2UiZGF0ZSI6cC50PSJkIixwLnY9eHIod1siZGF0ZS12YWx1ZSJdLE9lLldCUHJvcHMuZGF0ZTE5MDQpLHQuY2VsbERhdGVzfHwocC50PSJuIixwLnY9b3IocC52LE9lLldCUHJvcHMuZGF0ZTE5MDQpKSxwLnp8fChwLno9Im0vZC95eSIpO2JyZWFrO2Nhc2UidGltZSI6cC50PSJuIixwLnY9TWMod1sidGltZS12YWx1ZSJdKS84NjQwMCx0LmNlbGxEYXRlcyYmKHAudj1TYShwLnYpLHAudD10eXBlb2YgcC52PT0ibnVtYmVyIj8ibiI6ImQiKSxwLnp8fChwLno9IkhIOk1NOlNTIik7YnJlYWs7Y2FzZSJudW1iZXIiOnAudD0ibiIscC52PXBhcnNlRmxvYXQody7mlbDmja7mlbDlgLwpO2JyZWFrO2RlZmF1bHQ6aWYocC50PT09InN0cmluZyJ8fHAudD09PSJ0ZXh0Inx8IXAudClwLnQ9InMiLHdbInN0cmluZy12YWx1ZSJdIT1udWxsJiYoeT1DZSh3WyJzdHJpbmctdmFsdWUiXSksTj1bXSk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHZhbHVlIHR5cGUgIitwLnQpfX1lbHNle2lmKHo9ITEsX1siY2FsY2V4dDp2YWx1ZS10eXBlIl09PSJlcnJvciImJmRyW3ldIT1udWxsJiYocC50PSJlIixwLnc9eSxwLnY9ZHJbeV0pLHAudD09PSJzIiYmKHAudj15fHwiIixOLmxlbmd0aCYmKHAuUj1OKSx6PVI9PTApLHdlLlRhcmdldCYmKHAubD13ZSksQS5sZW5ndGg+MCYmKHAuYz1BLEE9W10pLHkmJnQuY2VsbFRleHQhPT0hMSYmKHAudz15KSx6JiYocC50PSJ6IixkZWxldGUgcC52KSwoIXp8fHQuc2hlZXRTdHVicykmJiEodC5zaGVldFJvd3MmJnQuc2hlZXRSb3dzPD1CKSlmb3IodmFyIGVlPTA7ZWU8YmU7KytlZSl7aWYobWU9cGFyc2VJbnQod1sibnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQiXXx8IjEiLDEwKSx0LmRlbnNlKWZvcihtWyIhZGF0YSJdW0IrZWVdfHwobVsiIWRhdGEiXVtCK2VlXT1bXSksbVsiIWRhdGEiXVtCK2VlXVtMXT1lZT09MD9wOlVlKHApOy0tbWU+MDspbVsiIWRhdGEiXVtCK2VlXVtMK21lXT1VZShwKTtlbHNlIGZvcihtW0RlKHtyOkIrZWUsYzpMfSldPXA7LS1tZT4wOyltW0RlKHtyOkIrZWUsYzpMK21lfSldPVVlKHApO0cuZS5jPD1MJiYoRy5lLmM9TCl9bWU9cGFyc2VJbnQod1sibnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQiXXx8IjEiLDEwKSxMKz1tZS0xLG1lPTAscD17fSx5PSIiLE49W119d2U9e307YnJlYWs7Y2FzZSJkb2N1bWVudCI6Y2FzZSJkb2N1bWVudC1jb250ZW50IjpjYXNlIueUteWtkOihqOagvOaWh+ahoyI6Y2FzZSJzcHJlYWRzaGVldCI6Y2FzZSLkuLvkvZMiOmNhc2Uic2NyaXB0cyI6Y2FzZSJzdHlsZXMiOmNhc2UiZm9udC1mYWNlLWRlY2xzIjpjYXNlIm1hc3Rlci1zdHlsZXMiOmlmKGRbMV09PT0iLyIpe2lmKChmPWkucG9wKCkpWzBdIT09ZFszXSl0aHJvdyJCYWQgc3RhdGU6ICIrZn1lbHNlIGRbMF0uY2hhckF0KGRbMF0ubGVuZ3RoLTIpIT09Ii8iJiZpLnB1c2goW2RbM10sITBdKTticmVhaztjYXNlImFubm90YXRpb24iOmlmKGRbMV09PT0iLyIpe2lmKChmPWkucG9wKCkpWzBdIT09ZFszXSl0aHJvdyJCYWQgc3RhdGU6ICIrZjtVLnQ9eSxOLmxlbmd0aCYmKFUuUj1OKSxVLmE9TyxBLnB1c2goVSkseT1QLFI9YixOPUl9ZWxzZSBpZihkWzBdLmNoYXJBdChkWzBdLmxlbmd0aC0yKSE9PSIvIil7aS5wdXNoKFtkWzNdLCExXSk7dmFyIGtlPW9lKGRbMF0sITApO2tlLmRpc3BsYXkmJkZlKGtlLmRpc3BsYXkpfHwoQS5oaWRkZW49ITApLFA9eSxiPVIsST1OLHk9IiIsUj0wLE49W119Tz0iIixEPTA7YnJlYWs7Y2FzZSJjcmVhdG9yIjpkWzFdPT09Ii8iP089bi5zbGljZShELGQuaW5kZXgpOkQ9ZC5pbmRleCtkWzBdLmxlbmd0aDticmVhaztjYXNlIm1ldGEiOmNhc2Ui5YWD5pWw5o2uIjpjYXNlInNldHRpbmdzIjpjYXNlImNvbmZpZy1pdGVtLXNldCI6Y2FzZSJjb25maWctaXRlbS1tYXAtaW5kZXhlZCI6Y2FzZSJjb25maWctaXRlbS1tYXAtZW50cnkiOmNhc2UiY29uZmlnLWl0ZW0tbWFwLW5hbWVkIjpjYXNlInNoYXBlcyI6Y2FzZSJmcmFtZSI6Y2FzZSJ0ZXh0LWJveCI6Y2FzZSJpbWFnZSI6Y2FzZSJkYXRhLXBpbG90LXRhYmxlcyI6Y2FzZSJsaXN0LXN0eWxlIjpjYXNlImZvcm0iOmNhc2UiZGRlLWxpbmtzIjpjYXNlImV2ZW50LWxpc3RlbmVycyI6Y2FzZSJjaGFydCI6aWYoZFsxXT09PSIvIil7aWYoKGY9aS5wb3AoKSlbMF0hPT1kWzNdKXRocm93IkJhZCBzdGF0ZTogIitmfWVsc2UgZFswXS5jaGFyQXQoZFswXS5sZW5ndGgtMikhPT0iLyImJmkucHVzaChbZFszXSwhMV0pO3k9IiIsUj0wLE49W107YnJlYWs7Y2FzZSJzY2llbnRpZmljLW51bWJlciI6Y2FzZSJjdXJyZW5jeS1zeW1ib2wiOmNhc2UiZmlsbC1jaGFyYWN0ZXIiOmJyZWFrO2Nhc2UidGV4dC1zdHlsZSI6Y2FzZSJib29sZWFuLXN0eWxlIjpjYXNlIm51bWJlci1zdHlsZSI6Y2FzZSJjdXJyZW5jeS1zdHlsZSI6Y2FzZSJwZXJjZW50YWdlLXN0eWxlIjpjYXNlImRhdGUtc3R5bGUiOmNhc2UidGltZS1zdHlsZSI6aWYoZFsxXT09PSIvIil7dmFyIGhlPWlyLmxhc3RJbmRleDtEZihuLnNsaWNlKGMsaXIubGFzdEluZGV4KSxhLG5lKSxpci5sYXN0SW5kZXg9aGV9ZWxzZSBkWzBdLmNoYXJBdChkWzBdLmxlbmd0aC0yKSE9PSIvIiYmKGM9aXIubGFzdEluZGV4LWRbMF0ubGVuZ3RoKTticmVhaztjYXNlInNjcmlwdCI6YnJlYWs7Y2FzZSJsaWJyYXJpZXMiOmJyZWFrO2Nhc2UiYXV0b21hdGljLXN0eWxlcyI6YnJlYWs7Y2FzZSJkZWZhdWx0LXN0eWxlIjpjYXNlInBhZ2UtbGF5b3V0IjpicmVhaztjYXNlInN0eWxlIjp7dmFyIHhlPW9lKGRbMF0sITEpO3hlLmZhbWlseT09InRhYmxlLWNlbGwiJiZuZVt4ZVsiZGF0YS1zdHlsZS1uYW1lIl1dP3FbeGUubmFtZV09bmVbeGVbImRhdGEtc3R5bGUtbmFtZSJdXTp4ZS5mYW1pbHk9PSJ0YWJsZSImJihsZVt4ZS5uYW1lXT14ZSl9YnJlYWs7Y2FzZSJtYXAiOmJyZWFrO2Nhc2UiZm9udC1mYWNlIjpicmVhaztjYXNlInBhcmFncmFwaC1wcm9wZXJ0aWVzIjpicmVhaztjYXNlInRhYmxlLXByb3BlcnRpZXMiOnt2YXIgWGU9b2UoZFswXSwhMSk7eGUmJnhlLmZhbWlseT09InRhYmxlIiYmKHhlLmRpc3BsYXk9WGUuZGlzcGxheSl9YnJlYWs7Y2FzZSJ0YWJsZS1jb2x1bW4tcHJvcGVydGllcyI6YnJlYWs7Y2FzZSJ0YWJsZS1yb3ctcHJvcGVydGllcyI6YnJlYWs7Y2FzZSJ0YWJsZS1jZWxsLXByb3BlcnRpZXMiOmJyZWFrO2Nhc2UibnVtYmVyIjpicmVhaztjYXNlImZyYWN0aW9uIjpicmVhaztjYXNlImRheSI6Y2FzZSJtb250aCI6Y2FzZSJ5ZWFyIjpjYXNlImVyYSI6Y2FzZSJkYXktb2Ytd2VlayI6Y2FzZSJ3ZWVrLW9mLXllYXIiOmNhc2UicXVhcnRlciI6Y2FzZSJob3VycyI6Y2FzZSJtaW51dGVzIjpjYXNlInNlY29uZHMiOmNhc2UiYW0tcG0iOmJyZWFrO2Nhc2UiYm9vbGVhbiI6YnJlYWs7Y2FzZSJ0ZXh0IjppZihkWzBdLnNsaWNlKC0yKT09PSIvPiIpYnJlYWs7aWYoZFsxXT09PSIvIilzd2l0Y2goaVtpLmxlbmd0aC0xXVswXSl7Y2FzZSJudW1iZXItc3R5bGUiOmNhc2UiZGF0ZS1zdHlsZSI6Y2FzZSJ0aW1lLXN0eWxlIjpvKz1uLnNsaWNlKGwsZC5pbmRleCk7YnJlYWt9ZWxzZSBsPWQuaW5kZXgrZFswXS5sZW5ndGg7YnJlYWs7Y2FzZSJuYW1lZC1yYW5nZSI6cz1vZShkWzBdLCExKSxBZT1GbihzWyJjZWxsLXJhbmdlLWFkZHJlc3MiXSk7dmFyIHplPXtOYW1lOnMubmFtZSxSZWY6QWVbMF0rIiEiK0FlWzFdfTtwZSYmKHplLlNoZWV0PWcubGVuZ3RoKSxPZS5OYW1lcy5wdXNoKHplKTticmVhaztjYXNlInRleHQtY29udGVudCI6YnJlYWs7Y2FzZSJ0ZXh0LXByb3BlcnRpZXMiOmJyZWFrO2Nhc2UiZW1iZWRkZWQtdGV4dCI6YnJlYWs7Y2FzZSJib2R5IjpjYXNlIueUteWtkOihqOagvCI6YnJlYWs7Y2FzZSJmb3JtcyI6YnJlYWs7Y2FzZSJ0YWJsZS1jb2x1bW4iOmJyZWFrO2Nhc2UidGFibGUtaGVhZGVyLXJvd3MiOmJyZWFrO2Nhc2UidGFibGUtcm93cyI6YnJlYWs7Y2FzZSJ0YWJsZS1jb2x1bW4tZ3JvdXAiOmJyZWFrO2Nhc2UidGFibGUtaGVhZGVyLWNvbHVtbnMiOmJyZWFrO2Nhc2UidGFibGUtY29sdW1ucyI6YnJlYWs7Y2FzZSJudWxsLWRhdGUiOnN3aXRjaChzPW9lKGRbMF0sITEpLHNbImRhdGUtdmFsdWUiXSl7Y2FzZSIxOTA0LTAxLTAxIjpPZS5XQlByb3BzLmRhdGUxOTA0PSEwO2JyZWFrfWJyZWFrO2Nhc2UiZ3JhcGhpYy1wcm9wZXJ0aWVzIjpicmVhaztjYXNlImNhbGN1bGF0aW9uLXNldHRpbmdzIjpicmVhaztjYXNlIm5hbWVkLWV4cHJlc3Npb25zIjpicmVhaztjYXNlImxhYmVsLXJhbmdlIjpicmVhaztjYXNlImxhYmVsLXJhbmdlcyI6YnJlYWs7Y2FzZSJuYW1lZC1leHByZXNzaW9uIjpicmVhaztjYXNlInNvcnQiOmJyZWFrO2Nhc2Uic29ydC1ieSI6YnJlYWs7Y2FzZSJzb3J0LWdyb3VwcyI6YnJlYWs7Y2FzZSJ0YWIiOmJyZWFrO2Nhc2UibGluZS1icmVhayI6YnJlYWs7Y2FzZSJzcGFuIjpicmVhaztjYXNlInAiOmNhc2Ui5paH5pys5LiyIjppZihbIm1hc3Rlci1zdHlsZXMiXS5pbmRleE9mKGlbaS5sZW5ndGgtMV1bMF0pPi0xKWJyZWFrO2lmKGRbMV09PT0iLyImJighd3x8IXdbInN0cmluZy12YWx1ZSJdKSl7dmFyIGplPUUyKG4uc2xpY2UoUixkLmluZGV4KSk7eT0oeS5sZW5ndGg+MD95K2AKYDoiIikramVbMF19ZWxzZSBkWzBdLnNsaWNlKC0yKT09Ii8+Ij95Kz1gCmA6KG9lKGRbMF0sITEpLFI9ZC5pbmRleCtkWzBdLmxlbmd0aCk7YnJlYWs7Y2FzZSJzIjpicmVhaztjYXNlImRhdGFiYXNlLXJhbmdlIjppZihkWzFdPT09Ii8iKWJyZWFrO3RyeXtBZT1GbihvZShkWzBdKVsidGFyZ2V0LXJhbmdlLWFkZHJlc3MiXSksaFtBZVswXV1bIiFhdXRvZmlsdGVyIl09e3JlZjpBZVsxXX19Y2F0Y2h7fWJyZWFrO2Nhc2UiZGF0ZSI6YnJlYWs7Y2FzZSJvYmplY3QiOmJyZWFrO2Nhc2UidGl0bGUiOmNhc2Ui5qCH6aKYIjpicmVhaztjYXNlImRlc2MiOmJyZWFrO2Nhc2UiYmluYXJ5LWRhdGEiOmJyZWFrO2Nhc2UidGFibGUtc291cmNlIjpicmVhaztjYXNlInNjZW5hcmlvIjpicmVhaztjYXNlIml0ZXJhdGlvbiI6YnJlYWs7Y2FzZSJjb250ZW50LXZhbGlkYXRpb25zIjpicmVhaztjYXNlImNvbnRlbnQtdmFsaWRhdGlvbiI6YnJlYWs7Y2FzZSJoZWxwLW1lc3NhZ2UiOmJyZWFrO2Nhc2UiZXJyb3ItbWVzc2FnZSI6YnJlYWs7Y2FzZSJkYXRhYmFzZS1yYW5nZXMiOmJyZWFrO2Nhc2UiZmlsdGVyIjpicmVhaztjYXNlImZpbHRlci1hbmQiOmJyZWFrO2Nhc2UiZmlsdGVyLW9yIjpicmVhaztjYXNlImZpbHRlci1jb25kaXRpb24iOmJyZWFrO2Nhc2UiZmlsdGVyLXNldC1pdGVtIjpicmVhaztjYXNlImxpc3QtbGV2ZWwtc3R5bGUtYnVsbGV0IjpicmVhaztjYXNlImxpc3QtbGV2ZWwtc3R5bGUtbnVtYmVyIjpicmVhaztjYXNlImxpc3QtbGV2ZWwtcHJvcGVydGllcyI6YnJlYWs7Y2FzZSJzZW5kZXItZmlyc3RuYW1lIjpjYXNlInNlbmRlci1sYXN0bmFtZSI6Y2FzZSJzZW5kZXItaW5pdGlhbHMiOmNhc2Uic2VuZGVyLXRpdGxlIjpjYXNlInNlbmRlci1wb3NpdGlvbiI6Y2FzZSJzZW5kZXItZW1haWwiOmNhc2Uic2VuZGVyLXBob25lLXByaXZhdGUiOmNhc2Uic2VuZGVyLWZheCI6Y2FzZSJzZW5kZXItY29tcGFueSI6Y2FzZSJzZW5kZXItcGhvbmUtd29yayI6Y2FzZSJzZW5kZXItc3RyZWV0IjpjYXNlInNlbmRlci1jaXR5IjpjYXNlInNlbmRlci1wb3N0YWwtY29kZSI6Y2FzZSJzZW5kZXItY291bnRyeSI6Y2FzZSJzZW5kZXItc3RhdGUtb3ItcHJvdmluY2UiOmNhc2UiYXV0aG9yLW5hbWUiOmNhc2UiYXV0aG9yLWluaXRpYWxzIjpjYXNlImNoYXB0ZXIiOmNhc2UiZmlsZS1uYW1lIjpjYXNlInRlbXBsYXRlLW5hbWUiOmNhc2Uic2hlZXQtbmFtZSI6YnJlYWs7Y2FzZSJldmVudC1saXN0ZW5lciI6YnJlYWs7Y2FzZSJpbml0aWFsLWNyZWF0b3IiOmNhc2UiY3JlYXRpb24tZGF0ZSI6Y2FzZSJwcmludC1kYXRlIjpjYXNlImdlbmVyYXRvciI6Y2FzZSJkb2N1bWVudC1zdGF0aXN0aWMiOmNhc2UidXNlci1kZWZpbmVkIjpjYXNlImVkaXRpbmctZHVyYXRpb24iOmNhc2UiZWRpdGluZy1jeWNsZXMiOmJyZWFrO2Nhc2UiY29uZmlnLWl0ZW0iOmJyZWFrO2Nhc2UicGFnZS1udW1iZXIiOmJyZWFrO2Nhc2UicGFnZS1jb3VudCI6YnJlYWs7Y2FzZSJ0aW1lIjpicmVhaztjYXNlImNlbGwtcmFuZ2Utc291cmNlIjpicmVhaztjYXNlImRldGVjdGl2ZSI6YnJlYWs7Y2FzZSJvcGVyYXRpb24iOmJyZWFrO2Nhc2UiaGlnaGxpZ2h0ZWQtcmFuZ2UiOmJyZWFrO2Nhc2UiZGF0YS1waWxvdC10YWJsZSI6Y2FzZSJzb3VyY2UtY2VsbC1yYW5nZSI6Y2FzZSJzb3VyY2Utc2VydmljZSI6Y2FzZSJkYXRhLXBpbG90LWZpZWxkIjpjYXNlImRhdGEtcGlsb3QtbGV2ZWwiOmNhc2UiZGF0YS1waWxvdC1zdWJ0b3RhbHMiOmNhc2UiZGF0YS1waWxvdC1zdWJ0b3RhbCI6Y2FzZSJkYXRhLXBpbG90LW1lbWJlcnMiOmNhc2UiZGF0YS1waWxvdC1tZW1iZXIiOmNhc2UiZGF0YS1waWxvdC1kaXNwbGF5LWluZm8iOmNhc2UiZGF0YS1waWxvdC1zb3J0LWluZm8iOmNhc2UiZGF0YS1waWxvdC1sYXlvdXQtaW5mbyI6Y2FzZSJkYXRhLXBpbG90LWZpZWxkLXJlZmVyZW5jZSI6Y2FzZSJkYXRhLXBpbG90LWdyb3VwcyI6Y2FzZSJkYXRhLXBpbG90LWdyb3VwIjpjYXNlImRhdGEtcGlsb3QtZ3JvdXAtbWVtYmVyIjpicmVhaztjYXNlInJlY3QiOmJyZWFrO2Nhc2UiZGRlLWNvbm5lY3Rpb24tZGVjbHMiOmNhc2UiZGRlLWNvbm5lY3Rpb24tZGVjbCI6Y2FzZSJkZGUtbGluayI6Y2FzZSJkZGUtc291cmNlIjpicmVhaztjYXNlInByb3BlcnRpZXMiOmJyZWFrO2Nhc2UicHJvcGVydHkiOmJyZWFrO2Nhc2UiYSI6aWYoZFsxXSE9PSIvIil7aWYod2U9b2UoZFswXSwhMSksIXdlLmhyZWYpYnJlYWs7d2UuVGFyZ2V0PUNlKHdlLmhyZWYpLGRlbGV0ZSB3ZS5ocmVmLHdlLlRhcmdldC5jaGFyQXQoMCk9PSIjIiYmd2UuVGFyZ2V0LmluZGV4T2YoIi4iKT4tMT8oQWU9Rm4od2UuVGFyZ2V0LnNsaWNlKDEpKSx3ZS5UYXJnZXQ9IiMiK0FlWzBdKyIhIitBZVsxXSk6d2UuVGFyZ2V0Lm1hdGNoKC9eXC5cLltcXFwvXS8pJiYod2UuVGFyZ2V0PXdlLlRhcmdldC5zbGljZSgzKSksd2UudGl0bGUmJih3ZS5Ub29sdGlwPUNlKHdlLnRpdGxlKSxkZWxldGUgd2UudGl0bGUpfWJyZWFrO2Nhc2UidGFibGUtcHJvdGVjdGlvbiI6YnJlYWs7Y2FzZSJkYXRhLXBpbG90LWdyYW5kLXRvdGFsIjpicmVhaztjYXNlIm9mZmljZS1kb2N1bWVudC1jb21tb24tYXR0cnMiOmJyZWFrO2RlZmF1bHQ6c3dpdGNoKGRbMl0pe2Nhc2UiZGM6IjpjYXNlImNhbGNleHQ6IjpjYXNlImxvZXh0OiI6Y2FzZSJvb286IjpjYXNlImNoYXJ0b29vOiI6Y2FzZSJkcmF3OiI6Y2FzZSJzdHlsZToiOmNhc2UiY2hhcnQ6IjpjYXNlImZvcm06IjpjYXNlInVvZjoiOmNhc2Ui6KGoOiI6Y2FzZSLlrZc6IjpicmVhaztkZWZhdWx0OmlmKHQuV1RGKXRocm93IG5ldyBFcnJvcihkKX19dmFyIGRlPXtTaGVldHM6aCxTaGVldE5hbWVzOmcsV29ya2Jvb2s6T2V9O3JldHVybiB0LmJvb2tTaGVldHMmJmRlbGV0ZSBkZS5TaGVldHMsZGV9ZnVuY3Rpb24gT2YoZSxhKXthPWF8fHt9LEdyKGUsIk1FVEEtSU5GL21hbmlmZXN0LnhtbCIpJiZqbyh0cihlLCJNRVRBLUlORi9tYW5pZmVzdC54bWwiKSxhKTt2YXIgcj1scihlLCJzdHlsZXMueG1sIiksdD1yJiZEZihWZShyKSxhKSxuPWxyKGUsImNvbnRlbnQueG1sIik7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIGNvbnRlbnQueG1sIGluIE9EUyAvIFVPRiBmaWxlIik7dmFyIGk9UmYoVmUobiksYSx0KTtyZXR1cm4gR3IoZSwibWV0YS54bWwiKSYmKGkuUHJvcHM9c3ModHIoZSwibWV0YS54bWwiKSkpLGkuYm9va1R5cGU9Im9kcyIsaX1mdW5jdGlvbiBOZihlLGEpe3ZhciByPVJmKGUsYSk7cmV0dXJuIHIuYm9va1R5cGU9ImZvZHMiLHJ9LyohIHNoZWV0anMgKEMpIDIwMTMtcHJlc2VudCBTaGVldEpTIC0tIGh0dHA6Ly9zaGVldGpzLmNvbSAqL3ZhciB2cj1mdW5jdGlvbigpe3RyeXtyZXR1cm4gdHlwZW9mIFVpbnQ4QXJyYXk+InUifHx0eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuc3ViYXJyYXk+InUiPyJzbGljZSI6dHlwZW9mIEJ1ZmZlcjwidSI/dHlwZW9mIEJ1ZmZlci5wcm90b3R5cGUuc3ViYXJyYXk+InUiPyJzbGljZSI6KHR5cGVvZiBCdWZmZXIuZnJvbT09ImZ1bmN0aW9uIj9CdWZmZXIuZnJvbShbNzIsNjJdKTpuZXcgQnVmZmVyKFs3Miw2Ml0pKWluc3RhbmNlb2YgVWludDhBcnJheT8ic3ViYXJyYXkiOiJzbGljZSI6InN1YmFycmF5In1jYXRjaHtyZXR1cm4ic2xpY2UifX0oKTtmdW5jdGlvbiBqdChlKXtyZXR1cm4gbmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpfWZ1bmN0aW9uIHZ0KGUpe3JldHVybiB0eXBlb2YgVGV4dERlY29kZXI8InUiP25ldyBUZXh0RGVjb2RlcigpLmRlY29kZShlKTpWZShmYShlKSl9ZnVuY3Rpb24gTWYoZSl7Zm9yKHZhciBhPTAscj0wO3I8ZS5sZW5ndGg7KytyKWErPWVbcl0ubGVuZ3RoO3ZhciB0PW5ldyBVaW50OEFycmF5KGEpLG49MDtmb3Iocj0wO3I8ZS5sZW5ndGg7KytyKXt2YXIgaT1lW3JdLGY9aS5sZW5ndGg7aWYoZjwyNTApZm9yKHZhciBzPTA7czxmOysrcyl0W24rK109aVtzXTtlbHNlIHQuc2V0KGksbiksbis9Zn1yZXR1cm4gdH1mdW5jdGlvbiBZdChlKXtyZXR1cm4gZS09ZT4+MSYxNDMxNjU1NzY1LGU9KGUmODU4OTkzNDU5KSsoZT4+MiY4NTg5OTM0NTkpLChlKyhlPj40KSYyNTI2NDUxMzUpKjE2ODQzMDA5Pj4+MjR9ZnVuY3Rpb24gQTIoZSxhKXtmb3IodmFyIHI9KGVbYSsxNV0mMTI3KTw8N3xlW2ErMTRdPj4xLHQ9ZVthKzE0XSYxLG49YSsxMztuPj1hOy0tbil0PXQqMjU2K2Vbbl07cmV0dXJuKGVbYSsxNV0mMTI4Py10OnQpKk1hdGgucG93KDEwLHItNjE3Nil9ZnVuY3Rpb24gTjAoZSxhKXt2YXIgcj1hLmwsdD1lW3JdJjEyNztlOmlmKGVbcisrXT49MTI4JiYodHw9KGVbcl0mMTI3KTw8NyxlW3IrK108MTI4fHwodHw9KGVbcl0mMTI3KTw8MTQsZVtyKytdPDEyOCl8fCh0fD0oZVtyXSYxMjcpPDwyMSxlW3IrK108MTI4KXx8KHQrPShlW3JdJjEyNykqTWF0aC5wb3coMiwyOCksKytyLGVbcisrXTwxMjgpfHwodCs9KGVbcl0mMTI3KSpNYXRoLnBvdygyLDM1KSwrK3IsZVtyKytdPDEyOCl8fCh0Kz0oZVtyXSYxMjcpKk1hdGgucG93KDIsNDIpLCsrcixlW3IrK108MTI4KSkpYnJlYWsgZTtyZXR1cm4gYS5sPXIsdH1mdW5jdGlvbiBCZShlKXt2YXIgYT0wLHI9ZVthXSYxMjc7cmV0dXJuIGVbYSsrXTwxMjh8fChyfD0oZVthXSYxMjcpPDw3LGVbYSsrXTwxMjgpfHwocnw9KGVbYV0mMTI3KTw8MTQsZVthKytdPDEyOCl8fChyfD0oZVthXSYxMjcpPDwyMSxlW2ErK108MTI4KXx8KHJ8PShlW2FdJjE1KTw8MjgpLHJ9ZnVuY3Rpb24gUmUoZSl7Zm9yKHZhciBhPVtdLHI9e2w6MH07ci5sPGUubGVuZ3RoOyl7dmFyIHQ9ci5sLG49TjAoZSxyKSxpPW4mNztuPW4vOHwwO3ZhciBmLHM9ci5sO3N3aXRjaChpKXtjYXNlIDA6e2Zvcig7ZVtzKytdPj0xMjg7KTtmPWVbdnJdKHIubCxzKSxyLmw9c31icmVhaztjYXNlIDE6Zj1lW3ZyXShzLHMrOCksci5sPXMrODticmVhaztjYXNlIDI6e3ZhciBjPU4wKGUscik7Zj1lW3ZyXShyLmwsci5sK2MpLHIubCs9Y31icmVhaztjYXNlIDU6Zj1lW3ZyXShzLHMrNCksci5sPXMrNDticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiUEIgVHlwZSAiLmNvbmNhdChpLCIgZm9yIEZpZWxkICIpLmNvbmNhdChuLCIgYXQgb2Zmc2V0ICIpLmNvbmNhdCh0KSl9dmFyIG89e2RhdGE6Zix0eXBlOml9O2Fbbl09PW51bGwmJihhW25dPVtdKSxhW25dLnB1c2gobyl9cmV0dXJuIGF9ZnVuY3Rpb24gTTAoZSxhKXtyZXR1cm4gZT8ubWFwKGZ1bmN0aW9uKHIpe3JldHVybiBhKHIuZGF0YSl9KXx8W119ZnVuY3Rpb24geTIoZSl7Zm9yKHZhciBhLHI9W10sdD17bDowfTt0Lmw8ZS5sZW5ndGg7KXt2YXIgbj1OMChlLHQpLGk9UmUoZVt2cl0odC5sLHQubCtuKSk7dC5sKz1uO3ZhciBmPXtpZDpCZShpWzFdWzBdLmRhdGEpLG1lc3NhZ2VzOltdfTtpWzJdLmZvckVhY2goZnVuY3Rpb24ocyl7dmFyIGM9UmUocy5kYXRhKSxvPUJlKGNbM11bMF0uZGF0YSk7Zi5tZXNzYWdlcy5wdXNoKHttZXRhOmMsZGF0YTplW3ZyXSh0LmwsdC5sK28pfSksdC5sKz1vfSksKGE9aVszXSkhPW51bGwmJmFbMF0mJihmLm1lcmdlPUJlKGlbM11bMF0uZGF0YSk+Pj4wPjApLHIucHVzaChmKX1yZXR1cm4gcn1mdW5jdGlvbiBTMihlLGEpe2lmKGUhPTApdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIFNuYXBweSBjaHVuayB0eXBlICIuY29uY2F0KGUpKTtmb3IodmFyIHI9e2w6MH0sdD1OMChhLHIpLG49W10saT1yLmw7aTxhLmxlbmd0aDspe3ZhciBmPWFbaV0mMztpZihmPT0wKXt2YXIgcz1hW2krK10+PjI7aWYoczw2MCkrK3M7ZWxzZXt2YXIgYz1zLTU5O3M9YVtpXSxjPjEmJihzfD1hW2krMV08PDgpLGM+MiYmKHN8PWFbaSsyXTw8MTYpLGM+MyYmKHN8PWFbaSszXTw8MjQpLHM+Pj49MCxzKyssaSs9Y31uLnB1c2goYVt2cl0oaSxpK3MpKSxpKz1zO2NvbnRpbnVlfWVsc2V7dmFyIG89MCxsPTA7aWYoZj09MT8obD0oYVtpXT4+MiY3KSs0LG89KGFbaSsrXSYyMjQpPDwzLG98PWFbaSsrXSk6KGw9KGFbaSsrXT4+MikrMSxmPT0yPyhvPWFbaV18YVtpKzFdPDw4LGkrPTIpOihvPShhW2ldfGFbaSsxXTw8OHxhW2krMl08PDE2fGFbaSszXTw8MjQpPj4+MCxpKz00KSksbz09MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgb2Zmc2V0IDAiKTtmb3IodmFyIHU9bi5sZW5ndGgtMSx4PW87dT49MCYmeD49blt1XS5sZW5ndGg7KXgtPW5bdV0ubGVuZ3RoLC0tdTtpZih1PDApaWYoeD09MCl4PW5bdT0wXS5sZW5ndGg7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgb2Zmc2V0IGJleW9uZCBsZW5ndGgiKTtpZihsPHgpbi5wdXNoKG5bdV1bdnJdKG5bdV0ubGVuZ3RoLXgsblt1XS5sZW5ndGgteCtsKSk7ZWxzZXtmb3IoeD4wJiYobi5wdXNoKG5bdV1bdnJdKG5bdV0ubGVuZ3RoLXgpKSxsLT14KSwrK3U7bD49blt1XS5sZW5ndGg7KW4ucHVzaChuW3VdKSxsLT1uW3VdLmxlbmd0aCwrK3U7bCYmbi5wdXNoKG5bdV1bdnJdKDAsbCkpfW4ubGVuZ3RoPjI1JiYobj1bTWYobildKX19Zm9yKHZhciBoPTAsZz0wO2c8bi5sZW5ndGg7KytnKWgrPW5bZ10ubGVuZ3RoO2lmKGghPXQpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGxlbmd0aDogIi5jb25jYXQoaCwiICE9ICIpLmNvbmNhdCh0KSk7cmV0dXJuIG59ZnVuY3Rpb24gQzIoZSl7QXJyYXkuaXNBcnJheShlKSYmKGU9bmV3IFVpbnQ4QXJyYXkoZSkpO2Zvcih2YXIgYT1bXSxyPTA7cjxlLmxlbmd0aDspe3ZhciB0PWVbcisrXSxuPWVbcl18ZVtyKzFdPDw4fGVbcisyXTw8MTY7cis9MyxhLnB1c2guYXBwbHkoYSxTMih0LGVbdnJdKHIscituKSkpLHIrPW59aWYociE9PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiZGF0YSBpcyBub3QgYSB2YWxpZCBmcmFtZWQgc3RyZWFtISIpO3JldHVybiBhLmxlbmd0aD09MT9hWzBdOk1mKGEpfXZhciBiMj1mdW5jdGlvbigpe3JldHVybntzc3Q6W10scnNzdDpbXSxvZm10OltdLG5mbXQ6W10sZm1sYTpbXSxmZXJyOltdLGNtbnQ6W119fTtmdW5jdGlvbiBQZihlLGEscix0LG4pe3ZhciBpLGYscyxjLG89YSYyNTUsbD1hPj44LHU9bD49NT9uOnQ7ZTppZihyJihsPjQ/ODo0KSYmZS50PT0ibiImJm89PTcpe3ZhciB4PShpPXVbN10pIT1udWxsJiZpWzBdP0JlKHVbN11bMF0uZGF0YSk6LTE7aWYoeD09LTEpYnJlYWsgZTt2YXIgaD0oZj11WzE1XSkhPW51bGwmJmZbMF0/QmUodVsxNV1bMF0uZGF0YSk6LTEsZz0ocz11WzE2XSkhPW51bGwmJnNbMF0/QmUodVsxNl1bMF0uZGF0YSk6LTEsbT0oYz11WzQwXSkhPW51bGwmJmNbMF0/QmUodVs0MF1bMF0uZGF0YSk6LTEsZD1lLnYscD1kO3I6aWYobSl7aWYoZD09MCl7aD1nPTI7YnJlYWsgcn1kPj02MDQ4MDA/aD0xOmQ+PTg2NDAwP2g9MjpkPj0zNjAwP2g9NDpkPj02MD9oPTg6ZD49MT9oPTE2Omg9MzIsTWF0aC5mbG9vcihkKSE9ZD9nPTMyOmQlNjA/Zz0xNjpkJTM2MDA/Zz04OmQlODY0MDA/Zz00OmQlNjA0ODAwJiYoZz0yKSxnPGgmJihnPWgpfWlmKGg9PS0xfHxnPT0tMSlicmVhayBlO3ZhciB3PVtdLF89W107aD09MSYmKHA9ZC82MDQ4MDAsZz09MT9fLnB1c2goJ2QiZCInKToocHw9MCxkLT02MDQ4MDAqcCksdy5wdXNoKHArKHg9PTI/IiB3ZWVrIisocD09MT8iIjoicyIpOng9PTE/InciOiIiKSkpLGg8PTImJmc+PTImJihwPWQvODY0MDAsZz4yJiYocHw9MCxkLT04NjQwMCpwKSxfLnB1c2goJ2QiZCInKSx3LnB1c2gocCsoeD09Mj8iIGRheSIrKHA9PTE/IiI6InMiKTp4PT0xPyJkIjoiIikpKSxoPD00JiZnPj00JiYocD1kLzM2MDAsZz40JiYocHw9MCxkLT0zNjAwKnApLF8ucHVzaCgoaD49ND8iW2hdIjoiaCIpKyciaCInKSx3LnB1c2gocCsoeD09Mj8iIGhvdXIiKyhwPT0xPyIiOiJzIik6eD09MT8iaCI6IiIpKSksaDw9OCYmZz49OCYmKHA9ZC82MCxnPjgmJihwfD0wLGQtPTYwKnApLF8ucHVzaCgoaD49OD8iW21dIjoibSIpKycibSInKSx4PT0wP3cucHVzaCgoaD09OCYmZz09OHx8cD49MTA/IiI6IjAiKStwKTp3LnB1c2gocCsoeD09Mj8iIG1pbnV0ZSIrKHA9PTE/IiI6InMiKTp4PT0xPyJtIjoiIikpKSxoPD0xNiYmZz49MTYmJihwPWQsZz4xNiYmKHB8PTAsZC09cCksXy5wdXNoKChoPj0xNj8iW3NdIjoicyIpKycicyInKSx4PT0wP3cucHVzaCgoZz09MTYmJmg9PTE2fHxwPj0xMD8iIjoiMCIpK3ApOncucHVzaChwKyh4PT0yPyIgc2Vjb25kIisocD09MT8iIjoicyIpOng9PTE/InMiOiIiKSkpLGc+PTMyJiYocD1NYXRoLnJvdW5kKDFlMypkKSxoPDMyJiZfLnB1c2goJy4wMDAibXMiJykseD09MD93LnB1c2goKHA+PTEwMD8iIjpwPj0xMD8iMCI6IjAwIikrcCk6dy5wdXNoKHArKHg9PTI/IiBtaWxsaXNlY29uZCIrKHA9PTE/IiI6InMiKTp4PT0xPyJtcyI6IiIpKSksZS53PXcuam9pbih4PT0wPyI6IjoiICIpLGUuej1fLmpvaW4oeD09MD8nIjoiJzoiICIpLHg9PTAmJihlLnc9ZS53LnJlcGxhY2UoLzooXGRcZFxkKSQvLCIuJDEiKSl9fWZ1bmN0aW9uIEkyKGUsYSxyLHQpe3ZhciBuPWp0KGUpLGk9bi5nZXRVaW50MzIoNCwhMCksZj0tMSxzPS0xLGM9LTEsbz1OYU4sbD0wLHU9bmV3IERhdGUoRGF0ZS5VVEMoMjAwMSwwLDEpKSx4PXI+MT8xMjo4O2kmMiYmKGM9bi5nZXRVaW50MzIoeCwhMCkseCs9NCkseCs9WXQoaSYocj4xPzM0Njg6Mzk2KSkqNCxpJjUxMiYmKGY9bi5nZXRVaW50MzIoeCwhMCkseCs9NCkseCs9WXQoaSYocj4xPzEyMjg4OjQwOTYpKSo0LGkmMTYmJihzPW4uZ2V0VWludDMyKHgsITApLHgrPTQpLGkmMzImJihvPW4uZ2V0RmxvYXQ2NCh4LCEwKSx4Kz04KSxpJjY0JiYodS5zZXRUaW1lKHUuZ2V0VGltZSgpKyhsPW4uZ2V0RmxvYXQ2NCh4LCEwKSkqMWUzKSx4Kz04KSxyPjEmJihpPW4uZ2V0VWludDMyKDgsITApPj4+MTYsaSYyNTUmJihjPT0tMSYmKGM9bi5nZXRVaW50MzIoeCwhMCkpLHgrPTQpKTt2YXIgaCxnPWVbcj49ND8xOjJdO3N3aXRjaChnKXtjYXNlIDA6cmV0dXJuO2Nhc2UgMjpoPXt0OiJuIix2Om99O2JyZWFrO2Nhc2UgMzpoPXt0OiJzIix2OmEuc3N0W3NdfTticmVhaztjYXNlIDU6dD8uY2VsbERhdGVzP2g9e3Q6ImQiLHY6dX06aD17dDoibiIsdjpsLzg2NDAwKzM1NDMwLHo6VGVbMTRdfTticmVhaztjYXNlIDY6aD17dDoiYiIsdjpvPjB9O2JyZWFrO2Nhc2UgNzpoPXt0OiJuIix2Om99O2JyZWFrO2Nhc2UgODpoPXt0OiJlIix2OjB9O2JyZWFrO2Nhc2UgOTppZihmPi0xKXt2YXIgbT1hLnJzc3RbZl07aD17dDoicyIsdjptLnZ9LG0ubCYmKGgubD17VGFyZ2V0Om0ubH0pfWVsc2UgdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBjZWxsIHR5cGUgIi5jb25jYXQoZVt2cl0oMCw0KSkpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBjZWxsIHR5cGUgIi5jb25jYXQoZVt2cl0oMCw0KSkpfXJldHVybiBjPi0xJiZQZihoLGd8cjw8OCxpLGEub2ZtdFtjXSxhLm5mbXRbY10pLGc9PTcmJihoLnYvPTg2NDAwKSxofWZ1bmN0aW9uIEQyKGUsYSxyKXt2YXIgdD1qdChlKTt0LmdldFVpbnQzMig0LCEwKTt2YXIgbj10LmdldFVpbnQzMig4LCEwKSxpPTEyLGY9LTEscz0tMSxjPS0xLG89TmFOLGw9TmFOLHU9MCx4PW5ldyBEYXRlKERhdGUuVVRDKDIwMDEsMCwxKSk7biYxJiYobz1BMihlLGkpLGkrPTE2KSxuJjImJihsPXQuZ2V0RmxvYXQ2NChpLCEwKSxpKz04KSxuJjQmJih4LnNldFRpbWUoeC5nZXRUaW1lKCkrKHU9dC5nZXRGbG9hdDY0KGksITApKSoxZTMpLGkrPTgpLG4mOCYmKHM9dC5nZXRVaW50MzIoaSwhMCksaSs9NCksbiYxNiYmKGY9dC5nZXRVaW50MzIoaSwhMCksaSs9NCksaSs9WXQobiY0ODApKjQsbiY1MTImJih0LmdldFVpbnQzMihpLCEwKSxpKz00KSxpKz1ZdChuJjEwMjQpKjQsbiYyMDQ4JiYodC5nZXRVaW50MzIoaSwhMCksaSs9NCk7dmFyIGgsZz1lWzFdO3N3aXRjaChnKXtjYXNlIDA6aD17dDoieiJ9O2JyZWFrO2Nhc2UgMjpoPXt0OiJuIix2Om99O2JyZWFrO2Nhc2UgMzpoPXt0OiJzIix2OmEuc3N0W3NdfTticmVhaztjYXNlIDU6cj8uY2VsbERhdGVzP2g9e3Q6ImQiLHY6eH06aD17dDoibiIsdjp1Lzg2NDAwKzM1NDMwLHo6VGVbMTRdfTticmVhaztjYXNlIDY6aD17dDoiYiIsdjpsPjB9O2JyZWFrO2Nhc2UgNzpoPXt0OiJuIix2Omx9O2JyZWFrO2Nhc2UgODpoPXt0OiJlIix2OjB9O2JyZWFrO2Nhc2UgOTppZihmPi0xKXt2YXIgbT1hLnJzc3RbZl07aD17dDoicyIsdjptLnZ9LG0ubCYmKGgubD17VGFyZ2V0Om0ubH0pfWVsc2UgdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBjZWxsIHR5cGUgIi5jb25jYXQoZVsxXSwiIDogIikuY29uY2F0KG4mMzEsIiA6ICIpLmNvbmNhdChlW3ZyXSgwLDQpKSk7YnJlYWs7Y2FzZSAxMDpoPXt0OiJuIix2Om99O2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBjZWxsIHR5cGUgIi5jb25jYXQoZVsxXSwiIDogIikuY29uY2F0KG4mMzEsIiA6ICIpLmNvbmNhdChlW3ZyXSgwLDQpKSl9aWYoaSs9WXQobiY0MDk2KSo0LG4mNTE2MDk2JiYoYz09LTEmJihjPXQuZ2V0VWludDMyKGksITApKSxpKz00KSxuJjUyNDI4OCl7dmFyIGQ9dC5nZXRVaW50MzIoaSwhMCk7aSs9NCxhLmNtbnRbZF0mJihoLmM9TTIoYS5jbW50W2RdKSl9cmV0dXJuIGM+LTEmJlBmKGgsZ3wxMjgwLG4+PjEzLGEub2ZtdFtjXSxhLm5mbXRbY10pLGc9PTcmJihoLnYvPTg2NDAwKSxofWZ1bmN0aW9uIFIyKGUsYSxyKXtzd2l0Y2goZVswXSl7Y2FzZSAwOmNhc2UgMTpjYXNlIDI6Y2FzZSAzOmNhc2UgNDpyZXR1cm4gSTIoZSxhLGVbMF0scik7Y2FzZSA1OnJldHVybiBEMihlLGEscik7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHBheWxvYWQgdmVyc2lvbiAiLmNvbmNhdChlWzBdKSl9fWZ1bmN0aW9uIGhyKGUpe3ZhciBhPVJlKGUpO3JldHVybiBCZShhWzFdWzBdLmRhdGEpfWZ1bmN0aW9uIGV0KGUsYSl7dmFyIHI9UmUoYS5kYXRhKSx0PUJlKHJbMV1bMF0uZGF0YSksbj1yWzNdLGk9W107cmV0dXJuKG58fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGYpe3ZhciBzLGMsbz1SZShmLmRhdGEpO2lmKG9bMV0pe3ZhciBsPUJlKG9bMV1bMF0uZGF0YSk+Pj4wO3N3aXRjaCh0KXtjYXNlIDE6aVtsXT12dChvWzNdWzBdLmRhdGEpO2JyZWFrO2Nhc2UgODp7dmFyIHU9ZVtocihvWzldWzBdLmRhdGEpXVswXSx4PVJlKHUuZGF0YSksaD1lW2hyKHhbMV1bMF0uZGF0YSldWzBdLGc9QmUoaC5tZXRhWzFdWzBdLmRhdGEpO2lmKGchPTIwMDEpdGhyb3cgbmV3IEVycm9yKCIyMDAwIHVuZXhwZWN0ZWQgcmVmZXJlbmNlIHRvICIuY29uY2F0KGcpKTt2YXIgbT1SZShoLmRhdGEpLGQ9e3Y6bVszXS5tYXAoZnVuY3Rpb24oXyl7cmV0dXJuIHZ0KF8uZGF0YSl9KS5qb2luKCIiKX07aVtsXT1kO2U6aWYoKHM9bT8uWzExXSkhPW51bGwmJnNbMF0pe3ZhciBwPShjPVJlKG1bMTFdWzBdLmRhdGEpKT09bnVsbD92b2lkIDA6Y1sxXTtpZighcClicmVhayBlO3AuZm9yRWFjaChmdW5jdGlvbihfKXt2YXIgeSxSLFAsYj1SZShfLmRhdGEpO2lmKCh5PWJbMl0pIT1udWxsJiZ5WzBdKXt2YXIgTj1lW2hyKChSPWJbMl0pPT1udWxsP3ZvaWQgMDpSWzBdLmRhdGEpXVswXSxJPUJlKE4ubWV0YVsxXVswXS5kYXRhKTtzd2l0Y2goSSl7Y2FzZSAyMDMyOnZhciBCPVJlKE4uZGF0YSk7KFA9Qj8uWzJdKSE9bnVsbCYmUFswXSYmIWQubCYmKGQubD12dChCWzJdWzBdLmRhdGEpKTticmVhaztjYXNlIDIwMzk6YnJlYWs7ZGVmYXVsdDpjb25zb2xlLmxvZygidW5yZWNvZ25pemVkIE9iamVjdEF0dHJpYnV0ZSB0eXBlICIuY29uY2F0KEkpKX19fSl9fWJyZWFrO2Nhc2UgMjppW2xdPVJlKG9bNl1bMF0uZGF0YSk7YnJlYWs7Y2FzZSAzOmlbbF09UmUob1s1XVswXS5kYXRhKTticmVhaztjYXNlIDEwOnt2YXIgdz1lW2hyKG9bMTBdWzBdLmRhdGEpXVswXTtpW2xdPUxmKGUsdy5kYXRhKX1icmVhaztkZWZhdWx0OnRocm93IHR9fX0pLGl9ZnVuY3Rpb24gTzIoZSxhKXt2YXIgcix0LG4saSxmLHMsYyxvLGwsdSx4LGgsZyxtLGQ9UmUoZSkscD1CZShkWzFdWzBdLmRhdGEpPj4+MCx3PUJlKGRbMl1bMF0uZGF0YSk+Pj4wLF89KCh0PShyPWRbOF0pPT1udWxsP3ZvaWQgMDpyWzBdKT09bnVsbD92b2lkIDA6dC5kYXRhKSYmQmUoZFs4XVswXS5kYXRhKT4wfHwhMSx5LFI7aWYoKGk9KG49ZFs3XSk9PW51bGw/dm9pZCAwOm5bMF0pIT1udWxsJiZpLmRhdGEmJmEhPTApeT0ocz0oZj1kWzddKT09bnVsbD92b2lkIDA6ZlswXSk9PW51bGw/dm9pZCAwOnMuZGF0YSxSPShvPShjPWRbNl0pPT1udWxsP3ZvaWQgMDpjWzBdKT09bnVsbD92b2lkIDA6by5kYXRhO2Vsc2UgaWYoKHU9KGw9ZFs0XSk9PW51bGw/dm9pZCAwOmxbMF0pIT1udWxsJiZ1LmRhdGEmJmEhPTEpeT0oaD0oeD1kWzRdKT09bnVsbD92b2lkIDA6eFswXSk9PW51bGw/dm9pZCAwOmguZGF0YSxSPShtPShnPWRbM10pPT1udWxsP3ZvaWQgMDpnWzBdKT09bnVsbD92b2lkIDA6bS5kYXRhO2Vsc2UgdGhyb3ciTlVNQkVSUyBUaWxlIG1pc3NpbmcgIi5jb25jYXQoYSwiIGNlbGwgc3RvcmFnZSIpO2Zvcih2YXIgUD1fPzQ6MSxiPWp0KHkpLE49W10sST0wO0k8eS5sZW5ndGgvMjsrK0kpe3ZhciBCPWIuZ2V0VWludDE2KEkqMiwhMCk7Qjw2NTUzNSYmTi5wdXNoKFtJLEJdKX1pZihOLmxlbmd0aCE9dyl0aHJvdyJFeHBlY3RlZCAiLmNvbmNhdCh3LCIgY2VsbHMsIGZvdW5kICIpLmNvbmNhdChOLmxlbmd0aCk7dmFyIEw9W107Zm9yKEk9MDtJPE4ubGVuZ3RoLTE7KytJKUxbTltJXVswXV09Ult2cl0oTltJXVsxXSpQLE5bSSsxXVsxXSpQKTtyZXR1cm4gTi5sZW5ndGg+PTEmJihMW05bTi5sZW5ndGgtMV1bMF1dPVJbdnJdKE5bTi5sZW5ndGgtMV1bMV0qUCkpLHtSOnAsY2VsbHM6TH19ZnVuY3Rpb24gTjIoZSxhKXt2YXIgcix0PVJlKGEuZGF0YSksbj0tMTsocj10Py5bN10pIT1udWxsJiZyWzBdJiYoQmUodFs3XVswXS5kYXRhKT4+PjA/bj0xOm49MCk7dmFyIGk9TTAodFs1XSxmdW5jdGlvbihmKXtyZXR1cm4gTzIoZixuKX0pO3JldHVybntucm93czpCZSh0WzRdWzBdLmRhdGEpPj4+MCxkYXRhOmkucmVkdWNlKGZ1bmN0aW9uKGYscyl7cmV0dXJuIGZbcy5SXXx8KGZbcy5SXT1bXSkscy5jZWxscy5mb3JFYWNoKGZ1bmN0aW9uKGMsbyl7aWYoZltzLlJdW29dKXRocm93IG5ldyBFcnJvcigiRHVwbGljYXRlIGNlbGwgcj0iLmNvbmNhdChzLlIsIiBjPSIpLmNvbmNhdChvKSk7ZltzLlJdW29dPWN9KSxmfSxbXSl9fWZ1bmN0aW9uIExmKGUsYSl7dmFyIHIsdCxuLGksZixzLGMsbyxsLHUseD17dDoiIixhOiIifSxoPVJlKGEpO2lmKCh0PShyPWg/LlsxXSk9PW51bGw/dm9pZCAwOnJbMF0pIT1udWxsJiZ0LmRhdGEmJih4LnQ9dnQoKGk9KG49aD8uWzFdKT09bnVsbD92b2lkIDA6blswXSk9PW51bGw/dm9pZCAwOmkuZGF0YSl8fCIiKSwocz0oZj1oPy5bM10pPT1udWxsP3ZvaWQgMDpmWzBdKSE9bnVsbCYmcy5kYXRhKXt2YXIgZz1lW2hyKChvPShjPWg/LlszXSk9PW51bGw/dm9pZCAwOmNbMF0pPT1udWxsP3ZvaWQgMDpvLmRhdGEpXVswXSxtPVJlKGcuZGF0YSk7KHU9KGw9bVsxXSk9PW51bGw/dm9pZCAwOmxbMF0pIT1udWxsJiZ1LmRhdGEmJih4LmE9dnQobVsxXVswXS5kYXRhKSl9cmV0dXJuIGg/Lls0XSYmKHgucmVwbGllcz1bXSxoWzRdLmZvckVhY2goZnVuY3Rpb24oZCl7dmFyIHA9ZVtocihkLmRhdGEpXVswXTt4LnJlcGxpZXMucHVzaChMZihlLHAuZGF0YSkpfSkpLHh9ZnVuY3Rpb24gTTIoZSl7dmFyIGE9W107cmV0dXJuIGEucHVzaCh7dDplLnR8fCIiLGE6ZS5hLFQ6ZS5yZXBsaWVzJiZlLnJlcGxpZXMubGVuZ3RoPjB9KSxlLnJlcGxpZXMmJmUucmVwbGllcy5mb3JFYWNoKGZ1bmN0aW9uKHIpe2EucHVzaCh7dDpyLnR8fCIiLGE6ci5hLFQ6ITB9KX0pLGF9ZnVuY3Rpb24gUDIoZSxhLHIsdCl7dmFyIG4saSxmLHMsYyxvLGwsdSx4LGgsZyxtLGQscCx3PVJlKGEuZGF0YSksXz17czp7cjowLGM6MH0sZTp7cjowLGM6MH19O2lmKF8uZS5yPShCZSh3WzZdWzBdLmRhdGEpPj4+MCktMSxfLmUucjwwKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCByb3cgdmFyaW50ICIuY29uY2F0KHdbNl1bMF0uZGF0YSkpO2lmKF8uZS5jPShCZSh3WzddWzBdLmRhdGEpPj4+MCktMSxfLmUuYzwwKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2wgdmFyaW50ICIuY29uY2F0KHdbN11bMF0uZGF0YSkpO3JbIiFyZWYiXT1JZShfKTt2YXIgeT1yWyIhZGF0YSJdIT1udWxsLFI9cixQPVJlKHdbNF1bMF0uZGF0YSksYj1iMigpOyhuPVBbNF0pIT1udWxsJiZuWzBdJiYoYi5zc3Q9ZXQoZSxlW2hyKFBbNF1bMF0uZGF0YSldWzBdKSksKGk9UFs2XSkhPW51bGwmJmlbMF0mJihiLmZtbGE9ZXQoZSxlW2hyKFBbNl1bMF0uZGF0YSldWzBdKSksKGY9UFsxMV0pIT1udWxsJiZmWzBdJiYoYi5vZm10PWV0KGUsZVtocihQWzExXVswXS5kYXRhKV1bMF0pKSwocz1QWzEyXSkhPW51bGwmJnNbMF0mJihiLmZlcnI9ZXQoZSxlW2hyKFBbMTJdWzBdLmRhdGEpXVswXSkpLChjPVBbMTddKSE9bnVsbCYmY1swXSYmKGIucnNzdD1ldChlLGVbaHIoUFsxN11bMF0uZGF0YSldWzBdKSksKG89UFsxOV0pIT1udWxsJiZvWzBdJiYoYi5jbW50PWV0KGUsZVtocihQWzE5XVswXS5kYXRhKV1bMF0pKSwobD1QWzIyXSkhPW51bGwmJmxbMF0mJihiLm5mbXQ9ZXQoZSxlW2hyKFBbMjJdWzBdLmRhdGEpXVswXSkpO3ZhciBOPVJlKFBbM11bMF0uZGF0YSksST0wO2lmKCEoKHU9UFs5XSkhPW51bGwmJnVbMF0pKXRocm93Ik5VTUJFUlMgZmlsZSBtaXNzaW5nIHJvdyB0cmVlIjt2YXIgQj1SZShQWzldWzBdLmRhdGEpWzFdLm1hcChmdW5jdGlvbihxKXtyZXR1cm4gUmUocS5kYXRhKX0pO2lmKEIuZm9yRWFjaChmdW5jdGlvbihxKXtJPUJlKHFbMV1bMF0uZGF0YSk7dmFyIGxlPUJlKHFbMl1bMF0uZGF0YSksUT1OWzFdW2xlXTtpZighUSl0aHJvdyJOVU1CRVJTIG1pc3NpbmcgdGlsZSAiK2xlO3ZhciBnZT1SZShRLmRhdGEpLHVlPWVbaHIoZ2VbMl1bMF0uZGF0YSldWzBdLGo9QmUodWUubWV0YVsxXVswXS5kYXRhKTtpZihqIT02MDAyKXRocm93IG5ldyBFcnJvcigiNjAwMSB1bmV4cGVjdGVkIHJlZmVyZW5jZSB0byAiLmNvbmNhdChqKSk7dmFyIHllPU4yKGUsdWUpO3llLmRhdGEuZm9yRWFjaChmdW5jdGlvbihiZSxtZSl7YmUuZm9yRWFjaChmdW5jdGlvbihaLE9lKXt2YXIgd2U9UjIoWixiLHQpO3dlJiYoeT8oUlsiIWRhdGEiXVtJK21lXXx8KFJbIiFkYXRhIl1bSSttZV09W10pLFJbIiFkYXRhIl1bSSttZV1bT2VdPXdlKTpyW0hlKE9lKStHZShJK21lKV09d2UpfSl9KSxJKz15ZS5ucm93c30pLCh4PVBbMTNdKSE9bnVsbCYmeFswXSl7dmFyIEw9ZVtocihQWzEzXVswXS5kYXRhKV1bMF0sRz1CZShMLm1ldGFbMV1bMF0uZGF0YSk7aWYoRyE9NjE0NCl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIG1lcmdlIHR5cGUgNjE0NCwgZm91bmQgIi5jb25jYXQoRykpO3JbIiFtZXJnZXMiXT0oaD1SZShMLmRhdGEpKT09bnVsbD92b2lkIDA6aFsxXS5tYXAoZnVuY3Rpb24ocSl7dmFyIGxlPVJlKHEuZGF0YSksUT1qdChSZShsZVsxXVswXS5kYXRhKVsxXVswXS5kYXRhKSxnZT1qdChSZShsZVsyXVswXS5kYXRhKVsxXVswXS5kYXRhKTtyZXR1cm57czp7cjpRLmdldFVpbnQxNigwLCEwKSxjOlEuZ2V0VWludDE2KDIsITApfSxlOntyOlEuZ2V0VWludDE2KDAsITApK2dlLmdldFVpbnQxNigwLCEwKS0xLGM6US5nZXRVaW50MTYoMiwhMCkrZ2UuZ2V0VWludDE2KDIsITApLTF9fX0pfWlmKCEoKGc9clsiIW1lcmdlcyJdKSE9bnVsbCYmZy5sZW5ndGgpJiYoKG09d1s0N10pIT1udWxsJiZtWzBdKSl7dmFyIGllPVJlKHdbNDddWzBdLmRhdGEpO2lmKChkPWllWzJdKSE9bnVsbCYmZFswXSl7dmFyIG5lPVJlKGllWzJdWzBdLmRhdGEpOyhwPW5lWzNdKSE9bnVsbCYmcFswXSYmKHJbIiFtZXJnZXMiXT1NMChuZVszXSxmdW5jdGlvbihxKXt2YXIgbGUsUSxnZSx1ZSxqLHllPVJlKHEpLGJlPVJlKHllWzJdWzBdLmRhdGEpLG1lPVJlKGJlWzFdWzBdLmRhdGEpO2lmKChsZT1tZVsxXSkhPW51bGwmJmxlWzBdKXt2YXIgWj1SZShtZVsxXVswXS5kYXRhKSxPZT1CZShaWzFdWzBdLmRhdGEpO2lmKE9lPT02Nyl7dmFyIHdlPVJlKFpbNDBdWzBdLmRhdGEpO2lmKCEoISgoUT13ZVszXSkhPW51bGwmJlFbMF0pfHwhKChnZT13ZVs0XSkhPW51bGwmJmdlWzBdKSkpe3ZhciBBZT1SZSh3ZVszXVswXS5kYXRhKSxBPVJlKHdlWzRdWzBdLmRhdGEpLFU9QmUoQWVbMV1bMF0uZGF0YSksTz0odWU9QWVbMl0pIT1udWxsJiZ1ZVswXT9CZShBZVsyXVswXS5kYXRhKTpVLEQ9QmUoQVsxXVswXS5kYXRhKSx6PShqPUFbMl0pIT1udWxsJiZqWzBdP0JlKEFbMl1bMF0uZGF0YSk6RDtyZXR1cm57czp7cjpELGM6VX0sZTp7cjp6LGM6T319fX19fSkuZmlsdGVyKGZ1bmN0aW9uKHEpe3JldHVybiBxIT1udWxsfSkpfX19ZnVuY3Rpb24gTDIoZSxhLHIpe3ZhciB0PVJlKGEuZGF0YSksbj17IiFyZWYiOiJBMSJ9O3I/LmRlbnNlJiYoblsiIWRhdGEiXT1bXSk7dmFyIGk9ZVtocih0WzJdWzBdLmRhdGEpXSxmPUJlKGlbMF0ubWV0YVsxXVswXS5kYXRhKTtpZihmIT02MDAxKXRocm93IG5ldyBFcnJvcigiNjAwMCB1bmV4cGVjdGVkIHJlZmVyZW5jZSB0byAiLmNvbmNhdChmKSk7cmV0dXJuIFAyKGUsaVswXSxuLHIpLG59ZnVuY3Rpb24gQjIoZSxhLHIpe3ZhciB0LG49UmUoYS5kYXRhKSxpPXtuYW1lOih0PW5bMV0pIT1udWxsJiZ0WzBdP3Z0KG5bMV1bMF0uZGF0YSk6IiIsc2hlZXRzOltdfSxmPU0wKG5bMl0saHIpO3JldHVybiBmLmZvckVhY2goZnVuY3Rpb24ocyl7ZVtzXS5mb3JFYWNoKGZ1bmN0aW9uKGMpe3ZhciBvPUJlKGMubWV0YVsxXVswXS5kYXRhKTtvPT02ZTMmJmkuc2hlZXRzLnB1c2goTDIoZSxjLHIpKX0pfSksaX1mdW5jdGlvbiBVMihlLGEscil7dmFyIHQsbj1NbigpO24uV29ya2Jvb2s9e1dCUHJvcHM6e2RhdGUxOTA0OiEwfX07dmFyIGk9UmUoYS5kYXRhKTtpZigodD1pWzJdKSE9bnVsbCYmdFswXSl0aHJvdyBuZXcgRXJyb3IoIktleW5vdGUgcHJlc2VudGF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCIpO3ZhciBmPU0wKGlbMV0saHIpO2lmKGYuZm9yRWFjaChmdW5jdGlvbihzKXtlW3NdLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIG89QmUoYy5tZXRhWzFdWzBdLmRhdGEpO2lmKG89PTIpe3ZhciBsPUIyKGUsYyxyKTtsLnNoZWV0cy5mb3JFYWNoKGZ1bmN0aW9uKHUseCl7WnQobix1LHg9PTA/bC5uYW1lOmwubmFtZSsiXyIreCwhMCl9KX19KX0pLG4uU2hlZXROYW1lcy5sZW5ndGg9PTApdGhyb3cgbmV3IEVycm9yKCJFbXB0eSBOVU1CRVJTIGZpbGUiKTtyZXR1cm4gbi5ib29rVHlwZT0ibnVtYmVycyIsbn1mdW5jdGlvbiBJbihlLGEpe3ZhciByLHQsbixpLGYscyxjLG89e30sbD1bXTtpZihlLkZ1bGxQYXRocy5mb3JFYWNoKGZ1bmN0aW9uKHgpe2lmKHgubWF0Y2goL1wuaXdwdjIvKSl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHBhc3N3b3JkIHByb3RlY3Rpb24iKX0pLGUuRmlsZUluZGV4LmZvckVhY2goZnVuY3Rpb24oeCl7aWYoeC5uYW1lLm1hdGNoKC9cLml3YSQvKSYmeC5jb250ZW50WzBdPT0wKXt2YXIgaDt0cnl7aD1DMih4LmNvbnRlbnQpfWNhdGNoKG0pe3JldHVybiBjb25zb2xlLmxvZygiPz8gIit4LmNvbnRlbnQubGVuZ3RoKyIgIisobS5tZXNzYWdlfHxtKSl9dmFyIGc7dHJ5e2c9eTIoaCl9Y2F0Y2gobSl7cmV0dXJuIGNvbnNvbGUubG9nKCIjIyAiKyhtLm1lc3NhZ2V8fG0pKX1nLmZvckVhY2goZnVuY3Rpb24obSl7b1ttLmlkXT1tLm1lc3NhZ2VzLGwucHVzaChtLmlkKX0pfX0pLCFsLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkZpbGUgaGFzIG5vIG1lc3NhZ2VzIik7aWYoKG49KHQ9KHI9bz8uWzFdKT09bnVsbD92b2lkIDA6clswXS5tZXRhKT09bnVsbD92b2lkIDA6dFsxXSkhPW51bGwmJm5bMF0uZGF0YSYmQmUob1sxXVswXS5tZXRhWzFdWzBdLmRhdGEpPT0xZTQpdGhyb3cgbmV3IEVycm9yKCJQYWdlcyBkb2N1bWVudHMgYXJlIG5vdCBzdXBwb3J0ZWQiKTt2YXIgdT0oKGM9KHM9KGY9KGk9bz8uWzFdKT09bnVsbD92b2lkIDA6aVswXSk9PW51bGw/dm9pZCAwOmYubWV0YSk9PW51bGw/dm9pZCAwOnNbMV0pPT1udWxsP3ZvaWQgMDpjWzBdLmRhdGEpJiZCZShvWzFdWzBdLm1ldGFbMV1bMF0uZGF0YSk9PTEmJm9bMV1bMF07aWYodXx8bC5mb3JFYWNoKGZ1bmN0aW9uKHgpe29beF0uZm9yRWFjaChmdW5jdGlvbihoKXt2YXIgZz1CZShoLm1ldGFbMV1bMF0uZGF0YSk+Pj4wO2lmKGc9PTEpaWYoIXUpdT1oO2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJEb2N1bWVudCBoYXMgbXVsdGlwbGUgcm9vdHMiKX0pfSksIXUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBEb2N1bWVudCByb290Iik7cmV0dXJuIFUyKG8sdSxhKX1mdW5jdGlvbiBIMihlKXtyZXR1cm4gZnVuY3Rpb24ocil7Zm9yKHZhciB0PTA7dCE9ZS5sZW5ndGg7Kyt0KXt2YXIgbj1lW3RdO3JbblswXV09PT12b2lkIDAmJihyW25bMF1dPW5bMV0pLG5bMl09PT0ibiImJihyW25bMF1dPU51bWJlcihyW25bMF1dKSl9fX1mdW5jdGlvbiBEbihlKXtIMihbWyJjZWxsTkYiLCExXSxbImNlbGxIVE1MIiwhMF0sWyJjZWxsRm9ybXVsYSIsITBdLFsiY2VsbFN0eWxlcyIsITFdLFsiY2VsbFRleHQiLCEwXSxbImNlbGxEYXRlcyIsITFdLFsic2hlZXRTdHVicyIsITFdLFsic2hlZXRSb3dzIiwwLCJuIl0sWyJib29rRGVwcyIsITFdLFsiYm9va1NoZWV0cyIsITFdLFsiYm9va1Byb3BzIiwhMV0sWyJib29rRmlsZXMiLCExXSxbImJvb2tWQkEiLCExXSxbInBhc3N3b3JkIiwiIl0sWyJXVEYiLCExXV0pKGUpfWZ1bmN0aW9uIFcyKGUpe3JldHVybiBvdC5XUy5pbmRleE9mKGUpPi0xPyJzaGVldCI6ZT09b3QuQ1M/ImNoYXJ0IjplPT1vdC5EUz8iZGlhbG9nIjplPT1vdC5NUz8ibWFjcm8iOmUmJmUubGVuZ3RoP2U6InNoZWV0In1mdW5jdGlvbiBWMihlLGEpe2lmKCFlKXJldHVybiAwO3RyeXtlPWEubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkfHwodC5pZD10LnN0clJlbElEKSxbdC5uYW1lLGVbIiFpZCJdW3QuaWRdLlRhcmdldCxXMihlWyIhaWQiXVt0LmlkXS5UeXBlKV19KX1jYXRjaHtyZXR1cm4gbnVsbH1yZXR1cm4hZXx8ZS5sZW5ndGg9PT0wP251bGw6ZX1mdW5jdGlvbiBHMihlLGEscix0LG4saSxmLHMpe2lmKCEoIWV8fCFlWyIhbGVnZHJhd2VsIl0pKXt2YXIgYz1oYShlWyIhbGVnZHJhd2VsIl0uVGFyZ2V0LHQpLG89bHIocixjLCEwKTtvJiZ3MShWZShvKSxlLHN8fFtdKX19ZnVuY3Rpb24gWDIoZSl7dmFyIGE9KGV8fCIiKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLy4qXC4vLCIiKTtzd2l0Y2goYSl7Y2FzZSJwbmciOnJldHVybiJpbWFnZS9wbmciO2Nhc2UiZ2lmIjpyZXR1cm4iaW1hZ2UvZ2lmIjtjYXNlImJtcCI6cmV0dXJuImltYWdlL2JtcCI7Y2FzZSJzdmciOnJldHVybiJpbWFnZS9zdmcreG1sIjtjYXNlImpwZyI6Y2FzZSJqcGVnIjpyZXR1cm4iaW1hZ2UvanBlZyI7ZGVmYXVsdDpyZXR1cm4iYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIn19ZnVuY3Rpb24gejIoZSxhLHIsdCxuLGksZil7aWYoISghZXx8IWVbIiFkcmF3ZWwiXSkmJiEoIWl8fCFpLmRyYXdpbmdzJiYhaS5jaGFydHMpKXt2YXIgcz1oYShlWyIhZHJhd2VsIl0uVGFyZ2V0LHQpLGM9TnQocyksbz1YcyhscihyLHMsITApLFhhKGxyKHIsYywhMCkscykpO2VbIiFkcmF3aW5ncyJdPW8saS5kcmF3aW5ncyYmby5pbWFnZXMmJm8uaW1hZ2VzLmxlbmd0aCYmby5pbWFnZXMuZm9yRWFjaChmdW5jdGlvbihsKXtpZighKCFsfHwhbC50YXJnZXQpKXt2YXIgdT1oYShsLnRhcmdldCxzKSx4PVEwKHIsdSwhMCk7eCYmKGwuZGF0YVVSST0iZGF0YToiK1gyKHUpKyI7YmFzZTY0LCIrejAoeCkpLGwucGF0aD11fX0pLGkuY2hhcnRzJiZvLmNoYXJ0cyYmby5jaGFydHMubGVuZ3RoJiYoZVsiIWNoYXJ0cyJdPVtdLG8uY2hhcnRzLmZvckVhY2goZnVuY3Rpb24obCl7aWYoISghbHx8IWwudGFyZ2V0KSl7dmFyIHU9aGEobC50YXJnZXQscykseD1OdCh1KSxoPWRmKGxyKHIsdSwhMCksdSxpLFhhKGxyKHIseCwhMCksdSksZix7IiF0eXBlIjoiY2hhcnQifSk7bC5tb2RlbD1oJiZoWyIhY2hhcnQiXSxsLmRhdGE9aCxsLnBhdGg9dSxlWyIhY2hhcnRzIl0ucHVzaChsKX19KSl9fWZ1bmN0aW9uICQyKGUsYSxyLHQsbixpLGYscyxjLG8sbCx1KXt0cnl7aVt0XT1YYShscihlLHIsITApLGEpO3ZhciB4PXRyKGUsYSksaDtzd2l0Y2gocyl7Y2FzZSJzaGVldCI6aD1Udih4LGEsbixjLGlbdF0sbyxsLHUpO2JyZWFrO2Nhc2UiY2hhcnQiOmlmKGg9RXYoeCxhLG4sYyxpW3RdLG8sbCx1KSwhaHx8IWhbIiFkcmF3ZWwiXXx8IWMuZHJhd2luZ3MmJiFjLmNoYXJ0cylicmVhazt2YXIgZz1oYShoWyIhZHJhd2VsIl0uVGFyZ2V0LGEpLG09TnQoZyksZD1YcyhscihlLGcsITApLFhhKGxyKGUsbSwhMCksZykpO2lmKGhbIiFkcmF3aW5ncyJdPWQsIWMuY2hhcnRzfHwhZC5jaGFydClicmVhazt2YXIgcD1oYShkLmNoYXJ0LGcpLHc9TnQocCk7aD1kZihscihlLHAsITApLHAsYyxYYShscihlLHcsITApLHApLG8saCksZC5jaGFydHMmJmQuY2hhcnRzLmxlbmd0aCYmKGQuY2hhcnRzWzBdLm1vZGVsPWgmJmhbIiFjaGFydCJdLGhbIiFjaGFydHMiXT1kLmNoYXJ0cyk7YnJlYWs7Y2FzZSJtYWNybyI6aD1Bdih4LGEsbixjLGlbdF0sbyxsLHUpO2JyZWFrO2Nhc2UiZGlhbG9nIjpoPXl2KHgsYSxuLGMsaVt0XSxvLGwsdSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCBzaGVldCB0eXBlICIrcyl9Zlt0XT1oO3ZhciBfPVtdLHk9W107aSYmaVt0XSYmcHIoaVt0XSkuZm9yRWFjaChmdW5jdGlvbihSKXt2YXIgUD0iIjtpZihpW3RdW1JdLlR5cGU9PW90LkNNTlQpe2lmKFA9aGEoaVt0XVtSXS5UYXJnZXQsYSksXz1idih0cihlLFAsITApLFAsYyksIV98fCFfLmxlbmd0aClyZXR1cm47anMoaCxfLCExKX1pW3RdW1JdLlR5cGU9PW90LlRDTU5UJiYoUD1oYShpW3RdW1JdLlRhcmdldCxhKSx5PXkuY29uY2F0KFQxKHRyKGUsUCwhMCksYykpKX0pLHkmJnkubGVuZ3RoJiZqcyhoLHksITAsYy5wZW9wbGV8fFtdKSxzPT0ic2hlZXQiJiZ6MihoLHMsZSxhLG4sYyxvKSxHMihoLHMsZSxhLG4sYyxvLF8pfWNhdGNoKFIpe2lmKGMuV1RGKXRocm93IFJ9fWZ1bmN0aW9uICRyKGUpe3JldHVybiBlLmNoYXJBdCgwKT09Ii8iP2Uuc2xpY2UoMSk6ZX1mdW5jdGlvbiBLMihlLGEpe2lmKGxpKCksYT1hfHx7fSxEbihhKSxHcihlLCJNRVRBLUlORi9tYW5pZmVzdC54bWwiKXx8R3IoZSwib2JqZWN0ZGF0YS54bWwiKSlyZXR1cm4gT2YoZSxhKTtpZihHcihlLCJJbmRleC9Eb2N1bWVudC5pd2EiKSl7aWYodHlwZW9mIFVpbnQ4QXJyYXk+InUiKXRocm93IG5ldyBFcnJvcigiTlVNQkVSUyBmaWxlIHBhcnNpbmcgcmVxdWlyZXMgVWludDhBcnJheSBzdXBwb3J0Iik7aWYodHlwZW9mIEluPCJ1Iil7aWYoZS5GaWxlSW5kZXgpcmV0dXJuIEluKGUsYSk7dmFyIHI9TWUudXRpbHMuY2ZiX25ldygpO3JldHVybiBnaShlKS5mb3JFYWNoKGZ1bmN0aW9uKHEpe0pjKHIscSxRMChlLHEpKX0pLEluKHIsYSl9dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBOVU1CRVJTIGZpbGUiKX1pZighR3IoZSwiW0NvbnRlbnRfVHlwZXNdLnhtbCIpKXtpZihHcihlLCJpbmRleC54bWwuZ3oiKSl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIE5VTUJFUlMgMDggZmlsZSIpO2lmKEdyKGUsImluZGV4LnhtbCIpKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgTlVNQkVSUyAwOSBmaWxlIik7dmFyIHQ9TWUuZmluZChlLCJJbmRleC56aXAiKTtpZih0KXJldHVybiBhPVVlKGEpLGRlbGV0ZSBhLnR5cGUsdHlwZW9mIHQuY29udGVudD09InN0cmluZyImJihhLnR5cGU9ImJpbmFyeSIpLHR5cGVvZiBCdW48InUiJiZCdWZmZXIuaXNCdWZmZXIodC5jb250ZW50KT9wdChuZXcgVWludDhBcnJheSh0LmNvbnRlbnQpLGEpOnB0KHQuY29udGVudCxhKTt0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIFpJUCBmaWxlIil9dmFyIG49Z2koZSksaT0kbyhscihlLCJbQ29udGVudF9UeXBlc10ueG1sIikpLGY9ITEscyxjO2lmKGkud29ya2Jvb2tzLmxlbmd0aD09PTAmJihjPSJ4bC93b3JrYm9vay54bWwiLHRyKGUsYywhMCkmJmkud29ya2Jvb2tzLnB1c2goYykpLGkud29ya2Jvb2tzLmxlbmd0aD09PTApe2lmKGM9InhsL3dvcmtib29rLmJpbiIsIXRyKGUsYywhMCkpdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgZmluZCB3b3JrYm9vayIpO2kud29ya2Jvb2tzLnB1c2goYyksZj0hMH1pLndvcmtib29rc1swXS5zbGljZSgtMyk9PSJiaW4iJiYoZj0hMCk7dmFyIG89e30sbD17fTtpZighYS5ib29rU2hlZXRzJiYhYS5ib29rUHJvcHMpe2lmKFh0PVtdLGkuc3N0KXRyeXtYdD1Ddih0cihlLCRyKGkuc3N0KSksaS5zc3QsYSl9Y2F0Y2gocSl7aWYoYS5XVEYpdGhyb3cgcX1hLmNlbGxTdHlsZXMmJmkudGhlbWVzLmxlbmd0aCYmKG89R3MobHIoZSxpLnRoZW1lc1swXS5yZXBsYWNlKC9eXC8vLCIiKSwhMCl8fCIiLGEpKSxpLnN0eWxlJiYobD1Tdih0cihlLCRyKGkuc3R5bGUpKSxpLnN0eWxlLG8sYSkpfWkubGlua3MubWFwKGZ1bmN0aW9uKHEpe3RyeXt2YXIgbGU9WGEobHIoZSxOdCgkcihxKSkpLHEpO3JldHVybiBEdih0cihlLCRyKHEpKSxsZSxxLGEpfWNhdGNoe319KTt2YXIgdT1Gdih0cihlLCRyKGkud29ya2Jvb2tzWzBdKSksaS53b3JrYm9va3NbMF0sYSkseD17fSxoPSIiO2kuY29yZXByb3BzLmxlbmd0aCYmKGg9dHIoZSwkcihpLmNvcmVwcm9wc1swXSksITApLGgmJih4PXNzKGgpKSxpLmV4dHByb3BzLmxlbmd0aCE9PTAmJihoPXRyKGUsJHIoaS5leHRwcm9wc1swXSksITApLGgmJkpvKGgseCxhKSkpO3ZhciBnPXt9OyghYS5ib29rU2hlZXRzfHxhLmJvb2tQcm9wcykmJmkuY3VzdHByb3BzLmxlbmd0aCE9PTAmJihoPWxyKGUsJHIoaS5jdXN0cHJvcHNbMF0pLCEwKSxoJiYoZz1xbyhoLGEpKSk7dmFyIG09e307aWYoKGEuYm9va1NoZWV0c3x8YS5ib29rUHJvcHMpJiYodS5TaGVldHM/cz11LlNoZWV0cy5tYXAoZnVuY3Rpb24obGUpe3JldHVybiBsZS5uYW1lfSk6eC5Xb3Jrc2hlZXRzJiZ4LlNoZWV0TmFtZXMubGVuZ3RoPjAmJihzPXguU2hlZXROYW1lcyksYS5ib29rUHJvcHMmJihtLlByb3BzPXgsbS5DdXN0cHJvcHM9ZyksYS5ib29rU2hlZXRzJiZ0eXBlb2YgczwidSImJihtLlNoZWV0TmFtZXM9cyksYS5ib29rU2hlZXRzP20uU2hlZXROYW1lczphLmJvb2tQcm9wcykpcmV0dXJuIG07cz17fTt2YXIgZD17fTthLmJvb2tEZXBzJiZpLmNhbGNjaGFpbiYmKGQ9SXYodHIoZSwkcihpLmNhbGNjaGFpbikpLGkuY2FsY2NoYWluKSk7dmFyIHA9MCx3PXt9LF8seTt7dmFyIFI9dS5TaGVldHM7eC5Xb3Jrc2hlZXRzPVIubGVuZ3RoLHguU2hlZXROYW1lcz1bXTtmb3IodmFyIFA9MDtQIT1SLmxlbmd0aDsrK1ApeC5TaGVldE5hbWVzW1BdPVJbUF0ubmFtZX12YXIgYj1mPyJiaW4iOiJ4bWwiLE49aS53b3JrYm9va3NbMF0ubGFzdEluZGV4T2YoIi8iKSxJPShpLndvcmtib29rc1swXS5zbGljZSgwLE4rMSkrIl9yZWxzLyIraS53b3JrYm9va3NbMF0uc2xpY2UoTisxKSsiLnJlbHMiKS5yZXBsYWNlKC9eXC8vLCIiKTtHcihlLEkpfHwoST0ieGwvX3JlbHMvd29ya2Jvb2suIitiKyIucmVscyIpO3ZhciBCPVhhKGxyKGUsSSwhMCksSS5yZXBsYWNlKC9fcmVscy4qLywiczVzIikpOyhpLm1ldGFkYXRhfHxbXSkubGVuZ3RoPj0xJiYoYS54bG1ldGE9UnYodHIoZSwkcihpLm1ldGFkYXRhWzBdKSksaS5tZXRhZGF0YVswXSxhKSksKGkucGVvcGxlfHxbXSkubGVuZ3RoPj0xJiYoYS5wZW9wbGU9RTEodHIoZSwkcihpLnBlb3BsZVswXSkpLGEpKSxCJiYoQj1WMihCLHUuU2hlZXRzKSk7dmFyIEw9dHIoZSwieGwvd29ya3NoZWV0cy9zaGVldC54bWwiLCEwKT8xOjA7ZTpmb3IocD0wO3AhPXguV29ya3NoZWV0czsrK3Ape3ZhciBHPSJzaGVldCI7aWYoQiYmQltwXT8oXz0ieGwvIitCW3BdWzFdLnJlcGxhY2UoL1tcL10/eGxcLy8sIiIpLEdyKGUsXyl8fChfPUJbcF1bMV0pLEdyKGUsXyl8fChfPUkucmVwbGFjZSgvX3JlbHNcL1tcU1xzXSokLywiIikrQltwXVsxXSksRz1CW3BdWzJdKTooXz0ieGwvd29ya3NoZWV0cy9zaGVldCIrKHArMS1MKSsiLiIrYixfPV8ucmVwbGFjZSgvc2hlZXQwXC4vLCJzaGVldC4iKSkseT1fLnJlcGxhY2UoL14oLiopKFwvKShbXlwvXSopJC8sIiQxL19yZWxzLyQzLnJlbHMiKSxhJiZhLnNoZWV0cyE9bnVsbClzd2l0Y2godHlwZW9mIGEuc2hlZXRzKXtjYXNlIm51bWJlciI6aWYocCE9YS5zaGVldHMpY29udGludWUgZTticmVhaztjYXNlInN0cmluZyI6aWYoeC5TaGVldE5hbWVzW3BdLnRvTG93ZXJDYXNlKCkhPWEuc2hlZXRzLnRvTG93ZXJDYXNlKCkpY29udGludWUgZTticmVhaztkZWZhdWx0OmlmKEFycmF5LmlzQXJyYXkmJkFycmF5LmlzQXJyYXkoYS5zaGVldHMpKXtmb3IodmFyIGllPSExLG5lPTA7bmUhPWEuc2hlZXRzLmxlbmd0aDsrK25lKXR5cGVvZiBhLnNoZWV0c1tuZV09PSJudW1iZXIiJiZhLnNoZWV0c1tuZV09PXAmJihpZT0xKSx0eXBlb2YgYS5zaGVldHNbbmVdPT0ic3RyaW5nIiYmYS5zaGVldHNbbmVdLnRvTG93ZXJDYXNlKCk9PXguU2hlZXROYW1lc1twXS50b0xvd2VyQ2FzZSgpJiYoaWU9MSk7aWYoIWllKWNvbnRpbnVlIGV9fSQyKGUsXyx5LHguU2hlZXROYW1lc1twXSxwLHcscyxHLGEsdSxvLGwpfXJldHVybiBtPXtEaXJlY3Rvcnk6aSxXb3JrYm9vazp1LFByb3BzOngsQ3VzdHByb3BzOmcsRGVwczpkLFNoZWV0czpzLFNoZWV0TmFtZXM6eC5TaGVldE5hbWVzLFN0cmluZ3M6WHQsU3R5bGVzOmwsVGhlbWVzOm8sU1NGOlVlKFRlKX0sYSYmYS5ib29rRmlsZXMmJihlLmZpbGVzPyhtLmtleXM9bixtLmZpbGVzPWUuZmlsZXMpOihtLmtleXM9W10sbS5maWxlcz17fSxlLkZ1bGxQYXRocy5mb3JFYWNoKGZ1bmN0aW9uKHEsbGUpe3E9cS5yZXBsYWNlKC9eUm9vdCBFbnRyeVtcL10vLCIiKSxtLmtleXMucHVzaChxKSxtLmZpbGVzW3FdPWUuRmlsZUluZGV4W2xlXX0pKSksYSYmYS5ib29rVkJBJiYoaS52YmEubGVuZ3RoPjA/bS52YmFyYXc9dHIoZSwkcihpLnZiYVswXSksITApOmkuZGVmYXVsdHMmJmkuZGVmYXVsdHMuYmluPT09QzEmJihtLnZiYXJhdz10cihlLCJ4bC92YmFQcm9qZWN0LmJpbiIsITApKSksbS5ib29rVHlwZT1mPyJ4bHNiIjoieGxzeCIsbX1mdW5jdGlvbiBqMihlLGEpe3ZhciByPWF8fHt9LHQ9Ildvcmtib29rIixuPU1lLmZpbmQoZSx0KTt0cnl7aWYodD0iLyFEYXRhU3BhY2VzL1ZlcnNpb24iLG49TWUuZmluZChlLHQpLCFufHwhbi5jb250ZW50KXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgbWlzc2luZyAiK3QpO2lmKCR1KG4uY29udGVudCksdD0iLyFEYXRhU3BhY2VzL0RhdGFTcGFjZU1hcCIsbj1NZS5maW5kKGUsdCksIW58fCFuLmNvbnRlbnQpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBtaXNzaW5nICIrdCk7dmFyIGk9anUobi5jb250ZW50KTtpZihpLmxlbmd0aCE9PTF8fGlbMF0uY29tcHMubGVuZ3RoIT09MXx8aVswXS5jb21wc1swXS50IT09MHx8aVswXS5uYW1lIT09IlN0cm9uZ0VuY3J5cHRpb25EYXRhU3BhY2UifHxpWzBdLmNvbXBzWzBdLnYhPT0iRW5jcnlwdGVkUGFja2FnZSIpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBiYWQgIit0KTtpZih0PSIvIURhdGFTcGFjZXMvRGF0YVNwYWNlSW5mby9TdHJvbmdFbmNyeXB0aW9uRGF0YVNwYWNlIixuPU1lLmZpbmQoZSx0KSwhbnx8IW4uY29udGVudCl0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1pc3NpbmcgIit0KTt2YXIgZj1ZdShuLmNvbnRlbnQpO2lmKGYubGVuZ3RoIT0xfHxmWzBdIT0iU3Ryb25nRW5jcnlwdGlvblRyYW5zZm9ybSIpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBiYWQgIit0KTtpZih0PSIvIURhdGFTcGFjZXMvVHJhbnNmb3JtSW5mby9TdHJvbmdFbmNyeXB0aW9uVHJhbnNmb3JtLyFQcmltYXJ5IixuPU1lLmZpbmQoZSx0KSwhbnx8IW4uY29udGVudCl0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1pc3NpbmcgIit0KTtadShuLmNvbnRlbnQpfWNhdGNoe31pZih0PSIvRW5jcnlwdGlvbkluZm8iLG49TWUuZmluZChlLHQpLCFufHwhbi5jb250ZW50KXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgbWlzc2luZyAiK3QpO3ZhciBzPXF1KG4uY29udGVudCk7aWYodD0iL0VuY3J5cHRlZFBhY2thZ2UiLG49TWUuZmluZChlLHQpLCFufHwhbi5jb250ZW50KXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgbWlzc2luZyAiK3QpO2lmKHNbMF09PTQmJnR5cGVvZiBkZWNyeXB0X2FnaWxlPCJ1IilyZXR1cm4gZGVjcnlwdF9hZ2lsZShzWzFdLG4uY29udGVudCxyLnBhc3N3b3JkfHwiIixyKTtpZihzWzBdPT0yJiZ0eXBlb2YgZGVjcnlwdF9zdGQ3NjwidSIpcmV0dXJuIGRlY3J5cHRfc3RkNzYoc1sxXSxuLmNvbnRlbnQsci5wYXNzd29yZHx8IiIscik7dGhyb3cgbmV3IEVycm9yKCJGaWxlIGlzIHBhc3N3b3JkLXByb3RlY3RlZCIpfWZ1bmN0aW9uIFJuKGUsYSl7dmFyIHI9IiI7c3dpdGNoKChhfHx7fSkudHlwZXx8ImJhc2U2NCIpe2Nhc2UiYnVmZmVyIjpyZXR1cm5bZVswXSxlWzFdLGVbMl0sZVszXSxlWzRdLGVbNV0sZVs2XSxlWzddXTtjYXNlImJhc2U2NCI6cj1JcihlLnNsaWNlKDAsMTIpKTticmVhaztjYXNlImJpbmFyeSI6cj1lO2JyZWFrO2Nhc2UiYXJyYXkiOnJldHVybltlWzBdLGVbMV0sZVsyXSxlWzNdLGVbNF0sZVs1XSxlWzZdLGVbN11dO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiKyhhJiZhLnR5cGV8fCJ1bmRlZmluZWQiKSl9cmV0dXJuW3IuY2hhckNvZGVBdCgwKSxyLmNoYXJDb2RlQXQoMSksci5jaGFyQ29kZUF0KDIpLHIuY2hhckNvZGVBdCgzKSxyLmNoYXJDb2RlQXQoNCksci5jaGFyQ29kZUF0KDUpLHIuY2hhckNvZGVBdCg2KSxyLmNoYXJDb2RlQXQoNyldfWZ1bmN0aW9uIFkyKGUsYSl7cmV0dXJuIE1lLmZpbmQoZSwiRW5jcnlwdGVkUGFja2FnZSIpP2oyKGUsYSk6RWYoZSxhKX1mdW5jdGlvbiBKMihlLGEpe3ZhciByLHQ9ZSxuPWF8fHt9O3JldHVybiBuLnR5cGV8fChuLnR5cGU9TmUmJkJ1ZmZlci5pc0J1ZmZlcihlKT8iYnVmZmVyIjoiYmFzZTY0Iikscj1taSh0LG4pLEsyKHIsbil9ZnVuY3Rpb24gQmYoZSxhKXt2YXIgcj0wO2U6Zm9yKDtyPGUubGVuZ3RoOylzd2l0Y2goZS5jaGFyQ29kZUF0KHIpKXtjYXNlIDEwOmNhc2UgMTM6Y2FzZSAzMjorK3I7YnJlYWs7Y2FzZSA2MDpyZXR1cm4gU24oZS5zbGljZShyKSxhKTtkZWZhdWx0OmJyZWFrIGV9cmV0dXJuIGx0LnRvX3dvcmtib29rKGUsYSl9ZnVuY3Rpb24gWjIoZSxhKXt2YXIgcj0iIix0PVJuKGUsYSk7c3dpdGNoKGEudHlwZSl7Y2FzZSJiYXNlNjQiOnI9SXIoZSk7YnJlYWs7Y2FzZSJiaW5hcnkiOnI9ZTticmVhaztjYXNlImJ1ZmZlciI6cj1lLnRvU3RyaW5nKCJiaW5hcnkiKTticmVhaztjYXNlImFycmF5IjpyPUJhKGUpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK2EudHlwZSl9cmV0dXJuIHRbMF09PTIzOSYmdFsxXT09MTg3JiZ0WzJdPT0xOTEmJihyPVZlKHIpKSxhLnR5cGU9ImJpbmFyeSIsQmYocixhKX1mdW5jdGlvbiBxMihlLGEpe3ZhciByPWU7cmV0dXJuIGEudHlwZT09ImJhc2U2NCImJihyPUlyKHIpKSx0eXBlb2YgQXJyYXlCdWZmZXI8InUiJiZlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJihyPW5ldyBVaW50OEFycmF5KGUpKSxyPU5lJiZCdWZmZXIuaXNCdWZmZXIoZSk/ZS5zbGljZSgyKS50b1N0cmluZygidXRmMTZsZSIpOnR5cGVvZiBVaW50OEFycmF5PCJ1IiYmciBpbnN0YW5jZW9mIFVpbnQ4QXJyYXk/dHlwZW9mIFRleHREZWNvZGVyPCJ1Ij9uZXcgVGV4dERlY29kZXIoInV0Zi0xNmxlIikuZGVjb2RlKHIuc2xpY2UoMikpOmFjKHIuc2xpY2UoMikpOlhuKHIuc2xpY2UoMikpLGEudHlwZT0iYmluYXJ5IixCZihyLGEpfWZ1bmN0aW9uIFEyKGUpe3JldHVybiBlLm1hdGNoKC9bXlx4MDAtXHg3Rl0vKT9idChlKTplfWZ1bmN0aW9uIE9uKGUsYSxyLHQpe3JldHVybiB0PyhyLnR5cGU9InN0cmluZyIsbHQudG9fd29ya2Jvb2soZSxyKSk6bHQudG9fd29ya2Jvb2soYSxyKX1mdW5jdGlvbiBwdChlLGEpe1ZuKCk7dmFyIHI9YXx8e307aWYoci5jb2RlcGFnZSYmdHlwZW9mIG50PiJ1IiYmY29uc29sZS5lcnJvcigiQ29kZXBhZ2UgdGFibGVzIGFyZSBub3QgbG9hZGVkLiAgTm9uLUFTQ0lJIGNoYXJhY3RlcnMgbWF5IG5vdCBnaXZlIGV4cGVjdGVkIHJlc3VsdHMiKSx0eXBlb2YgQXJyYXlCdWZmZXI8InUiJiZlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpcmV0dXJuIHB0KG5ldyBVaW50OEFycmF5KGUpLChyPVVlKHIpLHIudHlwZT0iYXJyYXkiLHIpKTtpZih0eXBlb2YgSW50OEFycmF5PCJ1IiYmZSBpbnN0YW5jZW9mIEludDhBcnJheSlyZXR1cm4gcHQobmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUubGVuZ3RoKSxyKTt0eXBlb2YgVWludDhBcnJheTwidSImJmUgaW5zdGFuY2VvZiBVaW50OEFycmF5JiYhci50eXBlJiYoci50eXBlPXR5cGVvZiBEZW5vPCJ1Ij8iYnVmZmVyIjoiYXJyYXkiKTt2YXIgdD1lLG49WzAsMCwwLDBdLGk9ITE7aWYoci5jZWxsU3R5bGVzJiYoci5jZWxsTkY9ITAsci5zaGVldFN0dWJzPSEwKSx4dD17fSxyLmRhdGVORiYmKHh0LmRhdGVORj1yLmRhdGVORiksci50eXBlfHwoci50eXBlPU5lJiZCdWZmZXIuaXNCdWZmZXIoZSk/ImJ1ZmZlciI6ImJhc2U2NCIpLHIudHlwZT09ImZpbGUiJiYoci50eXBlPU5lPyJidWZmZXIiOiJiaW5hcnkiLHQ9UmMoZSksdHlwZW9mIFVpbnQ4QXJyYXk8InUiJiYhTmUmJihyLnR5cGU9ImFycmF5IikpLHIudHlwZT09InN0cmluZyImJihpPSEwLHIudHlwZT0iYmluYXJ5IixyLmNvZGVwYWdlPTY1MDAxLHQ9UTIoZSkpLHIudHlwZT09ImFycmF5IiYmdHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZlIGluc3RhbmNlb2YgVWludDhBcnJheSYmdHlwZW9mIEFycmF5QnVmZmVyPCJ1Iil7dmFyIGY9bmV3IEFycmF5QnVmZmVyKDMpLHM9bmV3IFVpbnQ4QXJyYXkoZik7aWYocy5mb289ImJhciIsIXMuZm9vKXJldHVybiByPVVlKHIpLHIudHlwZT0iYXJyYXkiLHB0KCQwKHQpLHIpfXN3aXRjaCgobj1Sbih0LHIpKVswXSl7Y2FzZSAyMDg6aWYoblsxXT09PTIwNyYmblsyXT09PTE3JiZuWzNdPT09MjI0JiZuWzRdPT09MTYxJiZuWzVdPT09MTc3JiZuWzZdPT09MjYmJm5bN109PT0yMjUpcmV0dXJuIFkyKE1lLnJlYWQodCxyKSxyKTticmVhaztjYXNlIDk6aWYoblsxXTw9OClyZXR1cm4gRWYodCxyKTticmVhaztjYXNlIDYwOnJldHVybiBTbih0LHIpO2Nhc2UgNzM6aWYoblsxXT09PTczJiZuWzJdPT09NDImJm5bM109PT0wKXRocm93IG5ldyBFcnJvcigiVElGRiBJbWFnZSBGaWxlIGlzIG5vdCBhIHNwcmVhZHNoZWV0Iik7aWYoblsxXT09PTY4KXJldHVybiBOdSh0LHIpO2JyZWFrO2Nhc2UgODQ6aWYoblsxXT09PTY1JiZuWzJdPT09NjYmJm5bM109PT03NilyZXR1cm4gTXUodCxyKTticmVhaztjYXNlIDgwOnJldHVybiBuWzFdPT09NzUmJm5bMl08OSYmblszXTw5P0oyKHQscik6T24oZSx0LHIsaSk7Y2FzZSAyMzk6cmV0dXJuIG5bM109PT02MD9Tbih0LHIpOk9uKGUsdCxyLGkpO2Nhc2UgMjU1OmlmKG5bMV09PT0yNTQpcmV0dXJuIHEyKHQscik7aWYoblsxXT09PTAmJm5bMl09PT0yJiZuWzNdPT09MClyZXR1cm4gTHQudG9fd29ya2Jvb2sodCxyKTticmVhaztjYXNlIDA6aWYoblsxXT09PTAmJihuWzJdPj0yJiZuWzNdPT09MHx8blsyXT09PTAmJihuWzNdPT09OHx8blszXT09PTkpKSlyZXR1cm4gTHQudG9fd29ya2Jvb2sodCxyKTticmVhaztjYXNlIDM6Y2FzZSAxMzE6Y2FzZSAxMzk6Y2FzZSAxNDA6cmV0dXJuIGJzLnRvX3dvcmtib29rKHQscik7Y2FzZSAxMjM6aWYoblsxXT09PTkyJiZuWzJdPT09MTE0JiZuWzNdPT09MTE2KXJldHVybiB1aCh0LHIpO2JyZWFrO2Nhc2UgMTA6Y2FzZSAxMzpjYXNlIDMyOnJldHVybiBaMih0LHIpO2Nhc2UgMTM3OmlmKG5bMV09PT04MCYmblsyXT09PTc4JiZuWzNdPT09NzEpdGhyb3cgbmV3IEVycm9yKCJQTkcgSW1hZ2UgRmlsZSBpcyBub3QgYSBzcHJlYWRzaGVldCIpO2JyZWFrO2Nhc2UgMzc6aWYoblsxXT09PTgwJiZuWzJdPT09NjgmJm5bM109PT03MCl0aHJvdyBuZXcgRXJyb3IoIlBERiBGaWxlIGlzIG5vdCBhIHNwcmVhZHNoZWV0Iik7YnJlYWs7Y2FzZSA4OmlmKG5bMV09PT0yMzEpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBNdWx0aXBsYW4gMS54IGZpbGUhIik7YnJlYWs7Y2FzZSAxMjppZihuWzFdPT09MjM2KXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgTXVsdGlwbGFuIDIueCBmaWxlISIpO2lmKG5bMV09PT0yMzcpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBNdWx0aXBsYW4gMy54IGZpbGUhIik7YnJlYWt9cmV0dXJuIEl1LmluZGV4T2YoblswXSk+LTEmJm5bMl08PTEyJiZuWzNdPD0zMT9icy50b193b3JrYm9vayh0LHIpOk9uKGUsdCxyLGkpfWZ1bmN0aW9uIGVwKGUsYSxyLHQsbixpLGYpe3ZhciBzPUdlKHIpLGM9Zi5kZWZ2YWwsbz1mLnJhd3x8IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmLCJyYXciKSxsPSEwLHU9ZVsiIWRhdGEiXSE9bnVsbCx4PW49PT0xP1tdOnt9O2lmKG4hPT0xKWlmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSl0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHgsIl9fcm93TnVtX18iLHt2YWx1ZTpyLGVudW1lcmFibGU6ITF9KX1jYXRjaHt4Ll9fcm93TnVtX189cn1lbHNlIHguX19yb3dOdW1fXz1yO2lmKCF1fHxlWyIhZGF0YSJdW3JdKWZvcih2YXIgaD1hLnMuYztoPD1hLmUuYzsrK2gpe3ZhciBnPXU/KGVbIiFkYXRhIl1bcl18fFtdKVtoXTplW3RbaF0rc107aWYoZz09bnVsbHx8Zy50PT09dm9pZCAwKXtpZihjPT09dm9pZCAwKWNvbnRpbnVlO2lbaF0hPW51bGwmJih4W2lbaF1dPWMpO2NvbnRpbnVlfXZhciBtPWcudjtzd2l0Y2goZy50KXtjYXNlInoiOmlmKG09PW51bGwpYnJlYWs7Y29udGludWU7Y2FzZSJlIjptPW09PTA/bnVsbDp2b2lkIDA7YnJlYWs7Y2FzZSJzIjpjYXNlImIiOmJyZWFrO2Nhc2UibiI6aWYoIWcuenx8IVpyKGcueil8fChtPVNhKG0pLHR5cGVvZiBtPT0ibnVtYmVyIikpYnJlYWs7Y2FzZSJkIjpmJiYoZi5VVEN8fGYucmF3PT09ITEpfHwobT1VYShuZXcgRGF0ZShtKSkpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgdHlwZSAiK2cudCl9aWYoaVtoXSE9bnVsbCl7aWYobT09bnVsbClpZihnLnQ9PSJlIiYmbT09PW51bGwpeFtpW2hdXT1udWxsO2Vsc2UgaWYoYyE9PXZvaWQgMCl4W2lbaF1dPWM7ZWxzZSBpZihvJiZtPT09bnVsbCl4W2lbaF1dPW51bGw7ZWxzZSBjb250aW51ZTtlbHNlIHhbaVtoXV09KGcudD09PSJuIiYmdHlwZW9mIGYucmF3TnVtYmVycz09ImJvb2xlYW4iP2YucmF3TnVtYmVyczpvKT9tOmdhKGcsbSxmKTttIT1udWxsJiYobD0hMSl9fXJldHVybntyb3c6eCxpc2VtcHR5Omx9fWZ1bmN0aW9uIE5uKGUsYSl7aWYoZT09bnVsbHx8ZVsiIXJlZiJdPT1udWxsKXJldHVybltdO3ZhciByPXt0OiJuIix2OjB9LHQ9MCxuPTEsaT1bXSxmPTAscz0iIixjPXtzOntyOjAsYzowfSxlOntyOjAsYzowfX0sbz1hfHx7fSxsPW8ucmFuZ2UhPW51bGw/by5yYW5nZTplWyIhcmVmIl07c3dpdGNoKG8uaGVhZGVyPT09MT90PTE6by5oZWFkZXI9PT0iQSI/dD0yOkFycmF5LmlzQXJyYXkoby5oZWFkZXIpP3Q9MzpvLmhlYWRlcj09bnVsbCYmKHQ9MCksdHlwZW9mIGwpe2Nhc2Uic3RyaW5nIjpjPVplKGwpO2JyZWFrO2Nhc2UibnVtYmVyIjpjPVplKGVbIiFyZWYiXSksYy5zLnI9bDticmVhaztkZWZhdWx0OmM9bH10PjAmJihuPTApO3ZhciB1PUdlKGMucy5yKSx4PVtdLGg9W10sZz0wLG09MCxkPWVbIiFkYXRhIl0hPW51bGwscD1jLnMucix3PTAsXz17fTtkJiYhZVsiIWRhdGEiXVtwXSYmKGVbIiFkYXRhIl1bcF09W10pO3ZhciB5PW8uc2tpcEhpZGRlbiYmZVsiIWNvbHMiXXx8W10sUj1vLnNraXBIaWRkZW4mJmVbIiFyb3dzIl18fFtdO2Zvcih3PWMucy5jO3c8PWMuZS5jOysrdylpZighKHlbd118fHt9KS5oaWRkZW4pc3dpdGNoKHhbd109SGUodykscj1kP2VbIiFkYXRhIl1bcF1bd106ZVt4W3ddK3VdLHQpe2Nhc2UgMTppW3ddPXctYy5zLmM7YnJlYWs7Y2FzZSAyOmlbd109eFt3XTticmVhaztjYXNlIDM6aVt3XT1vLmhlYWRlclt3LWMucy5jXTticmVhaztkZWZhdWx0OmlmKHI9PW51bGwmJihyPXt3OiJfX0VNUFRZIix0OiJzIn0pLHM9Zj1nYShyLG51bGwsbyksbT1fW2ZdfHwwLCFtKV9bZl09MTtlbHNle2RvIHM9ZisiXyIrbSsrO3doaWxlKF9bc10pO19bZl09bSxfW3NdPTF9aVt3XT1zfWZvcihwPWMucy5yK247cDw9Yy5lLnI7KytwKWlmKCEoUltwXXx8e30pLmhpZGRlbil7dmFyIFA9ZXAoZSxjLHAseCx0LGksbyk7KFAuaXNlbXB0eT09PSExfHwodD09PTE/by5ibGFua3Jvd3MhPT0hMTpvLmJsYW5rcm93cykpJiYoaFtnKytdPVAucm93KX1yZXR1cm4gaC5sZW5ndGg9ZyxofXZhciBVZj0vIi9nO2Z1bmN0aW9uIHJwKGUsYSxyLHQsbixpLGYscyxjKXtmb3IodmFyIG89ITAsbD1bXSx1PSIiLHg9R2UociksaD1lWyIhZGF0YSJdIT1udWxsLGc9aCYmZVsiIWRhdGEiXVtyXXx8W10sbT1hLnMuYzttPD1hLmUuYzsrK20paWYodFttXSl7dmFyIGQ9aD9nW21dOmVbdFttXSt4XTtpZihkPT1udWxsKXU9IiI7ZWxzZSBpZihkLnYhPW51bGwpe289ITEsdT0iIisoYy5yYXdOdW1iZXJzJiZkLnQ9PSJuIj9kLnY6Z2EoZCxudWxsLGMpKTtmb3IodmFyIHA9MCx3PTA7cCE9PXUubGVuZ3RoOysrcClpZigodz11LmNoYXJDb2RlQXQocCkpPT09bnx8dz09PWl8fHc9PT0xMHx8dz09PTEzfHx3PT09MzR8fGMuZm9yY2VRdW90ZXMpe3U9JyInK3UucmVwbGFjZShVZiwnIiInKSsnIic7YnJlYWt9dT09IklEIiYmcz09MCYmbC5sZW5ndGg9PTAmJih1PSciSUQiJyl9ZWxzZSBkLmYhPW51bGwmJiFkLkY/KG89ITEsdT0iPSIrZC5mLHUuaW5kZXhPZigiLCIpPj0wJiYodT0nIicrdS5yZXBsYWNlKFVmLCciIicpKyciJykpOnU9IiI7bC5wdXNoKHUpfWlmKGMuc3RyaXApZm9yKDtsW2wubGVuZ3RoLTFdPT09IiI7KS0tbC5sZW5ndGg7cmV0dXJuIGMuYmxhbmtyb3dzPT09ITEmJm8/bnVsbDpsLmpvaW4oZil9ZnVuY3Rpb24gSGYoZSxhKXt2YXIgcj1bXSx0PWE/P3t9O2lmKGU9PW51bGx8fGVbIiFyZWYiXT09bnVsbClyZXR1cm4iIjtmb3IodmFyIG49WmUoZVsiIXJlZiJdKSxpPXQuRlMhPT12b2lkIDA/dC5GUzoiLCIsZj1pLmNoYXJDb2RlQXQoMCkscz10LlJTIT09dm9pZCAwP3QuUlM6YApgLGM9cy5jaGFyQ29kZUF0KDApLG89IiIsbD1bXSx1PXQuc2tpcEhpZGRlbiYmZVsiIWNvbHMiXXx8W10seD10LnNraXBIaWRkZW4mJmVbIiFyb3dzIl18fFtdLGg9bi5zLmM7aDw9bi5lLmM7KytoKSh1W2hdfHx7fSkuaGlkZGVufHwobFtoXT1IZShoKSk7Zm9yKHZhciBnPTAsbT1uLnMucjttPD1uLmUucjsrK20pKHhbbV18fHt9KS5oaWRkZW58fChvPXJwKGUsbixtLGwsZixjLGksZyx0KSxvIT1udWxsJiYob3x8dC5ibGFua3Jvd3MhPT0hMSkmJnIucHVzaCgoZysrP3M6IiIpK28pKTtyZXR1cm4gci5qb2luKCIiKX1mdW5jdGlvbiBhcChlLGEpe2F8fChhPXt9KSxhLkZTPSIJIixhLlJTPWAKYDt2YXIgcj1IZihlLGEpO3JldHVybiByfWZ1bmN0aW9uIHRwKGUsYSl7dmFyIHI9IiIsdCxuPSIiO2lmKGU9PW51bGx8fGVbIiFyZWYiXT09bnVsbClyZXR1cm5bXTt2YXIgaT1aZShlWyIhcmVmIl0pLGY9IiIscz1bXSxjLG89W10sbD1lWyIhZGF0YSJdIT1udWxsO2ZvcihjPWkucy5jO2M8PWkuZS5jOysrYylzW2NdPUhlKGMpO2Zvcih2YXIgdT1pLnMucjt1PD1pLmUucjsrK3UpZm9yKGY9R2UodSksYz1pLnMuYztjPD1pLmUuYzsrK2MpaWYocj1zW2NdK2YsdD1sPyhlWyIhZGF0YSJdW3VdfHxbXSlbY106ZVtyXSxuPSIiLHQhPT12b2lkIDApe2lmKHQuRiE9bnVsbCl7aWYocj10LkYsIXQuZiljb250aW51ZTtuPXQuZixyLmluZGV4T2YoIjoiKT09LTEmJihyPXIrIjoiK3IpfWlmKHQuZiE9bnVsbCluPXQuZjtlbHNle2lmKGEmJmEudmFsdWVzPT09ITEpY29udGludWU7aWYodC50PT0ieiIpY29udGludWU7aWYodC50PT0ibiImJnQudiE9bnVsbCluPSIiK3QudjtlbHNlIGlmKHQudD09ImIiKW49dC52PyJUUlVFIjoiRkFMU0UiO2Vsc2UgaWYodC53IT09dm9pZCAwKW49IiciK3QudztlbHNle2lmKHQudj09PXZvaWQgMCljb250aW51ZTt0LnQ9PSJzIj9uPSInIit0LnY6bj0iIit0LnZ9fW9bby5sZW5ndGhdPXIrIj0iK259cmV0dXJuIG99ZnVuY3Rpb24gV2YoZSxhLHIpe3ZhciB0PXJ8fHt9LG49ZT9lWyIhZGF0YSJdIT1udWxsOnQuZGVuc2UsaT0rIXQuc2tpcEhlYWRlcixmPWV8fHt9OyFlJiZuJiYoZlsiIWRhdGEiXT1bXSk7dmFyIHM9MCxjPTA7aWYoZiYmdC5vcmlnaW4hPW51bGwpaWYodHlwZW9mIHQub3JpZ2luPT0ibnVtYmVyIilzPXQub3JpZ2luO2Vsc2V7dmFyIG89dHlwZW9mIHQub3JpZ2luPT0ic3RyaW5nIj9ncih0Lm9yaWdpbik6dC5vcmlnaW47cz1vLnIsYz1vLmN9dmFyIGw9e3M6e2M6MCxyOjB9LGU6e2MscjpzK2EubGVuZ3RoLTEraX19O2lmKGZbIiFyZWYiXSl7dmFyIHU9WmUoZlsiIXJlZiJdKTtsLmUuYz1NYXRoLm1heChsLmUuYyx1LmUuYyksbC5lLnI9TWF0aC5tYXgobC5lLnIsdS5lLnIpLHM9PS0xJiYocz11LmUucisxLGwuZS5yPXMrYS5sZW5ndGgtMStpKX1lbHNlIHM9PS0xJiYocz0wLGwuZS5yPWEubGVuZ3RoLTEraSk7dmFyIHg9dC5oZWFkZXJ8fFtdLGg9MCxnPVtdO2EuZm9yRWFjaChmdW5jdGlvbihkLHApe24mJiFmWyIhZGF0YSJdW3MrcCtpXSYmKGZbIiFkYXRhIl1bcytwK2ldPVtdKSxuJiYoZz1mWyIhZGF0YSJdW3MrcCtpXSkscHIoZCkuZm9yRWFjaChmdW5jdGlvbih3KXsoaD14LmluZGV4T2YodykpPT0tMSYmKHhbaD14Lmxlbmd0aF09dyk7dmFyIF89ZFt3XSx5PSJ6IixSPSIiLFA9bj8iIjpIZShjK2gpK0dlKHMrcCtpKSxiPW4/Z1tjK2hdOmZbUF07XyYmdHlwZW9mIF89PSJvYmplY3QiJiYhKF8gaW5zdGFuY2VvZiBEYXRlKT9uP2dbYytoXT1fOmZbUF09XzoodHlwZW9mIF89PSJudW1iZXIiP3k9Im4iOnR5cGVvZiBfPT0iYm9vbGVhbiI/eT0iYiI6dHlwZW9mIF89PSJzdHJpbmciP3k9InMiOl8gaW5zdGFuY2VvZiBEYXRlPyh5PSJkIix0LlVUQ3x8KF89bzAoXykpLHQuY2VsbERhdGVzfHwoeT0ibiIsXz1vcihfKSksUj1iIT1udWxsJiZiLnomJlpyKGIueik/Yi56OnQuZGF0ZU5GfHxUZVsxNF0pOl89PT1udWxsJiZ0Lm51bGxFcnJvciYmKHk9ImUiLF89MCksYj8oYi50PXksYi52PV8sZGVsZXRlIGIudyxkZWxldGUgYi5SLFImJihiLno9UikpOm4/Z1tjK2hdPWI9e3Q6eSx2Ol99OmZbUF09Yj17dDp5LHY6X30sUiYmKGIuej1SKSl9KX0pLGwuZS5jPU1hdGgubWF4KGwuZS5jLGMreC5sZW5ndGgtMSk7dmFyIG09R2Uocyk7aWYobiYmIWZbIiFkYXRhIl1bc10mJihmWyIhZGF0YSJdW3NdPVtdKSxpKWZvcihoPTA7aDx4Lmxlbmd0aDsrK2gpbj9mWyIhZGF0YSJdW3NdW2grY109e3Q6InMiLHY6eFtoXX06ZltIZShoK2MpK21dPXt0OiJzIix2OnhbaF19O3JldHVybiBmWyIhcmVmIl09SWUobCksZn1mdW5jdGlvbiBucChlLGEpe3JldHVybiBXZihudWxsLGUsYSl9ZnVuY3Rpb24gSnQoZSxhLHIpe2lmKHR5cGVvZiBhPT0ic3RyaW5nIil7aWYoZVsiIWRhdGEiXSE9bnVsbCl7dmFyIHQ9Z3IoYSk7cmV0dXJuIGVbIiFkYXRhIl1bdC5yXXx8KGVbIiFkYXRhIl1bdC5yXT1bXSksZVsiIWRhdGEiXVt0LnJdW3QuY118fChlWyIhZGF0YSJdW3Qucl1bdC5jXT17dDoieiJ9KX1yZXR1cm4gZVthXXx8KGVbYV09e3Q6InoifSl9cmV0dXJuIHR5cGVvZiBhIT0ibnVtYmVyIj9KdChlLERlKGEpKTpKdChlLEhlKHJ8fDApK0dlKGEpKX1mdW5jdGlvbiBpcChlLGEpe2lmKHR5cGVvZiBhPT0ibnVtYmVyIil7aWYoYT49MCYmZS5TaGVldE5hbWVzLmxlbmd0aD5hKXJldHVybiBhO3Rocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgc2hlZXQgIyAiK2EpfWVsc2UgaWYodHlwZW9mIGE9PSJzdHJpbmciKXt2YXIgcj1lLlNoZWV0TmFtZXMuaW5kZXhPZihhKTtpZihyPi0xKXJldHVybiByO3Rocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgc2hlZXQgbmFtZSB8IithKyJ8Iil9ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIHNoZWV0IHwiK2ErInwiKX1mdW5jdGlvbiBNbihlLGEpe3ZhciByPXtTaGVldE5hbWVzOltdLFNoZWV0czp7fX07cmV0dXJuIGUmJlp0KHIsZSxhfHwiU2hlZXQxIikscn1mdW5jdGlvbiBadChlLGEscix0KXt2YXIgbj0xO2lmKCFyKWZvcig7bjw9NjU1MzUmJmUuU2hlZXROYW1lcy5pbmRleE9mKHI9IlNoZWV0IituKSE9LTE7KytuLHI9dm9pZCAwKTtpZighcnx8ZS5TaGVldE5hbWVzLmxlbmd0aD49NjU1MzUpdGhyb3cgbmV3IEVycm9yKCJUb28gbWFueSB3b3Jrc2hlZXRzIik7aWYodCYmZS5TaGVldE5hbWVzLmluZGV4T2Yocik+PTAmJnIubGVuZ3RoPDMyKXt2YXIgaT1yLm1hdGNoKC9cZCskLyk7bj1pJiYraVswXXx8MDt2YXIgZj1pJiZyLnNsaWNlKDAsaS5pbmRleCl8fHI7Zm9yKCsrbjtuPD02NTUzNSYmZS5TaGVldE5hbWVzLmluZGV4T2Yocj1mK24pIT0tMTsrK24pO31pZihkdihyKSxlLlNoZWV0TmFtZXMuaW5kZXhPZihyKT49MCl0aHJvdyBuZXcgRXJyb3IoIldvcmtzaGVldCB3aXRoIG5hbWUgfCIrcisifCBhbHJlYWR5IGV4aXN0cyEiKTtyZXR1cm4gZS5TaGVldE5hbWVzLnB1c2gociksZS5TaGVldHNbcl09YSxyfWZ1bmN0aW9uIHNwKGUsYSxyKXtlLldvcmtib29rfHwoZS5Xb3JrYm9vaz17fSksZS5Xb3JrYm9vay5TaGVldHN8fChlLldvcmtib29rLlNoZWV0cz1bXSk7dmFyIHQ9aXAoZSxhKTtzd2l0Y2goZS5Xb3JrYm9vay5TaGVldHNbdF18fChlLldvcmtib29rLlNoZWV0c1t0XT17fSkscil7Y2FzZSAwOmNhc2UgMTpjYXNlIDI6YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkJhZCBzaGVldCB2aXNpYmlsaXR5IHNldHRpbmcgIityKX1lLldvcmtib29rLlNoZWV0c1t0XS5IaWRkZW49cn1mdW5jdGlvbiBmcChlLGEpe3JldHVybiBlLno9YSxlfWZ1bmN0aW9uIFZmKGUsYSxyKXtyZXR1cm4gYT8oZS5sPXtUYXJnZXQ6YX0sciYmKGUubC5Ub29sdGlwPXIpKTpkZWxldGUgZS5sLGV9ZnVuY3Rpb24gY3AoZSxhLHIpe3JldHVybiBWZihlLCIjIithLHIpfWZ1bmN0aW9uIG9wKGUsYSxyKXtlLmN8fChlLmM9W10pLGUuYy5wdXNoKHt0OmEsYTpyfHwiU2hlZXRKUyJ9KX1mdW5jdGlvbiBscChlLGEscix0KXtmb3IodmFyIG49dHlwZW9mIGEhPSJzdHJpbmciP2E6WmUoYSksaT10eXBlb2YgYT09InN0cmluZyI/YTpJZShhKSxmPW4ucy5yO2Y8PW4uZS5yOysrZilmb3IodmFyIHM9bi5zLmM7czw9bi5lLmM7KytzKXt2YXIgYz1KdChlLGYscyk7Yy50PSJuIixjLkY9aSxkZWxldGUgYy52LGY9PW4ucy5yJiZzPT1uLnMuYyYmKGMuZj1yLHQmJihjLkQ9ITApKX12YXIgbz1wYShlWyIhcmVmIl0pO3JldHVybiBvLnMucj5uLnMuciYmKG8ucy5yPW4ucy5yKSxvLnMuYz5uLnMuYyYmKG8ucy5jPW4ucy5jKSxvLmUucjxuLmUuciYmKG8uZS5yPW4uZS5yKSxvLmUuYzxuLmUuYyYmKG8uZS5jPW4uZS5jKSxlWyIhcmVmIl09SWUobyksZX12YXIgaWE9e2VuY29kZV9jb2w6SGUsZW5jb2RlX3JvdzpHZSxlbmNvZGVfY2VsbDpEZSxlbmNvZGVfcmFuZ2U6SWUsZGVjb2RlX2NvbDpzbixkZWNvZGVfcm93Om5uLHNwbGl0X2NlbGw6VG8sZGVjb2RlX2NlbGw6Z3IsZGVjb2RlX3JhbmdlOnBhLGZvcm1hdF9jZWxsOmdhLHNoZWV0X25ldzpBbyxzaGVldF9hZGRfYW9hOlppLHNoZWV0X2FkZF9qc29uOldmLHNoZWV0X2FkZF9kb206Q2YsYW9hX3RvX3NoZWV0OmN0LGpzb25fdG9fc2hlZXQ6bnAsdGFibGVfdG9fc2hlZXQ6YmYsdGFibGVfdG9fYm9vazpGMixzaGVldF90b19jc3Y6SGYsc2hlZXRfdG9fdHh0OmFwLHNoZWV0X3RvX2pzb246Tm4sc2hlZXRfdG9faHRtbDp3MixzaGVldF90b19mb3JtdWxhZTp0cCxzaGVldF90b19yb3dfb2JqZWN0X2FycmF5Ok5uLHZhbGlkYXRlX21lcmdlczpUbixtZWFzdXJlX3RleHRfd2lkdGg6QnMsYXV0b19maXRfY29sdW1uczpnbixhdXRvZml0X2NvbHVtbnM6Z24sY29sX3dpZHRoX3RvX3B4Ol9hLHB4X3RvX2NvbF93aWR0aDpmdW5jdGlvbihlKXtyZXR1cm4gWmEoSmEoZSkpfSxyb3dfaGVpZ2h0X3RvX3B4Okh0LHB4X3RvX3Jvd19oZWlnaHQ6Ymgsc2hlZXRfZ2V0X2NlbGw6SnQsYm9va19uZXc6TW4sYm9va19hcHBlbmRfc2hlZXQ6WnQsYm9va19zZXRfc2hlZXRfdmlzaWJpbGl0eTpzcCxjZWxsX3NldF9udW1iZXJfZm9ybWF0OmZwLGNlbGxfc2V0X2h5cGVybGluazpWZixjZWxsX3NldF9pbnRlcm5hbF9saW5rOmNwLGNlbGxfYWRkX2NvbW1lbnQ6b3Asc2hlZXRfc2V0X2FycmF5X2Zvcm11bGE6bHAsY29uc3RzOntTSEVFVF9WSVNJQkxFOjAsU0hFRVRfSElEREVOOjEsU0hFRVRfVkVSWV9ISURERU46Mn19O2Z1bmN0aW9uIFAwKGUpeyJAYmFiZWwvaGVscGVycyAtIHR5cGVvZiI7cmV0dXJuIFAwPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnR5cGVvZiBTeW1ib2wuaXRlcmF0b3I9PSJzeW1ib2wiP2Z1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgYX06ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJnR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJmEuY29uc3RydWN0b3I9PT1TeW1ib2wmJmEhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBhfSxQMChlKX12YXIgdXA9L15ccysvLGhwPS9ccyskLztmdW5jdGlvbiBfZShlLGEpe2lmKGU9ZXx8IiIsYT1hfHx7fSxlIGluc3RhbmNlb2YgX2UpcmV0dXJuIGU7aWYoISh0aGlzIGluc3RhbmNlb2YgX2UpKXJldHVybiBuZXcgX2UoZSxhKTt2YXIgcj14cChlKTt0aGlzLl9vcmlnaW5hbElucHV0PWUsdGhpcy5fcj1yLnIsdGhpcy5fZz1yLmcsdGhpcy5fYj1yLmIsdGhpcy5fYT1yLmEsdGhpcy5fcm91bmRBPU1hdGgucm91bmQoMTAwKnRoaXMuX2EpLzEwMCx0aGlzLl9mb3JtYXQ9YS5mb3JtYXR8fHIuZm9ybWF0LHRoaXMuX2dyYWRpZW50VHlwZT1hLmdyYWRpZW50VHlwZSx0aGlzLl9yPDEmJih0aGlzLl9yPU1hdGgucm91bmQodGhpcy5fcikpLHRoaXMuX2c8MSYmKHRoaXMuX2c9TWF0aC5yb3VuZCh0aGlzLl9nKSksdGhpcy5fYjwxJiYodGhpcy5fYj1NYXRoLnJvdW5kKHRoaXMuX2IpKSx0aGlzLl9vaz1yLm9rfV9lLnByb3RvdHlwZT17aXNEYXJrOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0QnJpZ2h0bmVzcygpPDEyOH0saXNMaWdodDpmdW5jdGlvbigpe3JldHVybiF0aGlzLmlzRGFyaygpfSxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29rfSxnZXRPcmlnaW5hbElucHV0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29yaWdpbmFsSW5wdXR9LGdldEZvcm1hdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mb3JtYXR9LGdldEFscGhhOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2F9LGdldEJyaWdodG5lc3M6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnRvUmdiKCk7cmV0dXJuKGEucioyOTkrYS5nKjU4NythLmIqMTE0KS8xZTN9LGdldEx1bWluYW5jZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMudG9SZ2IoKSxyLHQsbixpLGYscztyZXR1cm4gcj1hLnIvMjU1LHQ9YS5nLzI1NSxuPWEuYi8yNTUscjw9LjAzOTI4P2k9ci8xMi45MjppPU1hdGgucG93KChyKy4wNTUpLzEuMDU1LDIuNCksdDw9LjAzOTI4P2Y9dC8xMi45MjpmPU1hdGgucG93KCh0Ky4wNTUpLzEuMDU1LDIuNCksbjw9LjAzOTI4P3M9bi8xMi45MjpzPU1hdGgucG93KChuKy4wNTUpLzEuMDU1LDIuNCksLjIxMjYqaSsuNzE1MipmKy4wNzIyKnN9LHNldEFscGhhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLl9hPWpmKGEpLHRoaXMuX3JvdW5kQT1NYXRoLnJvdW5kKDEwMCp0aGlzLl9hKS8xMDAsdGhpc30sdG9Ic3Y6ZnVuY3Rpb24oKXt2YXIgYT1YZih0aGlzLl9yLHRoaXMuX2csdGhpcy5fYik7cmV0dXJue2g6YS5oKjM2MCxzOmEucyx2OmEudixhOnRoaXMuX2F9fSx0b0hzdlN0cmluZzpmdW5jdGlvbigpe3ZhciBhPVhmKHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iKSxyPU1hdGgucm91bmQoYS5oKjM2MCksdD1NYXRoLnJvdW5kKGEucyoxMDApLG49TWF0aC5yb3VuZChhLnYqMTAwKTtyZXR1cm4gdGhpcy5fYT09MT8iaHN2KCIrcisiLCAiK3QrIiUsICIrbisiJSkiOiJoc3ZhKCIrcisiLCAiK3QrIiUsICIrbisiJSwgIit0aGlzLl9yb3VuZEErIikifSx0b0hzbDpmdW5jdGlvbigpe3ZhciBhPUdmKHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iKTtyZXR1cm57aDphLmgqMzYwLHM6YS5zLGw6YS5sLGE6dGhpcy5fYX19LHRvSHNsU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGE9R2YodGhpcy5fcix0aGlzLl9nLHRoaXMuX2IpLHI9TWF0aC5yb3VuZChhLmgqMzYwKSx0PU1hdGgucm91bmQoYS5zKjEwMCksbj1NYXRoLnJvdW5kKGEubCoxMDApO3JldHVybiB0aGlzLl9hPT0xPyJoc2woIityKyIsICIrdCsiJSwgIituKyIlKSI6ImhzbGEoIityKyIsICIrdCsiJSwgIituKyIlLCAiK3RoaXMuX3JvdW5kQSsiKSJ9LHRvSGV4OmZ1bmN0aW9uKGEpe3JldHVybiB6Zih0aGlzLl9yLHRoaXMuX2csdGhpcy5fYixhKX0sdG9IZXhTdHJpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuIiMiK3RoaXMudG9IZXgoYSl9LHRvSGV4ODpmdW5jdGlvbihhKXtyZXR1cm4gZ3AodGhpcy5fcix0aGlzLl9nLHRoaXMuX2IsdGhpcy5fYSxhKX0sdG9IZXg4U3RyaW5nOmZ1bmN0aW9uKGEpe3JldHVybiIjIit0aGlzLnRvSGV4OChhKX0sdG9SZ2I6ZnVuY3Rpb24oKXtyZXR1cm57cjpNYXRoLnJvdW5kKHRoaXMuX3IpLGc6TWF0aC5yb3VuZCh0aGlzLl9nKSxiOk1hdGgucm91bmQodGhpcy5fYiksYTp0aGlzLl9hfX0sdG9SZ2JTdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYT09MT8icmdiKCIrTWF0aC5yb3VuZCh0aGlzLl9yKSsiLCAiK01hdGgucm91bmQodGhpcy5fZykrIiwgIitNYXRoLnJvdW5kKHRoaXMuX2IpKyIpIjoicmdiYSgiK01hdGgucm91bmQodGhpcy5fcikrIiwgIitNYXRoLnJvdW5kKHRoaXMuX2cpKyIsICIrTWF0aC5yb3VuZCh0aGlzLl9iKSsiLCAiK3RoaXMuX3JvdW5kQSsiKSJ9LHRvUGVyY2VudGFnZVJnYjpmdW5jdGlvbigpe3JldHVybntyOk1hdGgucm91bmQoS2UodGhpcy5fciwyNTUpKjEwMCkrIiUiLGc6TWF0aC5yb3VuZChLZSh0aGlzLl9nLDI1NSkqMTAwKSsiJSIsYjpNYXRoLnJvdW5kKEtlKHRoaXMuX2IsMjU1KSoxMDApKyIlIixhOnRoaXMuX2F9fSx0b1BlcmNlbnRhZ2VSZ2JTdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYT09MT8icmdiKCIrTWF0aC5yb3VuZChLZSh0aGlzLl9yLDI1NSkqMTAwKSsiJSwgIitNYXRoLnJvdW5kKEtlKHRoaXMuX2csMjU1KSoxMDApKyIlLCAiK01hdGgucm91bmQoS2UodGhpcy5fYiwyNTUpKjEwMCkrIiUpIjoicmdiYSgiK01hdGgucm91bmQoS2UodGhpcy5fciwyNTUpKjEwMCkrIiUsICIrTWF0aC5yb3VuZChLZSh0aGlzLl9nLDI1NSkqMTAwKSsiJSwgIitNYXRoLnJvdW5kKEtlKHRoaXMuX2IsMjU1KSoxMDApKyIlLCAiK3RoaXMuX3JvdW5kQSsiKSJ9LHRvTmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hPT09MD8idHJhbnNwYXJlbnQiOnRoaXMuX2E8MT8hMTpicFt6Zih0aGlzLl9yLHRoaXMuX2csdGhpcy5fYiwhMCldfHwhMX0sdG9GaWx0ZXI6ZnVuY3Rpb24oYSl7dmFyIHI9IiMiKyRmKHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iLHRoaXMuX2EpLHQ9cixuPXRoaXMuX2dyYWRpZW50VHlwZT8iR3JhZGllbnRUeXBlID0gMSwgIjoiIjtpZihhKXt2YXIgaT1fZShhKTt0PSIjIiskZihpLl9yLGkuX2csaS5fYixpLl9hKX1yZXR1cm4icHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KCIrbisic3RhcnRDb2xvcnN0cj0iK3IrIixlbmRDb2xvcnN0cj0iK3QrIikifSx0b1N0cmluZzpmdW5jdGlvbihhKXt2YXIgcj0hIWE7YT1hfHx0aGlzLl9mb3JtYXQ7dmFyIHQ9ITEsbj10aGlzLl9hPDEmJnRoaXMuX2E+PTAsaT0hciYmbiYmKGE9PT0iaGV4Inx8YT09PSJoZXg2Inx8YT09PSJoZXgzInx8YT09PSJoZXg0Inx8YT09PSJoZXg4Inx8YT09PSJuYW1lIik7cmV0dXJuIGk/YT09PSJuYW1lIiYmdGhpcy5fYT09PTA/dGhpcy50b05hbWUoKTp0aGlzLnRvUmdiU3RyaW5nKCk6KGE9PT0icmdiIiYmKHQ9dGhpcy50b1JnYlN0cmluZygpKSxhPT09InByZ2IiJiYodD10aGlzLnRvUGVyY2VudGFnZVJnYlN0cmluZygpKSwoYT09PSJoZXgifHxhPT09ImhleDYiKSYmKHQ9dGhpcy50b0hleFN0cmluZygpKSxhPT09ImhleDMiJiYodD10aGlzLnRvSGV4U3RyaW5nKCEwKSksYT09PSJoZXg0IiYmKHQ9dGhpcy50b0hleDhTdHJpbmcoITApKSxhPT09ImhleDgiJiYodD10aGlzLnRvSGV4OFN0cmluZygpKSxhPT09Im5hbWUiJiYodD10aGlzLnRvTmFtZSgpKSxhPT09ImhzbCImJih0PXRoaXMudG9Ic2xTdHJpbmcoKSksYT09PSJoc3YiJiYodD10aGlzLnRvSHN2U3RyaW5nKCkpLHR8fHRoaXMudG9IZXhTdHJpbmcoKSl9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIF9lKHRoaXMudG9TdHJpbmcoKSl9LF9hcHBseU1vZGlmaWNhdGlvbjpmdW5jdGlvbihhLHIpe3ZhciB0PWEuYXBwbHkobnVsbCxbdGhpc10uY29uY2F0KFtdLnNsaWNlLmNhbGwocikpKTtyZXR1cm4gdGhpcy5fcj10Ll9yLHRoaXMuX2c9dC5fZyx0aGlzLl9iPXQuX2IsdGhpcy5zZXRBbHBoYSh0Ll9hKSx0aGlzfSxsaWdodGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKHdwLGFyZ3VtZW50cyl9LGJyaWdodGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKEZwLGFyZ3VtZW50cyl9LGRhcmtlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbihUcCxhcmd1bWVudHMpfSxkZXNhdHVyYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKG1wLGFyZ3VtZW50cyl9LHNhdHVyYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKF9wLGFyZ3VtZW50cyl9LGdyZXlzY2FsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbihrcCxhcmd1bWVudHMpfSxzcGluOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKEVwLGFyZ3VtZW50cyl9LF9hcHBseUNvbWJpbmF0aW9uOmZ1bmN0aW9uKGEscil7cmV0dXJuIGEuYXBwbHkobnVsbCxbdGhpc10uY29uY2F0KFtdLnNsaWNlLmNhbGwocikpKX0sYW5hbG9nb3VzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5Q29tYmluYXRpb24oU3AsYXJndW1lbnRzKX0sY29tcGxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKEFwLGFyZ3VtZW50cyl9LG1vbm9jaHJvbWF0aWM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbihDcCxhcmd1bWVudHMpfSxzcGxpdGNvbXBsZW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbih5cCxhcmd1bWVudHMpfSx0cmlhZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKEtmLFszXSl9LHRldHJhZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKEtmLFs0XSl9fSxfZS5mcm9tUmF0aW89ZnVuY3Rpb24oZSxhKXtpZihQMChlKT09Im9iamVjdCIpe3ZhciByPXt9O2Zvcih2YXIgdCBpbiBlKWUuaGFzT3duUHJvcGVydHkodCkmJih0PT09ImEiP3JbdF09ZVt0XTpyW3RdPXF0KGVbdF0pKTtlPXJ9cmV0dXJuIF9lKGUsYSl9O2Z1bmN0aW9uIHhwKGUpe3ZhciBhPXtyOjAsZzowLGI6MH0scj0xLHQ9bnVsbCxuPW51bGwsaT1udWxsLGY9ITEscz0hMTtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmciJiYoZT1PcChlKSksUDAoZSk9PSJvYmplY3QiJiYod2EoZS5yKSYmd2EoZS5nKSYmd2EoZS5iKT8oYT1kcChlLnIsZS5nLGUuYiksZj0hMCxzPVN0cmluZyhlLnIpLnN1YnN0cigtMSk9PT0iJSI/InByZ2IiOiJyZ2IiKTp3YShlLmgpJiZ3YShlLnMpJiZ3YShlLnYpPyh0PXF0KGUucyksbj1xdChlLnYpLGE9cHAoZS5oLHQsbiksZj0hMCxzPSJoc3YiKTp3YShlLmgpJiZ3YShlLnMpJiZ3YShlLmwpJiYodD1xdChlLnMpLGk9cXQoZS5sKSxhPXZwKGUuaCx0LGkpLGY9ITAscz0iaHNsIiksZS5oYXNPd25Qcm9wZXJ0eSgiYSIpJiYocj1lLmEpKSxyPWpmKHIpLHtvazpmLGZvcm1hdDplLmZvcm1hdHx8cyxyOk1hdGgubWluKDI1NSxNYXRoLm1heChhLnIsMCkpLGc6TWF0aC5taW4oMjU1LE1hdGgubWF4KGEuZywwKSksYjpNYXRoLm1pbigyNTUsTWF0aC5tYXgoYS5iLDApKSxhOnJ9fWZ1bmN0aW9uIGRwKGUsYSxyKXtyZXR1cm57cjpLZShlLDI1NSkqMjU1LGc6S2UoYSwyNTUpKjI1NSxiOktlKHIsMjU1KSoyNTV9fWZ1bmN0aW9uIEdmKGUsYSxyKXtlPUtlKGUsMjU1KSxhPUtlKGEsMjU1KSxyPUtlKHIsMjU1KTt2YXIgdD1NYXRoLm1heChlLGEsciksbj1NYXRoLm1pbihlLGEsciksaSxmLHM9KHQrbikvMjtpZih0PT1uKWk9Zj0wO2Vsc2V7dmFyIGM9dC1uO3N3aXRjaChmPXM+LjU/Yy8oMi10LW4pOmMvKHQrbiksdCl7Y2FzZSBlOmk9KGEtcikvYysoYTxyPzY6MCk7YnJlYWs7Y2FzZSBhOmk9KHItZSkvYysyO2JyZWFrO2Nhc2UgcjppPShlLWEpL2MrNDticmVha31pLz02fXJldHVybntoOmksczpmLGw6c319ZnVuY3Rpb24gdnAoZSxhLHIpe3ZhciB0LG4saTtlPUtlKGUsMzYwKSxhPUtlKGEsMTAwKSxyPUtlKHIsMTAwKTtmdW5jdGlvbiBmKG8sbCx1KXtyZXR1cm4gdTwwJiYodSs9MSksdT4xJiYodS09MSksdTwxLzY/bysobC1vKSo2KnU6dTwxLzI/bDp1PDIvMz9vKyhsLW8pKigyLzMtdSkqNjpvfWlmKGE9PT0wKXQ9bj1pPXI7ZWxzZXt2YXIgcz1yPC41P3IqKDErYSk6cithLXIqYSxjPTIqci1zO3Q9ZihjLHMsZSsxLzMpLG49ZihjLHMsZSksaT1mKGMscyxlLTEvMyl9cmV0dXJue3I6dCoyNTUsZzpuKjI1NSxiOmkqMjU1fX1mdW5jdGlvbiBYZihlLGEscil7ZT1LZShlLDI1NSksYT1LZShhLDI1NSkscj1LZShyLDI1NSk7dmFyIHQ9TWF0aC5tYXgoZSxhLHIpLG49TWF0aC5taW4oZSxhLHIpLGksZixzPXQsYz10LW47aWYoZj10PT09MD8wOmMvdCx0PT1uKWk9MDtlbHNle3N3aXRjaCh0KXtjYXNlIGU6aT0oYS1yKS9jKyhhPHI/NjowKTticmVhaztjYXNlIGE6aT0oci1lKS9jKzI7YnJlYWs7Y2FzZSByOmk9KGUtYSkvYys0O2JyZWFrfWkvPTZ9cmV0dXJue2g6aSxzOmYsdjpzfX1mdW5jdGlvbiBwcChlLGEscil7ZT1LZShlLDM2MCkqNixhPUtlKGEsMTAwKSxyPUtlKHIsMTAwKTt2YXIgdD1NYXRoLmZsb29yKGUpLG49ZS10LGk9ciooMS1hKSxmPXIqKDEtbiphKSxzPXIqKDEtKDEtbikqYSksYz10JTYsbz1bcixmLGksaSxzLHJdW2NdLGw9W3MscixyLGYsaSxpXVtjXSx1PVtpLGkscyxyLHIsZl1bY107cmV0dXJue3I6byoyNTUsZzpsKjI1NSxiOnUqMjU1fX1mdW5jdGlvbiB6ZihlLGEscix0KXt2YXIgbj1bZWEoTWF0aC5yb3VuZChlKS50b1N0cmluZygxNikpLGVhKE1hdGgucm91bmQoYSkudG9TdHJpbmcoMTYpKSxlYShNYXRoLnJvdW5kKHIpLnRvU3RyaW5nKDE2KSldO3JldHVybiB0JiZuWzBdLmNoYXJBdCgwKT09blswXS5jaGFyQXQoMSkmJm5bMV0uY2hhckF0KDApPT1uWzFdLmNoYXJBdCgxKSYmblsyXS5jaGFyQXQoMCk9PW5bMl0uY2hhckF0KDEpP25bMF0uY2hhckF0KDApK25bMV0uY2hhckF0KDApK25bMl0uY2hhckF0KDApOm4uam9pbigiIil9ZnVuY3Rpb24gZ3AoZSxhLHIsdCxuKXt2YXIgaT1bZWEoTWF0aC5yb3VuZChlKS50b1N0cmluZygxNikpLGVhKE1hdGgucm91bmQoYSkudG9TdHJpbmcoMTYpKSxlYShNYXRoLnJvdW5kKHIpLnRvU3RyaW5nKDE2KSksZWEoWWYodCkpXTtyZXR1cm4gbiYmaVswXS5jaGFyQXQoMCk9PWlbMF0uY2hhckF0KDEpJiZpWzFdLmNoYXJBdCgwKT09aVsxXS5jaGFyQXQoMSkmJmlbMl0uY2hhckF0KDApPT1pWzJdLmNoYXJBdCgxKSYmaVszXS5jaGFyQXQoMCk9PWlbM10uY2hhckF0KDEpP2lbMF0uY2hhckF0KDApK2lbMV0uY2hhckF0KDApK2lbMl0uY2hhckF0KDApK2lbM10uY2hhckF0KDApOmkuam9pbigiIil9ZnVuY3Rpb24gJGYoZSxhLHIsdCl7dmFyIG49W2VhKFlmKHQpKSxlYShNYXRoLnJvdW5kKGUpLnRvU3RyaW5nKDE2KSksZWEoTWF0aC5yb3VuZChhKS50b1N0cmluZygxNikpLGVhKE1hdGgucm91bmQocikudG9TdHJpbmcoMTYpKV07cmV0dXJuIG4uam9pbigiIil9X2UuZXF1YWxzPWZ1bmN0aW9uKGUsYSl7cmV0dXJuIWV8fCFhPyExOl9lKGUpLnRvUmdiU3RyaW5nKCk9PV9lKGEpLnRvUmdiU3RyaW5nKCl9LF9lLnJhbmRvbT1mdW5jdGlvbigpe3JldHVybiBfZS5mcm9tUmF0aW8oe3I6TWF0aC5yYW5kb20oKSxnOk1hdGgucmFuZG9tKCksYjpNYXRoLnJhbmRvbSgpfSl9O2Z1bmN0aW9uIG1wKGUsYSl7YT1hPT09MD8wOmF8fDEwO3ZhciByPV9lKGUpLnRvSHNsKCk7cmV0dXJuIHIucy09YS8xMDAsci5zPUwwKHIucyksX2Uocil9ZnVuY3Rpb24gX3AoZSxhKXthPWE9PT0wPzA6YXx8MTA7dmFyIHI9X2UoZSkudG9Ic2woKTtyZXR1cm4gci5zKz1hLzEwMCxyLnM9TDAoci5zKSxfZShyKX1mdW5jdGlvbiBrcChlKXtyZXR1cm4gX2UoZSkuZGVzYXR1cmF0ZSgxMDApfWZ1bmN0aW9uIHdwKGUsYSl7YT1hPT09MD8wOmF8fDEwO3ZhciByPV9lKGUpLnRvSHNsKCk7cmV0dXJuIHIubCs9YS8xMDAsci5sPUwwKHIubCksX2Uocil9ZnVuY3Rpb24gRnAoZSxhKXthPWE9PT0wPzA6YXx8MTA7dmFyIHI9X2UoZSkudG9SZ2IoKTtyZXR1cm4gci5yPU1hdGgubWF4KDAsTWF0aC5taW4oMjU1LHIuci1NYXRoLnJvdW5kKDI1NSotKGEvMTAwKSkpKSxyLmc9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsci5nLU1hdGgucm91bmQoMjU1Ki0oYS8xMDApKSkpLHIuYj1NYXRoLm1heCgwLE1hdGgubWluKDI1NSxyLmItTWF0aC5yb3VuZCgyNTUqLShhLzEwMCkpKSksX2Uocil9ZnVuY3Rpb24gVHAoZSxhKXthPWE9PT0wPzA6YXx8MTA7dmFyIHI9X2UoZSkudG9Ic2woKTtyZXR1cm4gci5sLT1hLzEwMCxyLmw9TDAoci5sKSxfZShyKX1mdW5jdGlvbiBFcChlLGEpe3ZhciByPV9lKGUpLnRvSHNsKCksdD0oci5oK2EpJTM2MDtyZXR1cm4gci5oPXQ8MD8zNjArdDp0LF9lKHIpfWZ1bmN0aW9uIEFwKGUpe3ZhciBhPV9lKGUpLnRvSHNsKCk7cmV0dXJuIGEuaD0oYS5oKzE4MCklMzYwLF9lKGEpfWZ1bmN0aW9uIEtmKGUsYSl7aWYoaXNOYU4oYSl8fGE8PTApdGhyb3cgbmV3IEVycm9yKCJBcmd1bWVudCB0byBwb2x5YWQgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciIpO2Zvcih2YXIgcj1fZShlKS50b0hzbCgpLHQ9W19lKGUpXSxuPTM2MC9hLGk9MTtpPGE7aSsrKXQucHVzaChfZSh7aDooci5oK2kqbiklMzYwLHM6ci5zLGw6ci5sfSkpO3JldHVybiB0fWZ1bmN0aW9uIHlwKGUpe3ZhciBhPV9lKGUpLnRvSHNsKCkscj1hLmg7cmV0dXJuW19lKGUpLF9lKHtoOihyKzcyKSUzNjAsczphLnMsbDphLmx9KSxfZSh7aDoocisyMTYpJTM2MCxzOmEucyxsOmEubH0pXX1mdW5jdGlvbiBTcChlLGEscil7YT1hfHw2LHI9cnx8MzA7dmFyIHQ9X2UoZSkudG9Ic2woKSxuPTM2MC9yLGk9W19lKGUpXTtmb3IodC5oPSh0LmgtKG4qYT4+MSkrNzIwKSUzNjA7LS1hOyl0Lmg9KHQuaCtuKSUzNjAsaS5wdXNoKF9lKHQpKTtyZXR1cm4gaX1mdW5jdGlvbiBDcChlLGEpe2E9YXx8Njtmb3IodmFyIHI9X2UoZSkudG9Ic3YoKSx0PXIuaCxuPXIucyxpPXIudixmPVtdLHM9MS9hO2EtLTspZi5wdXNoKF9lKHtoOnQsczpuLHY6aX0pKSxpPShpK3MpJTE7cmV0dXJuIGZ9X2UubWl4PWZ1bmN0aW9uKGUsYSxyKXtyPXI9PT0wPzA6cnx8NTA7dmFyIHQ9X2UoZSkudG9SZ2IoKSxuPV9lKGEpLnRvUmdiKCksaT1yLzEwMCxmPXtyOihuLnItdC5yKSppK3QucixnOihuLmctdC5nKSppK3QuZyxiOihuLmItdC5iKSppK3QuYixhOihuLmEtdC5hKSppK3QuYX07cmV0dXJuIF9lKGYpfSxfZS5yZWFkYWJpbGl0eT1mdW5jdGlvbihlLGEpe3ZhciByPV9lKGUpLHQ9X2UoYSk7cmV0dXJuKE1hdGgubWF4KHIuZ2V0THVtaW5hbmNlKCksdC5nZXRMdW1pbmFuY2UoKSkrLjA1KS8oTWF0aC5taW4oci5nZXRMdW1pbmFuY2UoKSx0LmdldEx1bWluYW5jZSgpKSsuMDUpfSxfZS5pc1JlYWRhYmxlPWZ1bmN0aW9uKGUsYSxyKXt2YXIgdD1fZS5yZWFkYWJpbGl0eShlLGEpLG4saTtzd2l0Y2goaT0hMSxuPU5wKHIpLG4ubGV2ZWwrbi5zaXplKXtjYXNlIkFBc21hbGwiOmNhc2UiQUFBbGFyZ2UiOmk9dD49NC41O2JyZWFrO2Nhc2UiQUFsYXJnZSI6aT10Pj0zO2JyZWFrO2Nhc2UiQUFBc21hbGwiOmk9dD49NzticmVha31yZXR1cm4gaX0sX2UubW9zdFJlYWRhYmxlPWZ1bmN0aW9uKGUsYSxyKXt2YXIgdD1udWxsLG49MCxpLGYscyxjO3I9cnx8e30sZj1yLmluY2x1ZGVGYWxsYmFja0NvbG9ycyxzPXIubGV2ZWwsYz1yLnNpemU7Zm9yKHZhciBvPTA7bzxhLmxlbmd0aDtvKyspaT1fZS5yZWFkYWJpbGl0eShlLGFbb10pLGk+biYmKG49aSx0PV9lKGFbb10pKTtyZXR1cm4gX2UuaXNSZWFkYWJsZShlLHQse2xldmVsOnMsc2l6ZTpjfSl8fCFmP3Q6KHIuaW5jbHVkZUZhbGxiYWNrQ29sb3JzPSExLF9lLm1vc3RSZWFkYWJsZShlLFsiI2ZmZiIsIiMwMDAiXSxyKSl9O3ZhciBQbj1fZS5uYW1lcz17YWxpY2VibHVlOiJmMGY4ZmYiLGFudGlxdWV3aGl0ZToiZmFlYmQ3IixhcXVhOiIwZmYiLGFxdWFtYXJpbmU6IjdmZmZkNCIsYXp1cmU6ImYwZmZmZiIsYmVpZ2U6ImY1ZjVkYyIsYmlzcXVlOiJmZmU0YzQiLGJsYWNrOiIwMDAiLGJsYW5jaGVkYWxtb25kOiJmZmViY2QiLGJsdWU6IjAwZiIsYmx1ZXZpb2xldDoiOGEyYmUyIixicm93bjoiYTUyYTJhIixidXJseXdvb2Q6ImRlYjg4NyIsYnVybnRzaWVubmE6ImVhN2U1ZCIsY2FkZXRibHVlOiI1ZjllYTAiLGNoYXJ0cmV1c2U6IjdmZmYwMCIsY2hvY29sYXRlOiJkMjY5MWUiLGNvcmFsOiJmZjdmNTAiLGNvcm5mbG93ZXJibHVlOiI2NDk1ZWQiLGNvcm5zaWxrOiJmZmY4ZGMiLGNyaW1zb246ImRjMTQzYyIsY3lhbjoiMGZmIixkYXJrYmx1ZToiMDAwMDhiIixkYXJrY3lhbjoiMDA4YjhiIixkYXJrZ29sZGVucm9kOiJiODg2MGIiLGRhcmtncmF5OiJhOWE5YTkiLGRhcmtncmVlbjoiMDA2NDAwIixkYXJrZ3JleToiYTlhOWE5IixkYXJra2hha2k6ImJkYjc2YiIsZGFya21hZ2VudGE6IjhiMDA4YiIsZGFya29saXZlZ3JlZW46IjU1NmIyZiIsZGFya29yYW5nZToiZmY4YzAwIixkYXJrb3JjaGlkOiI5OTMyY2MiLGRhcmtyZWQ6IjhiMDAwMCIsZGFya3NhbG1vbjoiZTk5NjdhIixkYXJrc2VhZ3JlZW46IjhmYmM4ZiIsZGFya3NsYXRlYmx1ZToiNDgzZDhiIixkYXJrc2xhdGVncmF5OiIyZjRmNGYiLGRhcmtzbGF0ZWdyZXk6IjJmNGY0ZiIsZGFya3R1cnF1b2lzZToiMDBjZWQxIixkYXJrdmlvbGV0OiI5NDAwZDMiLGRlZXBwaW5rOiJmZjE0OTMiLGRlZXBza3libHVlOiIwMGJmZmYiLGRpbWdyYXk6IjY5Njk2OSIsZGltZ3JleToiNjk2OTY5Iixkb2RnZXJibHVlOiIxZTkwZmYiLGZpcmVicmljazoiYjIyMjIyIixmbG9yYWx3aGl0ZToiZmZmYWYwIixmb3Jlc3RncmVlbjoiMjI4YjIyIixmdWNoc2lhOiJmMGYiLGdhaW5zYm9ybzoiZGNkY2RjIixnaG9zdHdoaXRlOiJmOGY4ZmYiLGdvbGQ6ImZmZDcwMCIsZ29sZGVucm9kOiJkYWE1MjAiLGdyYXk6IjgwODA4MCIsZ3JlZW46IjAwODAwMCIsZ3JlZW55ZWxsb3c6ImFkZmYyZiIsZ3JleToiODA4MDgwIixob25leWRldzoiZjBmZmYwIixob3RwaW5rOiJmZjY5YjQiLGluZGlhbnJlZDoiY2Q1YzVjIixpbmRpZ286IjRiMDA4MiIsaXZvcnk6ImZmZmZmMCIsa2hha2k6ImYwZTY4YyIsbGF2ZW5kZXI6ImU2ZTZmYSIsbGF2ZW5kZXJibHVzaDoiZmZmMGY1IixsYXduZ3JlZW46IjdjZmMwMCIsbGVtb25jaGlmZm9uOiJmZmZhY2QiLGxpZ2h0Ymx1ZToiYWRkOGU2IixsaWdodGNvcmFsOiJmMDgwODAiLGxpZ2h0Y3lhbjoiZTBmZmZmIixsaWdodGdvbGRlbnJvZHllbGxvdzoiZmFmYWQyIixsaWdodGdyYXk6ImQzZDNkMyIsbGlnaHRncmVlbjoiOTBlZTkwIixsaWdodGdyZXk6ImQzZDNkMyIsbGlnaHRwaW5rOiJmZmI2YzEiLGxpZ2h0c2FsbW9uOiJmZmEwN2EiLGxpZ2h0c2VhZ3JlZW46IjIwYjJhYSIsbGlnaHRza3libHVlOiI4N2NlZmEiLGxpZ2h0c2xhdGVncmF5OiI3ODkiLGxpZ2h0c2xhdGVncmV5OiI3ODkiLGxpZ2h0c3RlZWxibHVlOiJiMGM0ZGUiLGxpZ2h0eWVsbG93OiJmZmZmZTAiLGxpbWU6IjBmMCIsbGltZWdyZWVuOiIzMmNkMzIiLGxpbmVuOiJmYWYwZTYiLG1hZ2VudGE6ImYwZiIsbWFyb29uOiI4MDAwMDAiLG1lZGl1bWFxdWFtYXJpbmU6IjY2Y2RhYSIsbWVkaXVtYmx1ZToiMDAwMGNkIixtZWRpdW1vcmNoaWQ6ImJhNTVkMyIsbWVkaXVtcHVycGxlOiI5MzcwZGIiLG1lZGl1bXNlYWdyZWVuOiIzY2IzNzEiLG1lZGl1bXNsYXRlYmx1ZToiN2I2OGVlIixtZWRpdW1zcHJpbmdncmVlbjoiMDBmYTlhIixtZWRpdW10dXJxdW9pc2U6IjQ4ZDFjYyIsbWVkaXVtdmlvbGV0cmVkOiJjNzE1ODUiLG1pZG5pZ2h0Ymx1ZToiMTkxOTcwIixtaW50Y3JlYW06ImY1ZmZmYSIsbWlzdHlyb3NlOiJmZmU0ZTEiLG1vY2Nhc2luOiJmZmU0YjUiLG5hdmFqb3doaXRlOiJmZmRlYWQiLG5hdnk6IjAwMDA4MCIsb2xkbGFjZToiZmRmNWU2IixvbGl2ZToiODA4MDAwIixvbGl2ZWRyYWI6IjZiOGUyMyIsb3JhbmdlOiJmZmE1MDAiLG9yYW5nZXJlZDoiZmY0NTAwIixvcmNoaWQ6ImRhNzBkNiIscGFsZWdvbGRlbnJvZDoiZWVlOGFhIixwYWxlZ3JlZW46Ijk4ZmI5OCIscGFsZXR1cnF1b2lzZToiYWZlZWVlIixwYWxldmlvbGV0cmVkOiJkYjcwOTMiLHBhcGF5YXdoaXA6ImZmZWZkNSIscGVhY2hwdWZmOiJmZmRhYjkiLHBlcnU6ImNkODUzZiIscGluazoiZmZjMGNiIixwbHVtOiJkZGEwZGQiLHBvd2RlcmJsdWU6ImIwZTBlNiIscHVycGxlOiI4MDAwODAiLHJlYmVjY2FwdXJwbGU6IjY2MzM5OSIscmVkOiJmMDAiLHJvc3licm93bjoiYmM4ZjhmIixyb3lhbGJsdWU6IjQxNjllMSIsc2FkZGxlYnJvd246IjhiNDUxMyIsc2FsbW9uOiJmYTgwNzIiLHNhbmR5YnJvd246ImY0YTQ2MCIsc2VhZ3JlZW46IjJlOGI1NyIsc2Vhc2hlbGw6ImZmZjVlZSIsc2llbm5hOiJhMDUyMmQiLHNpbHZlcjoiYzBjMGMwIixza3libHVlOiI4N2NlZWIiLHNsYXRlYmx1ZToiNmE1YWNkIixzbGF0ZWdyYXk6IjcwODA5MCIsc2xhdGVncmV5OiI3MDgwOTAiLHNub3c6ImZmZmFmYSIsc3ByaW5nZ3JlZW46IjAwZmY3ZiIsc3RlZWxibHVlOiI0NjgyYjQiLHRhbjoiZDJiNDhjIix0ZWFsOiIwMDgwODAiLHRoaXN0bGU6ImQ4YmZkOCIsdG9tYXRvOiJmZjYzNDciLHR1cnF1b2lzZToiNDBlMGQwIix2aW9sZXQ6ImVlODJlZSIsd2hlYXQ6ImY1ZGViMyIsd2hpdGU6ImZmZiIsd2hpdGVzbW9rZToiZjVmNWY1Iix5ZWxsb3c6ImZmMCIseWVsbG93Z3JlZW46IjlhY2QzMiJ9LGJwPV9lLmhleE5hbWVzPUlwKFBuKTtmdW5jdGlvbiBJcChlKXt2YXIgYT17fTtmb3IodmFyIHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYoYVtlW3JdXT1yKTtyZXR1cm4gYX1mdW5jdGlvbiBqZihlKXtyZXR1cm4gZT1wYXJzZUZsb2F0KGUpLChpc05hTihlKXx8ZTwwfHxlPjEpJiYoZT0xKSxlfWZ1bmN0aW9uIEtlKGUsYSl7RHAoZSkmJihlPSIxMDAlIik7dmFyIHI9UnAoZSk7cmV0dXJuIGU9TWF0aC5taW4oYSxNYXRoLm1heCgwLHBhcnNlRmxvYXQoZSkpKSxyJiYoZT1wYXJzZUludChlKmEsMTApLzEwMCksTWF0aC5hYnMoZS1hKTwxZS02PzE6ZSVhL3BhcnNlRmxvYXQoYSl9ZnVuY3Rpb24gTDAoZSl7cmV0dXJuIE1hdGgubWluKDEsTWF0aC5tYXgoMCxlKSl9ZnVuY3Rpb24gTHIoZSl7cmV0dXJuIHBhcnNlSW50KGUsMTYpfWZ1bmN0aW9uIERwKGUpe3JldHVybiB0eXBlb2YgZT09InN0cmluZyImJmUuaW5kZXhPZigiLiIpIT0tMSYmcGFyc2VGbG9hdChlKT09PTF9ZnVuY3Rpb24gUnAoZSl7cmV0dXJuIHR5cGVvZiBlPT0ic3RyaW5nIiYmZS5pbmRleE9mKCIlIikhPS0xfWZ1bmN0aW9uIGVhKGUpe3JldHVybiBlLmxlbmd0aD09MT8iMCIrZToiIitlfWZ1bmN0aW9uIHF0KGUpe3JldHVybiBlPD0xJiYoZT1lKjEwMCsiJSIpLGV9ZnVuY3Rpb24gWWYoZSl7cmV0dXJuIE1hdGgucm91bmQocGFyc2VGbG9hdChlKSoyNTUpLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBKZihlKXtyZXR1cm4gTHIoZSkvMjU1fXZhciByYT1mdW5jdGlvbigpe3ZhciBlPSJbLVxcK10/XFxkKyU/IixhPSJbLVxcK10/XFxkKlxcLlxcZCslPyIscj0iKD86IithKyIpfCg/OiIrZSsiKSIsdD0iW1xcc3xcXChdKygiK3IrIilbLHxcXHNdKygiK3IrIilbLHxcXHNdKygiK3IrIilcXHMqXFwpPyIsbj0iW1xcc3xcXChdKygiK3IrIilbLHxcXHNdKygiK3IrIilbLHxcXHNdKygiK3IrIilbLHxcXHNdKygiK3IrIilcXHMqXFwpPyI7cmV0dXJue0NTU19VTklUOm5ldyBSZWdFeHAocikscmdiOm5ldyBSZWdFeHAoInJnYiIrdCkscmdiYTpuZXcgUmVnRXhwKCJyZ2JhIituKSxoc2w6bmV3IFJlZ0V4cCgiaHNsIit0KSxoc2xhOm5ldyBSZWdFeHAoImhzbGEiK24pLGhzdjpuZXcgUmVnRXhwKCJoc3YiK3QpLGhzdmE6bmV3IFJlZ0V4cCgiaHN2YSIrbiksaGV4MzovXiM/KFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pJC8saGV4NjovXiM/KFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pJC8saGV4NDovXiM/KFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KSQvLGhleDg6L14jPyhbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkkL319KCk7ZnVuY3Rpb24gd2EoZSl7cmV0dXJuISFyYS5DU1NfVU5JVC5leGVjKGUpfWZ1bmN0aW9uIE9wKGUpe2U9ZS5yZXBsYWNlKHVwLCIiKS5yZXBsYWNlKGhwLCIiKS50b0xvd2VyQ2FzZSgpO3ZhciBhPSExO2lmKFBuW2VdKWU9UG5bZV0sYT0hMDtlbHNlIGlmKGU9PSJ0cmFuc3BhcmVudCIpcmV0dXJue3I6MCxnOjAsYjowLGE6MCxmb3JtYXQ6Im5hbWUifTt2YXIgcjtyZXR1cm4ocj1yYS5yZ2IuZXhlYyhlKSk/e3I6clsxXSxnOnJbMl0sYjpyWzNdfToocj1yYS5yZ2JhLmV4ZWMoZSkpP3tyOnJbMV0sZzpyWzJdLGI6clszXSxhOnJbNF19OihyPXJhLmhzbC5leGVjKGUpKT97aDpyWzFdLHM6clsyXSxsOnJbM119OihyPXJhLmhzbGEuZXhlYyhlKSk/e2g6clsxXSxzOnJbMl0sbDpyWzNdLGE6cls0XX06KHI9cmEuaHN2LmV4ZWMoZSkpP3toOnJbMV0sczpyWzJdLHY6clszXX06KHI9cmEuaHN2YS5leGVjKGUpKT97aDpyWzFdLHM6clsyXSx2OnJbM10sYTpyWzRdfToocj1yYS5oZXg4LmV4ZWMoZSkpP3tyOkxyKHJbMV0pLGc6THIoclsyXSksYjpMcihyWzNdKSxhOkpmKHJbNF0pLGZvcm1hdDphPyJuYW1lIjoiaGV4OCJ9OihyPXJhLmhleDYuZXhlYyhlKSk/e3I6THIoclsxXSksZzpMcihyWzJdKSxiOkxyKHJbM10pLGZvcm1hdDphPyJuYW1lIjoiaGV4In06KHI9cmEuaGV4NC5leGVjKGUpKT97cjpMcihyWzFdKyIiK3JbMV0pLGc6THIoclsyXSsiIityWzJdKSxiOkxyKHJbM10rIiIrclszXSksYTpKZihyWzRdKyIiK3JbNF0pLGZvcm1hdDphPyJuYW1lIjoiaGV4OCJ9OihyPXJhLmhleDMuZXhlYyhlKSk/e3I6THIoclsxXSsiIityWzFdKSxnOkxyKHJbMl0rIiIrclsyXSksYjpMcihyWzNdKyIiK3JbM10pLGZvcm1hdDphPyJuYW1lIjoiaGV4In06ITF9ZnVuY3Rpb24gTnAoZSl7dmFyIGEscjtyZXR1cm4gZT1lfHx7bGV2ZWw6IkFBIixzaXplOiJzbWFsbCJ9LGE9KGUubGV2ZWx8fCJBQSIpLnRvVXBwZXJDYXNlKCkscj0oZS5zaXplfHwic21hbGwiKS50b0xvd2VyQ2FzZSgpLGEhPT0iQUEiJiZhIT09IkFBQSImJihhPSJBQSIpLHIhPT0ic21hbGwiJiZyIT09ImxhcmdlIiYmKHI9InNtYWxsIikse2xldmVsOmEsc2l6ZTpyfX1jb25zdCBNcD1bIkZGMDAwMDAwIiwiRkZGRkZGRkYiLCJGRkZGMDAwMCIsIkZGMDBGRjAwIiwiRkYwMDAwRkYiLCJGRkZGRkYwMCIsIkZGRkYwMEZGIiwiRkYwMEZGRkYiLCJGRjAwMDAwMCIsIkZGRkZGRkZGIiwiRkZGRjAwMDAiLCJGRjAwRkYwMCIsIkZGMDAwMEZGIiwiRkZGRkZGMDAiLCJGRkZGMDBGRiIsIkZGMDBGRkZGIiwiRkY4MDAwMDAiLCJGRjAwODAwMCIsIkZGMDAwMDgwIiwiRkY4MDgwMDAiLCJGRjgwMDA4MCIsIkZGMDA4MDgwIiwiRkZDMEMwQzAiLCJGRjgwODA4MCIsIkZGOTk5OUZGIiwiRkY5OTMzNjYiLCJGRkZGRkZDQyIsIkZGQ0NGRkZGIiwiRkY2NjAwNjYiLCJGRkZGODA4MCIsIkZGMDA2NkNDIiwiRkZDQ0NDRkYiLCJGRjAwMDA4MCIsIkZGRkYwMEZGIiwiRkZGRkZGMDAiLCJGRjAwRkZGRiIsIkZGODAwMDgwIiwiRkY4MDAwMDAiLCJGRjAwODA4MCIsIkZGMDAwMEZGIiwiRkYwMENDRkYiLCJGRkNDRkZGRiIsIkZGQ0NGRkNDIiwiRkZGRkZGOTkiLCJGRjk5Q0NGRiIsIkZGRkY5OUNDIiwiRkZDQzk5RkYiLCJGRkZGQ0M5OSIsIkZGMzM2NkZGIiwiRkYzM0NDQ0MiLCJGRjk5Q0MwMCIsIkZGRkZDQzAwIiwiRkZGRjk5MDAiLCJGRkZGNjYwMCIsIkZGNjY2Njk5IiwiRkY5Njk2OTYiLCJGRjAwMzM2NiIsIkZGMzM5OTY2IiwiRkYwMDMzMDAiLCJGRjMzMzMwMCIsIkZGOTkzMzAwIiwiRkY5OTMzNjYiLCJGRjMzMzM5OSIsIkZGMzMzMzMzIl0sRGE9MjQwLExuPTI1NTtmdW5jdGlvbiBQcChlLGEscil7Y29uc3QgdD1NYXRoLm1heChlLGEsciksbj1NYXRoLm1pbihlLGEsciksaT10K24sZj10LW4scz1pLzI7bGV0IGMsbztpZihuPT10KXJldHVyblswLHMsMF07czw9LjU/bz1mL2k6bz1mLygyLWkpO2NvbnN0IGw9KHQtZSkvZix1PSh0LWEpL2YseD0odC1yKS9mO3JldHVybiBlPT10P2M9eC11OmE9PT10P2M9MitsLXg6Yz00K3UtbCxjPWMvNiUxLFtjLHMsb119ZnVuY3Rpb24gTHAoZSl7ZS5sZW5ndGg+NiYmKGU9ZS5zdWJzdHJpbmcoMikpO2NvbnN0IGE9cGFyc2VJbnQoZS5zbGljZSgwLDIpLDE2KS9MbixyPXBhcnNlSW50KGUuc2xpY2UoMiw0KSwxNikvTG4sdD1wYXJzZUludChlLnNsaWNlKDQsNiksMTYpL0xuLFtuLGksZl09UHAoYSxyLHQpO3JldHVybltNYXRoLnJvdW5kKG4qRGEpLE1hdGgucm91bmQoaSpEYSksTWF0aC5yb3VuZChmKkRhKV19ZnVuY3Rpb24gQnAoZSxhLHIpe3JldHVybiBfZSh7aDplL0RhKjM2MCxzOnIvRGEsbDphL0RhfSkudG9IZXgoKS50b1VwcGVyQ2FzZSgpfWZ1bmN0aW9uIFVwKGUsYSl7cmV0dXJuIGU8PTA/TWF0aC5yb3VuZChhKigxK2UpKTpNYXRoLnJvdW5kKGEqKDEtZSkrKERhLURhKigxLWUpKSl9ZnVuY3Rpb24gSHAoZSxhKXtpZighZSlyZXR1cm4gZTtjb25zdFtyLHQsbl09THAoZSk7cmV0dXJuYEZGJHtCcChyLFVwKGEsdCksbil9YH1jb25zdCBXcD04LjQzLFZwPTE1LEdwPSIjMjAyMTI0IixYcD05NTI1LHpwPTQ4MCwkcD0yODgsS3A9MjQsanA9OCxLcj1lPT50eXBlb2YgZT09Im51bWJlciImJk51bWJlci5pc0Zpbml0ZShlKT9lOnZvaWQgMCxZcD0oKT0+e2NvbnN0IGU9aWEuY29sX3dpZHRoX3RvX3B4LGE9dHlwZW9mIGU9PSJmdW5jdGlvbiI/ZShXcCk6dm9pZCAwO3JldHVybiBNYXRoLmNlaWwoS3IoYSk/PzY0KX0sSnA9e3Jvd0hlaWdodDooKCk9Pntjb25zdCBlPWlhLnJvd19oZWlnaHRfdG9fcHgsYT10eXBlb2YgZT09ImZ1bmN0aW9uIj9lKFZwKTp2b2lkIDA7cmV0dXJuIE1hdGguY2VpbChLcihhKT8/MjApfSkoKSxjb2xXaWR0aDpZcCgpfSxacD0oZSxhKT0+YCR7ZX0tJHthfWAsWmY9ZT0+ZT9lLnchPT12b2lkIDAmJmUudyE9PW51bGw/YCR7ZS53fWA6ZS52PT09dm9pZCAwfHxlLnY9PT1udWxsPyIiOmUudD09PSJkIiYmZS52IGluc3RhbmNlb2YgRGF0ZT9lLnYudG9Mb2NhbGVEYXRlU3RyaW5nKCk6YCR7ZS52fWA6IiIscXA9ZT0+e2lmKCFlKXJldHVybjtpZihlLmhpZGRlbilyZXR1cm4gMDtjb25zdCBhPUtyKGUud3B4KTtpZihhIT09dm9pZCAwJiZhPj0wKXJldHVybiBNYXRoLmNlaWwoYSk7Y29uc3Qgcj1LcihlLndpZHRoKTtpZihyPT09MClyZXR1cm4gMDtpZihyIT09dm9pZCAwJiZyPjApe2NvbnN0IG49aWEuY29sX3dpZHRoX3RvX3B4LGk9dHlwZW9mIG49PSJmdW5jdGlvbiI/S3IobihyKSk6dm9pZCAwO3JldHVybiBNYXRoLmNlaWwoaSE9PXZvaWQgMD9pOnIqKGUuTURXfHw3KSl9Y29uc3QgdD1LcihlLndjaCk7aWYodD09PTApcmV0dXJuIDA7aWYodCE9PXZvaWQgMCYmdD4wKXJldHVybiBNYXRoLmNlaWwodCooZS5NRFd8fDcpKzUpfSxRcD0oZSxhLHIpPT50eXBlb2YgZT09Im51bWJlciI/ZTplPy5bYV0/P3IsZ3Q9ZT0+KGV8fDApL1hwLGVnPWU9PmU/ZS5oaWRkZW4/ITA6KEtyKGUud3B4KT8/LTEpPj0wfHwoS3IoZS53aWR0aCk/Py0xKT49MHx8KEtyKGUud2NoKT8/LTEpPj0wOiExLHFmPWU9PntpZighZSlyZXR1cm47aWYoZS5oaWRkZW4pcmV0dXJuIDA7Y29uc3QgYT1LcihlLmhweCk7aWYoYSE9PXZvaWQgMCYmYT49MClyZXR1cm4gTWF0aC5jZWlsKGEpO2NvbnN0IHI9S3IoZS5ocHQpO2lmKHIhPT12b2lkIDAmJnI+PTApe2NvbnN0IHQ9aWEucm93X2hlaWdodF90b19weCxuPXR5cGVvZiB0PT0iZnVuY3Rpb24iP0tyKHQocikpOnZvaWQgMDtyZXR1cm4gTWF0aC5jZWlsKG4/P3IqOTYvNzIpfX0scmc9ZT0+e3N3aXRjaChgJHtlfHwiIn1gKXtjYXNlImxlZnQiOnJldHVybiJMZWZ0IjtjYXNlImNlbnRlciI6Y2FzZSJjZW50ZXJDb250aW51b3VzIjpjYXNlImRpc3RyaWJ1dGVkIjpjYXNlImp1c3RpZnkiOnJldHVybiJDZW50ZXIiO2Nhc2UicmlnaHQiOnJldHVybiJSaWdodCI7ZGVmYXVsdDpyZXR1cm59fSxhZz1lPT57c3dpdGNoKGAke2V8fCIifWApe2Nhc2UidG9wIjpyZXR1cm4iVG9wIjtjYXNlImNlbnRlciI6Y2FzZSJtaWRkbGUiOmNhc2UiZGlzdHJpYnV0ZWQiOmNhc2UianVzdGlmeSI6cmV0dXJuIk1pZGRsZSI7Y2FzZSJib3R0b20iOnJldHVybiJCb3R0b20iO2RlZmF1bHQ6cmV0dXJufX0sUWY9ZT0+e2lmKCFlKXJldHVybiIiO2NvbnN0IGE9W3JnKGUuaG9yaXpvbnRhbCksYWcoZS52ZXJ0aWNhbCldLmZpbHRlcihCb29sZWFuKS5tYXAocj0+YGh0JHtyfWApO3JldHVybiBlLndyYXBUZXh0JiZhLnB1c2goImh0V3JhcCIpLGUuc2hyaW5rVG9GaXQmJmEucHVzaCgiaHRTaHJpbmsiKSxhLmpvaW4oIiAiKX0sQm49ZT0+e2lmKCFlKXJldHVybjtjb25zdCBhPWUucmF3X3JnYiYmdHlwZW9mIGUudGludD09Im51bWJlciI/SHAoZS5yYXdfcmdiLGUudGludCk6dm9pZCAwLHI9ZS5yZ2J8fGF8fGUucmF3X3JnYjtpZih0eXBlb2Ygcj09InN0cmluZyImJnIpe2NvbnN0IG49ci5zdGFydHNXaXRoKCIjIik/ci5zbGljZSgxKTpyO3JldHVybmAjJHtuLmxlbmd0aD42P24uc2xpY2UoLTYpOm59YH1jb25zdCB0PXR5cGVvZiBlLmluZGV4ZWQ9PSJudW1iZXIiP2UuaW5kZXhlZDplLmluZGV4O2lmKHR5cGVvZiB0PT0ibnVtYmVyIil7Y29uc3Qgbj1NcFt0XTtpZihuKXJldHVybmAjJHtuLnNsaWNlKC02KX1gfX0sdGc9ZT0+ZT8odHlwZW9mIGUuaW5kZXhlZD09Im51bWJlciI/ZS5pbmRleGVkOmUuaW5kZXgpPT09MzI3Njc6ITEsbmc9ZT0+dGcoZSk/R3A6Qm4oZSksaWc9ZT0+e3N3aXRjaChlKXtjYXNlImhhaXIiOnJldHVybiIwLjVweCI7Y2FzZSJtZWRpdW0iOmNhc2UibWVkaXVtRGFzaGVkIjpjYXNlIm1lZGl1bURhc2hEb3QiOmNhc2UibWVkaXVtRGFzaERvdERvdCI6cmV0dXJuIjJweCI7Y2FzZSJ0aGljayI6Y2FzZSJkb3VibGUiOnJldHVybiIzcHgiO2RlZmF1bHQ6cmV0dXJuIjFweCJ9fSxzZz1lPT57c3dpdGNoKGUpe2Nhc2UiZGFzaGVkIjpjYXNlIm1lZGl1bURhc2hlZCI6Y2FzZSJkYXNoRG90IjpjYXNlIm1lZGl1bURhc2hEb3QiOmNhc2UiZGFzaERvdERvdCI6Y2FzZSJtZWRpdW1EYXNoRG90RG90IjpjYXNlInNsYW50RGFzaERvdCI6cmV0dXJuImRhc2hlZCI7Y2FzZSJkb3R0ZWQiOnJldHVybiJkb3R0ZWQiO2Nhc2UiZG91YmxlIjpyZXR1cm4iZG91YmxlIjtkZWZhdWx0OnJldHVybiJzb2xpZCJ9fSxmZz0oLi4uZSk9Pntjb25zdCBhPXt9O3JldHVybiBlLmZvckVhY2gocj0+e3ImJk9iamVjdC5lbnRyaWVzKHIpLmZvckVhY2goKFt0LG5dKT0+e2lmKG4mJnR5cGVvZiBuPT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkobikpe2FbdF09ey4uLmFbdF0mJnR5cGVvZiBhW3RdPT0ib2JqZWN0Ij9hW3RdOnt9LC4uLm59O3JldHVybn1hW3RdPW59KX0pLE9iamVjdC5rZXlzKGEpLmxlbmd0aD9hOnZvaWQgMH0sY2c9ZT0+e2NvbnN0IGE9e30scj1lPy5maWxsfHx7fSx0PUJuKGU/LmZnQ29sb3J8fHIuZmdDb2xvcnx8ZT8uYmdDb2xvcnx8ci5iZ0NvbG9yKSxuPWU/LnBhdHRlcm5UeXBlfHxyLnBhdHRlcm5UeXBlO3QmJm4hPT0ibm9uZSImJihhLmJhY2tncm91bmRDb2xvcj10KTtjb25zdCBpPWU/LmZvbnR8fHt9LGY9bmcoaS5jb2xvcnx8ZT8uY29sb3IpO2YmJihhLmNvbG9yPWYpLChpLml0YWxpY3x8ZT8uaXRhbGljKSYmKGEuZm9udFN0eWxlPSJpdGFsaWMiKSwoaS5ib2xkfHxlPy5ib2xkKSYmKGEuZm9udFdlaWdodD0iYm9sZCIpO2NvbnN0IHM9aS5zenx8ZT8uc3o7cyYmKGEuZm9udFNpemU9YCR7c31weGApO2NvbnN0IGM9aS5uYW1lfHxlPy5uYW1lO2MmJihhLmZvbnRGYW1pbHk9Yyk7Y29uc3Qgbz1lPy5ib3JkZXI7cmV0dXJuIG8mJlsidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0Il0uZm9yRWFjaChsPT57Y29uc3QgdT1vW2xdO2lmKCF1Py5zdHlsZXx8dS5zdHlsZT09PSJub25lIilyZXR1cm47Y29uc3QgeD1gYm9yZGVyJHtsLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7bC5zbGljZSgxKX1gO2FbYCR7eH1XaWR0aGBdPWlnKHUuc3R5bGUpLGFbYCR7eH1TdHlsZWBdPXNnKHUuc3R5bGUpLGFbYCR7eH1Db2xvcmBdPUJuKHUuY29sb3IpfHwiIzAwMDAwMCJ9KSxPYmplY3Qua2V5cyhhKS5sZW5ndGg/YTp2b2lkIDB9LG9nPShlLGEpPT57Zm9yKGNvbnN0IHIgb2YgZSlmb3IobGV0IHQ9MDt0PGE7dCs9MSkoclt0XT09PXZvaWQgMHx8clt0XT09PW51bGwpJiYoclt0XT0iIik7cmV0dXJuIGV9O2NsYXNzIEIwe193cztfc3RhcnRSb3c7X3BhZ2VTaXplO190b3RhbFJvd3M7X3RvdGFsQ29scztzdGF0aWMgZGVmYXVsdHM9SnA7X2RhdGE7X2NlbGw7X21lcmdlO19yb3dIZWlnaHRzO19jb2xXaWR0aHM7X2F1dG9GaXRDb2x1bW5zO19jb2x1bW5zO19zdHJ1Y3R1cmU7X21ldGE7cmFuZ2U7c3RhdGljIGNyZWF0ZShhLHI9e30pe3JldHVybiBuZXcgQjAoYSxyKX1jb25zdHJ1Y3RvcihhLHIpe3RoaXMuX3dzPWEsdGhpcy5fc3RhcnRSb3c9TWF0aC5tYXgoci5zdGFydFJvd3x8MCwwKSx0aGlzLl9wYWdlU2l6ZT1NYXRoLm1heChyLnBhZ2VTaXplfHw1MDAsMSksdGhpcy5fdG90YWxSb3dzPXIudG90YWxSb3dzLHRoaXMuX3RvdGFsQ29scz1yLnRvdGFsQ29scztjb25zdHsiIXJlZiI6dH09YTt0aGlzLnJhbmdlPWlhLmRlY29kZV9yYW5nZSh0fHwiQTEiKX1nZXQgd3MoKXtyZXR1cm4gdGhpcy5fd3N9Z2V0IGRlZmF1bHRzKCl7cmV0dXJuIEIwLmRlZmF1bHRzfWdldCBkYXRhKCl7cmV0dXJuIHRoaXMuX2RhdGE/Pyh0aGlzLl9kYXRhPXRoaXMuZ2V0RGF0YSgpKX1nZXQgY2VsbCgpe3JldHVybiB0aGlzLl9jZWxsPz8odGhpcy5fY2VsbD10aGlzLmdldENlbGwoKSl9Z2V0IG1lcmdlKCl7cmV0dXJuIHRoaXMuX21lcmdlPz8odGhpcy5fbWVyZ2U9dGhpcy5nZXRNZXJnZSgpKX1nZXQgY29sdW1ucygpe3JldHVybiB0aGlzLl9jb2x1bW5zPz8odGhpcy5fY29sdW1ucz10aGlzLmdldENvbHVtbnMoKSl9Z2V0IHN0cnVjdHVyZSgpe3JldHVybiB0aGlzLl9zdHJ1Y3R1cmU/Pyh0aGlzLl9zdHJ1Y3R1cmU9dGhpcy5nZXRTdHJ1Y3R1cmUoKSl9Z2V0IHJvd0hlaWdodHMoKXtyZXR1cm4gdGhpcy5fcm93SGVpZ2h0cz8/KHRoaXMuX3Jvd0hlaWdodHM9dGhpcy5nZXRSb3dIZWlnaHRzKCkpfWdldCBjb2xXaWR0aHMoKXtyZXR1cm4gdGhpcy5fY29sV2lkdGhzPz8odGhpcy5fY29sV2lkdGhzPXRoaXMuZ2V0Q29sV2lkdGhzKCkpfWdldCBtZXRhKCl7cmV0dXJuIHRoaXMuX21ldGE/Pyh0aGlzLl9tZXRhPXtzdGFydFJvdzp0aGlzLnN0YXJ0Um93LGVuZFJvdzp0aGlzLmVuZFJvdyxwYWdlU2l6ZTp0aGlzLl9wYWdlU2l6ZSx0b3RhbFJvd3M6dGhpcy50b3RhbFJvd3MsdG90YWxDb2xzOnRoaXMudG90YWxDb2xzfSl9Z2V0IHRvdGFsUm93cygpe3JldHVybiB0aGlzLl90b3RhbFJvd3M/P3RoaXMucmFuZ2UuZS5yKzF9Z2V0IHRvdGFsQ29scygpe3JldHVybiB0aGlzLl90b3RhbENvbHM/P3RoaXMucmFuZ2UuZS5jKzF9Z2V0IHN0YXJ0Um93KCl7cmV0dXJuIE1hdGgubWluKHRoaXMuX3N0YXJ0Um93LE1hdGgubWF4KHRoaXMudG90YWxSb3dzLTEsMCkpfWdldCBlbmRSb3coKXtyZXR1cm4gTWF0aC5taW4odGhpcy5zdGFydFJvdyt0aGlzLl9wYWdlU2l6ZSx0aGlzLnRvdGFsUm93cyl9Z2V0IGRlbnNlUm93cygpe2NvbnN0IGE9dGhpcy53cztyZXR1cm4gQXJyYXkuaXNBcnJheShhKT9hOkFycmF5LmlzQXJyYXkoYVsiIWRhdGEiXSk/YVsiIWRhdGEiXTp2b2lkIDB9Z2V0Q2VsbEF0KGEscil7Y29uc3QgdD10aGlzLmRlbnNlUm93cztyZXR1cm4gdD90W2FdPy5bcl06dGhpcy53c1tpYS5lbmNvZGVfY2VsbCh7cjphLGM6cn0pXX1nZXRBeGlzT2Zmc2V0KGEscix0KXtsZXQgbj0wO2ZvcihsZXQgaT0wO2k8YTtpKz0xKW4rPVFwKHIsaSx0KTtyZXR1cm4gbn1nZXRNYXJrZXJMZWZ0KGEpe3JldHVybiBhP3RoaXMuZ2V0QXhpc09mZnNldChhLmNvbHx8MCx0aGlzLmdldENvbFdpZHRocygpLHRoaXMuZGVmYXVsdHMuY29sV2lkdGgpK2d0KGEuY29sT2ZmKTowfWdldE1hcmtlclRvcChhKXtyZXR1cm4gYT90aGlzLmdldEF4aXNPZmZzZXQoYS5yb3d8fDAsdGhpcy5nZXRBbGxSb3dIZWlnaHRzKCksdGhpcy5kZWZhdWx0cy5yb3dIZWlnaHQpK2d0KGEucm93T2ZmKTowfWdldEltYWdlcygpe2NvbnN0IHI9dGhpcy53c1siIWRyYXdpbmdzIl0/LmltYWdlc3x8W107aWYoIXIubGVuZ3RoKXJldHVybjtjb25zdCB0PXIuZmxhdE1hcCgobixpKT0+e2NvbnN0IGY9bi5hbmNob3I7aWYoIW4uZGF0YVVSSXx8IWYpcmV0dXJuW107Y29uc3Qgcz1mLmZyb20sYz1zP3RoaXMuZ2V0TWFya2VyTGVmdChzKTpndChmLnBvcz8ueCksbz1zP3RoaXMuZ2V0TWFya2VyVG9wKHMpOmd0KGYucG9zPy55KSxsPWYudG8/dGhpcy5nZXRNYXJrZXJMZWZ0KGYudG8pOmMrZ3QoZi5leHQ/LmN4KSx1PWYudG8/dGhpcy5nZXRNYXJrZXJUb3AoZi50byk6bytndChmLmV4dD8uY3kpO3JldHVyblt7aWQ6bi5pZHx8bi5vYmplY3RJZD8udG9TdHJpbmcoKXx8bi50YXJnZXR8fGBpbWFnZS0ke2krMX1gLHNyYzpuLmRhdGFVUkksY29udGVudFR5cGU6bi5jb250ZW50VHlwZSxsZWZ0Ok1hdGgubWF4KDAsYyksdG9wOk1hdGgubWF4KDAsbyksd2lkdGg6TWF0aC5tYXgoMSxsPmM/bC1jOnpwKSxoZWlnaHQ6TWF0aC5tYXgoMSx1Pm8/dS1vOiRwKSxyb3c6cz8ucm93fHwwLGNvbDpzPy5jb2x8fDB9XX0pO3JldHVybiB0Lmxlbmd0aD90OnZvaWQgMH1nZXRBbGxNZXJnZSgpe2NvbnN0IGE9dGhpcy53cyx7IiFtZXJnZXMiOnI9W119PWE7cmV0dXJuIHIubWFwKHQ9Pntjb25zdHtyOm4sYzppfT10LnMse3I6ZixjOnN9PXQuZTtyZXR1cm57cm93Om4sY29sOmkscm93c3BhbjpmLW4rMSxjb2xzcGFuOnMtaSsxfX0pfWdldERhdGEoKXtjb25zdCBhPVtdLHI9dGhpcy5kZW5zZVJvd3M7Zm9yKGxldCB0PXRoaXMuc3RhcnRSb3c7dDx0aGlzLmVuZFJvdzt0Kz0xKXtjb25zdCBuPXI/Llt0XSxpPW4/bi5zbGljZSgwLHRoaXMudG90YWxDb2xzKS5tYXAoZj0+WmYoZikpOkFycmF5LmZyb20oe2xlbmd0aDp0aGlzLnRvdGFsQ29sc30sKGYscyk9PlpmKHRoaXMuZ2V0Q2VsbEF0KHQscykpKTthLnB1c2goaSl9cmV0dXJuIG9nKGEsdGhpcy50b3RhbENvbHMpfWdldENlbGwoKXtjb25zdCBhPXt9LHsiIWNvbHMiOnI9W10sIiFyb3dzIjp0PVtdfT10aGlzLndzO2ZvcihsZXQgbj10aGlzLnN0YXJ0Um93O248dGhpcy5lbmRSb3c7bis9MSlmb3IobGV0IGk9MDtpPHRoaXMudG90YWxDb2xzO2krPTEpe2NvbnN0IGY9dGhpcy5nZXRDZWxsQXQobixpKSxzPWZnKHJbaV0/LnMsdFtuXT8ucyxmPy5zKSxjPVFmKHM/LmFsaWdubWVudCksbz1jZyhzKTshYyYmIW98fChhW1pwKG4tdGhpcy5zdGFydFJvdyxpKV09ey4uLmM/e2NsYXNzTmFtZTpjfTp7fSxzdHlsZTpvfHx7fX0pfXJldHVybiBhfWdldE1lcmdlKCl7cmV0dXJuIHRoaXMuZ2V0QWxsTWVyZ2UoKS5mbGF0TWFwKGE9PmEucm93K2Eucm93c3Bhbi0xPHRoaXMuc3RhcnRSb3d8fGEucm93Pj10aGlzLmVuZFJvd3x8YS5yb3c8dGhpcy5zdGFydFJvdz9bXTp7Li4uYSxyb3c6YS5yb3ctdGhpcy5zdGFydFJvd30pfWdldFJvd0hlaWdodHMoKXtjb25zdHtyb3dIZWlnaHQ6YX09dGhpcy5kZWZhdWx0cyx7IiFyb3dzIjpyPVtdfT10aGlzLndzLHQ9W107aWYoci5sZW5ndGgmJnRoaXMuZW5kUm93PnRoaXMuc3RhcnRSb3cpZm9yKGxldCBuPXRoaXMuc3RhcnRSb3c7bjx0aGlzLmVuZFJvdztuKz0xKXtjb25zdCBpPXFmKHJbbl0pO2khPT12b2lkIDAmJih0W24tdGhpcy5zdGFydFJvd109aSl9cmV0dXJuIHQubGVuZ3RoPT09MT90WzBdOnQubGVuZ3RoP3Q6YX1nZXRBbGxSb3dIZWlnaHRzKCl7Y29uc3R7IiFyb3dzIjphPVtdfT10aGlzLndzLHI9W107aWYoYS5sZW5ndGgpZm9yKGxldCB0PTA7dDx0aGlzLnRvdGFsUm93czt0Kz0xKXtjb25zdCBuPXFmKGFbdF0pO24hPT12b2lkIDAmJihyW3RdPW4pfXJldHVybiByLmxlbmd0aD9yOnZvaWQgMH1nZXRBdXRvRml0Q29sdW1ucygpe2NvbnN0IGE9aWEuYXV0b19maXRfY29sdW1uc3x8aWEuYXV0b2ZpdF9jb2x1bW5zO2lmKHR5cGVvZiBhPT0iZnVuY3Rpb24iKXRyeXtyZXR1cm4gYSh0aGlzLndzLHtzZXQ6ITEsc2tpcEhpZGRlbjohMCxpbmNsdWRlTWVyZ2VkOiExLG1pblB4OktwLHBhZGRpbmc6anB9KX1jYXRjaChyKXtjb25zb2xlLndhcm4oIltmaWxlLXZpZXdlcl0gRXhjZWwg6Ieq5Yqo5YiX5a696K6h566X5aSx6LSl77yM5bey5Zue6YCA5Yiw5Y6f5aeL5YiX5a6944CCIixyKTtyZXR1cm59fWdldCBhdXRvRml0Q29sdW1ucygpe3JldHVybiB0aGlzLl9hdXRvRml0Q29sdW1ucz09PXZvaWQgMCYmKHRoaXMuX2F1dG9GaXRDb2x1bW5zPXRoaXMuZ2V0QXV0b0ZpdENvbHVtbnMoKXx8bnVsbCksdGhpcy5fYXV0b0ZpdENvbHVtbnN8fHZvaWQgMH1nZXRDb2x1bW5NZXRhKGEscil7Y29uc3QgdD1hW3JdO3JldHVybiBlZyh0KT90OnRoaXMuYXV0b0ZpdENvbHVtbnM/LltyXXx8dH1nZXRDb2xXaWR0aHMoKXtjb25zdHtjb2xXaWR0aDphfT10aGlzLmRlZmF1bHRzLHsiIWNvbHMiOnI9W119PXRoaXMud3MsdD1bXTtmb3IobGV0IG49MDtuPHRoaXMudG90YWxDb2xzO24rPTEpe2NvbnN0IGk9cXAodGhpcy5nZXRDb2x1bW5NZXRhKHIsbikpO2khPT12b2lkIDAmJih0W25dPWkpfXJldHVybiB0Lmxlbmd0aD90OmF9Z2V0Q29sdW1ucygpe2NvbnN0eyIhY29scyI6YT1bXX09dGhpcy53cztyZXR1cm4gQXJyYXkuZnJvbSh7bGVuZ3RoOnRoaXMudG90YWxDb2xzfSwocix0KT0+e2NvbnN0IG49dGhpcy5nZXRDb2x1bW5NZXRhKGEsdCk7cmV0dXJue2tleTp0KzEsdGl0bGU6aWEuZW5jb2RlX2NvbCh0KSxoaWRkZW46ISFuPy5oaWRkZW4sZWRpdG9yOiExLGNsYXNzTmFtZTpRZihuPy5zPy5hbGlnbm1lbnQpLHJlbmRlcmVyOiJzdHlsZVJlbmRlciJ9fSl9Z2V0U3RydWN0dXJlKCl7cmV0dXJue21lcmdlOnRoaXMuZ2V0QWxsTWVyZ2UoKSxjb2xXaWR0aHM6dGhpcy5nZXRDb2xXaWR0aHMoKSxyb3dIZWlnaHRzOnRoaXMuZ2V0QWxsUm93SGVpZ2h0cygpLGNvbHVtbnM6dGhpcy5nZXRDb2x1bW5zKCksaW1hZ2VzOnRoaXMuZ2V0SW1hZ2VzKCl9fXRvT2JqZWN0KCl7Y29uc3R7ZGVmYXVsdHM6YSxkYXRhOnIsY2VsbDp0LG1lcmdlOm4scm93SGVpZ2h0czppLGNvbFdpZHRoczpmLGNvbHVtbnM6cyxtZXRhOmN9PXRoaXM7cmV0dXJue2RlZmF1bHRzOmEsZGF0YTpyLGNlbGw6dCxtZXJnZTpuLHJvd0hlaWdodHM6aSxjb2xXaWR0aHM6Zixjb2x1bW5zOnMsbWV0YTpjfX19Y29uc3QgbXQ9c2VsZixydD17d29ya2Jvb2s6bnVsbCxzaGVldHM6W119LGxnPXt0eXBlOiJhcnJheSIsZGVuc2U6ITAsY2VsbERhdGVzOiEwLGNlbGxTdHlsZXM6ITAsYnJvd3NlclBpeGVsczohMCxkcmF3aW5nczohMCx2YWxpZGF0ZU1lcmdlczohMH07bXQub25tZXNzYWdlPWFzeW5jIGU9Pntjb25zdHtkYXRhOnt0eXBlOmEscGF5bG9hZDpyPXt9fX09ZSx7c2hlZXQ6dCx3b3JrYm9vazpuLHN0YXJ0Um93Omk9MCxwYWdlU2l6ZTpmPTUwMCxzZXNzaW9uSWQ6cz0wfT1yO3N3aXRjaChhKXtjYXNlInBhcnNlV29ya2Jvb2siOnVnKG4pO2JyZWFrO2Nhc2UicGFyc2VTaGVldCI6aGcodCxpLGYscyk7YnJlYWt9fSxtdC5vbmVycm9yPWU9Pntjb25zb2xlLmVycm9yKGUpfTtjb25zdCB1Zz1lPT57dHJ5e3J0Lndvcmtib29rPXB0KGUsbGcpLHhnKCl9Y2F0Y2goYSl7bXQucG9zdE1lc3NhZ2Uoe3R5cGU6InBhcnNlRXJyb3IiLHBheWxvYWQ6e21lc3NhZ2U6YSBpbnN0YW5jZW9mIEVycm9yP2EubWVzc2FnZTpTdHJpbmcoYSl9fSl9fSxoZz0oZSxhPTAscj01MDAsdD0wKT0+e3RyeXtjb25zdCBuPXJ0Lndvcmtib29rLGk9cnQuc2hlZXRzLmZpbmQoZj0+Zi5pZD09PWUpPy5uYW1lO2lmKG4/LlNoZWV0cyYmaSl7Y29uc3QgZj1uLlNoZWV0c1tpXTtpZihmKXtjb25zdCBzPXJ0LnNoZWV0cy5maW5kKHU9PnUuaWQ9PT1lKSxjPUIwLmNyZWF0ZShmLHtzdGFydFJvdzphLHBhZ2VTaXplOnIsdG90YWxSb3dzOnM/LnJvd0NvdW50LHRvdGFsQ29sczpzPy5jb2xDb3VudH0pLG89Yy50b09iamVjdCgpLGw9YT09PTA/Yy5zdHJ1Y3R1cmU6dm9pZCAwO210LnBvc3RNZXNzYWdlKHt0eXBlOiJwYXJzZVNoZWV0IixwYXlsb2FkOntzZXNzaW9uSWQ6dCxzaGVldDplLHNoZWV0RGF0YTpsP3suLi5vLHN0cnVjdHVyZTpsfTpvfX0pfX19Y2F0Y2gobil7bXQucG9zdE1lc3NhZ2Uoe3R5cGU6InBhcnNlRXJyb3IiLHBheWxvYWQ6e3Nlc3Npb25JZDp0LHN0YXJ0Um93OmEsbWVzc2FnZTpuIGluc3RhbmNlb2YgRXJyb3I/bi5tZXNzYWdlOlN0cmluZyhuKX19KX19LHhnPSgpPT57Y29uc3QgZT1ydC53b3JrYm9vaztpZihlPy5TaGVldE5hbWVzKXtjb25zdCBhPWUuV29ya2Jvb2s/LlNoZWV0c3x8W107cnQuc2hlZXRzPWUuU2hlZXROYW1lcy5yZWR1Y2UoKHIsdCxuKT0+e2NvbnN0IGY9ZS5TaGVldHNbdF0/LlsiIXJlZiJdO2lmKCFmKXJldHVybiByO2NvbnN0IHM9aWEuZGVjb2RlX3JhbmdlKGYpO3JldHVybiByLnB1c2goe2lkOnIubGVuZ3RoLG5hbWU6dCxoaWRkZW46ISFhW25dPy5IaWRkZW4scm93Q291bnQ6cy5lLnIrMSxjb2xDb3VudDpzLmUuYysxfSkscn0sW10pLG10LnBvc3RNZXNzYWdlKHt0eXBlOiJzaGVldHMiLHBheWxvYWQ6e3NoZWV0czpydC5zaGVldHN9fSl9fX0pKCk7Cg==',kl=typeof window<'u'&&window['Blob']&&new Blob([Uint8Array['from'](atob(Vs),s=>s[bY(0x1cf)](0x0))],{'type':'text/javascript;charset=utf-8'});function Se(){let s;try{if(s=kl&&(window['URL']||window['webkitURL'])['createObjectURL'](kl),!s)throw'';return new Worker(s);}catch{return new Worker('data:application/javascript;base64,'+Vs);}finally{s&&(window['URL']||window['webkitURL'])['revokeObjectURL'](s);}}const Xe={'create'(){return l()['defaults'](()=>new Se());}},li=0x1f4,Ol=0x3,Dl=0x1,pe='__index',rs='__k',St='__s',ft={'rowHeight':0x14,'colWidth':0x40},oi={'Placeholder':0x0,'Loading':0x1,'Loaded':0x2},Ct=()=>({'active':!0x1,'totalRows':0x0,'totalCols':0x0,'indexOffset':0x0,'defaults':{...ft},'dataKeys':[],'rows':[],'columns':[],'cellCache':new Map(),'mergeStartMap':new Map(),'mergeCoveredMap':new Map(),'rowHeightCache':new Map(),'windowRows':new Map(),'windowCells':new Map(),'loadedWindows':new Set(),'loadingWindows':new Set()}),ei=(s,t)=>s+'-'+t,ml=s=>'c'+s,gt=s=>s?.[St]??oi[bY(0x329)],ue=s=>{const u=new Array(s);for(let v=0x0;v<s;v+=0x1)u[v]={[rs]:''+v,[St]:oi['Placeholder']};return u;},Ge=s=>s?Math['floor'](Math['max'](s-0x1,0x0)/li)*li:0x0,ot=(s=0x0,t=0x0)=>Math[bY(0x1fe)](Math['max'](s,0x0),Ge(t)),Pl=(s=0x0,u=0x0)=>{const v=Math['floor'](Math['max'](s,0x0)/li)*li;return ot(v,u);},Le=({startRow:u,endRow:v,direction:w,totalRows:x,far:y=!0x1})=>{const z=new Set(),B=Pl(u,x),C=Pl(v,x);for(let J=B;J<=C;J+=li)z['add'](J);const F=y?Ol+0x1:Ol,G=y?Dl+0x1:Dl,H=w>0x0?C:B;for(let K=0x1;K<=F;K+=0x1)z['add'](ot(H+w*K*li,x));for(let L=0x1;L<=G;L+=0x1)z['add'](ot(H-w*L*li,x));return Array['from'](z);},Hl=(u,v,w,x)=>{const lx=bY,y=Math[lx(0x1fe)](w+li,v);for(let z=w;z<y;z+=0x1){const B=u[z];B&&(B[St]=x);}};function nt(s){'@babel/helpers - typeof';const ly=bY;return nt=typeof Symbol==ly(0x35c)&&typeof Symbol['iterator']==ly(0x172)?function(t){return typeof t;}:function(t){const lz=ly;return t&&typeof Symbol=='function'&&t['constructor']===Symbol&&t!==Symbol['prototype']?lz(0x172):typeof t;},nt(s);}var xe=/^\s+/,Ve=/\s+$/;function M(s,u){if(s=s||'',u=u||{},s instanceof M)return s;if(!(this instanceof M))return new M(s,u);var v=re(s);this['_originalInput']=s,this['_r']=v['r'],this['_g']=v['g'],this['_b']=v['b'],this['_a']=v['a'],this['_roundA']=Math['round'](0x64*this['_a'])/0x64,this['_format']=u['format']||v['format'],this['_gradientType']=u['gradientType'],this['_r']<0x1&&(this['_r']=Math['round'](this['_r'])),this['_g']<0x1&&(this['_g']=Math['round'](this['_g'])),this['_b']<0x1&&(this['_b']=Math['round'](this['_b'])),this['_ok']=v['ok'];}M[bY(0xa3)]={'isDark':function(){return this['getBrightness']()<0x80;},'isLight':function(){return!this['isDark']();},'isValid':function(){const lA=bY;return this[lA(0x276)];},'getOriginalInput':function(){return this['_originalInput'];},'getFormat':function(){return this['_format'];},'getAlpha':function(){return this['_a'];},'getBrightness':function(){var s=this['toRgb']();return(s['r']*0x12b+s['g']*0x24b+s['b']*0x72)/0x3e8;},'getLuminance':function(){const lB=bY;var u=this['toRgb'](),v,w,x,y,z,B;return v=u['r']/0xff,w=u['g']/0xff,x=u['b']/0xff,v<=0.03928?y=v/12.92:y=Math['pow']((v+0.055)/1.055,2.4),w<=0.03928?z=w/12.92:z=Math['pow']((w+0.055)/1.055,2.4),x<=0.03928?B=x/12.92:B=Math[lB(0x194)]((x+0.055)/1.055,2.4),0.2126*y+0.7152*z+0.0722*B;},'setAlpha':function(s){return this['_a']=Ks(s),this['_roundA']=Math['round'](0x64*this['_a'])/0x64,this;},'toHsv':function(){var s=Ql(this['_r'],this['_g'],this['_b']);return{'h':s['h']*0x168,'s':s['s'],'v':s['v'],'a':this['_a']};},'toHsvString':function(){const lC=bY;var u=Ql(this['_r'],this['_g'],this['_b']),v=Math['round'](u['h']*0x168),w=Math['round'](u['s']*0x64),x=Math['round'](u['v']*0x64);return this['_a']==0x1?lC(0x2d6)+v+',\x20'+w+'%,\x20'+x+'%)':'hsva('+v+',\x20'+w+lC(0x20c)+x+'%,\x20'+this['_roundA']+')';},'toHsl':function(){var s=fl(this['_r'],this['_g'],this['_b']);return{'h':s['h']*0x168,'s':s['s'],'l':s['l'],'a':this['_a']};},'toHslString':function(){var u=fl(this['_r'],this['_g'],this['_b']),v=Math['round'](u['h']*0x168),w=Math['round'](u['s']*0x64),x=Math['round'](u['l']*0x64);return this['_a']==0x1?'hsl('+v+',\x20'+w+'%,\x20'+x+'%)':'hsla('+v+',\x20'+w+'%,\x20'+x+'%,\x20'+this['_roundA']+')';},'toHex':function(s){return vl(this['_r'],this['_g'],this['_b'],s);},'toHexString':function(s){return'#'+this['toHex'](s);},'toHex8':function(s){return Me(this['_r'],this['_g'],this['_b'],this['_a'],s);},'toHex8String':function(s){return'#'+this['toHex8'](s);},'toRgb':function(){return{'r':Math['round'](this['_r']),'g':Math['round'](this['_g']),'b':Math['round'](this['_b']),'a':this['_a']};},'toRgbString':function(){const lD=bY;return this['_a']==0x1?lD(0x345)+Math[lD(0x1ff)](this['_r'])+',\x20'+Math['round'](this['_g'])+',\x20'+Math[lD(0x1ff)](this['_b'])+')':lD(0x3b0)+Math['round'](this['_r'])+',\x20'+Math['round'](this['_g'])+',\x20'+Math['round'](this['_b'])+',\x20'+this['_roundA']+')';},'toPercentageRgb':function(){const lE=bY;return{'r':Math[lE(0x1ff)](E(this['_r'],0xff)*0x64)+'%','g':Math[lE(0x1ff)](E(this['_g'],0xff)*0x64)+'%','b':Math['round'](E(this['_b'],0xff)*0x64)+'%','a':this['_a']};},'toPercentageRgbString':function(){const lF=bY;return this['_a']==0x1?'rgb('+Math['round'](E(this['_r'],0xff)*0x64)+lF(0x20c)+Math[lF(0x1ff)](E(this['_g'],0xff)*0x64)+lF(0x20c)+Math[lF(0x1ff)](E(this['_b'],0xff)*0x64)+'%)':'rgba('+Math['round'](E(this['_r'],0xff)*0x64)+'%,\x20'+Math['round'](E(this['_g'],0xff)*0x64)+'%,\x20'+Math['round'](E(this['_b'],0xff)*0x64)+lF(0x20c)+this['_roundA']+')';},'toName':function(){return this['_a']===0x0?'transparent':this['_a']<0x1?!0x1:Oe[vl(this['_r'],this['_g'],this['_b'],!0x0)]||!0x1;},'toFilter':function(u){const lG=bY;var v='#'+Bl(this['_r'],this['_g'],this['_b'],this['_a']),w=v,x=this['_gradientType']?'GradientType\x20=\x201,\x20':'';if(u){var y=M(u);w='#'+Bl(y['_r'],y['_g'],y['_b'],y['_a']);}return'progid:DXImageTransform.Microsoft.gradient('+x+lG(0x2b0)+v+lG(0x12e)+w+')';},'toString':function(u){const lH=bY;var v=!!u;u=u||this['_format'];var w=!0x1,x=this['_a']<0x1&&this['_a']>=0x0,y=!v&&x&&(u==='hex'||u==='hex6'||u==='hex3'||u==='hex4'||u==='hex8'||u===lH(0x209));return y?u==='name'&&this['_a']===0x0?this[lH(0x19a)]():this['toRgbString']():(u==='rgb'&&(w=this['toRgbString']()),u==='prgb'&&(w=this['toPercentageRgbString']()),(u===lH(0x17d)||u===lH(0x3c9))&&(w=this['toHexString']()),u==='hex3'&&(w=this[lH(0x22a)](!0x0)),u===lH(0x195)&&(w=this['toHex8String'](!0x0)),u==='hex8'&&(w=this['toHex8String']()),u==='name'&&(w=this['toName']()),u==='hsl'&&(w=this['toHslString']()),u==='hsv'&&(w=this['toHsvString']()),w||this[lH(0x22a)]());},'clone':function(){return M(this['toString']());},'_applyModification':function(s,u){var v=s['apply'](null,[this]['concat']([]['slice']['call'](u)));return this['_r']=v['_r'],this['_g']=v['_g'],this['_b']=v['_b'],this['setAlpha'](v['_a']),this;},'lighten':function(){const lI=bY;return this[lI(0x187)](Re,arguments);},'brighten':function(){return this['_applyModification'](ze,arguments);},'darken':function(){const lJ=bY;return this[lJ(0x187)](Ce,arguments);},'desaturate':function(){const lK=bY;return this[lK(0x187)](Ne,arguments);},'saturate':function(){const lL=bY;return this[lL(0x187)](Fe,arguments);},'greyscale':function(){return this['_applyModification'](we,arguments);},'spin':function(){return this['_applyModification'](ge,arguments);},'_applyCombination':function(s,u){const lM=bY;return s[lM(0x20f)](null,[this][lM(0x2ba)]([][lM(0x30b)]['call'](u)));},'analogous':function(){return this['_applyCombination'](Ee,arguments);},'complement':function(){return this['_applyCombination'](Ue,arguments);},'monochromatic':function(){return this['_applyCombination'](ke,arguments);},'splitcomplement':function(){return this['_applyCombination'](je,arguments);},'triad':function(){return this['_applyCombination'](Al,[0x3]);},'tetrad':function(){const lN=bY;return this[lN(0xd4)](Al,[0x4]);}},M[bY(0x253)]=function(s,u){if(nt(s)=='object'){var v={};for(var w in s)s['hasOwnProperty'](w)&&(w==='a'?v[w]=s[w]:v[w]=Ri(s[w]));s=v;}return M(s,u);};function re(u){const lO=bY;var v={'r':0x0,'g':0x0,'b':0x0},w=0x1,x=null,y=null,z=null,B=!0x1,C=!0x1;return typeof u==lO(0x11e)&&(u=fe(u)),nt(u)==lO(0x314)&&(ci(u['r'])&&ci(u['g'])&&ci(u['b'])?(v=Ke(u['r'],u['g'],u['b']),B=!0x0,C=String(u['r'])['substr'](-0x1)==='%'?'prgb':'rgb'):ci(u['h'])&&ci(u['s'])&&ci(u['v'])?(x=Ri(u['s']),y=Ri(u['v']),v=Je(u['h'],x,y),B=!0x0,C='hsv'):ci(u['h'])&&ci(u['s'])&&ci(u['l'])&&(x=Ri(u['s']),z=Ri(u['l']),v=Te(u['h'],x,z),B=!0x0,C='hsl'),u['hasOwnProperty']('a')&&(w=u['a'])),w=Ks(w),{'ok':B,'format':u[lO(0x7f)]||C,'r':Math['min'](0xff,Math['max'](v['r'],0x0)),'g':Math['min'](0xff,Math['max'](v['g'],0x0)),'b':Math['min'](0xff,Math['max'](v['b'],0x0)),'a':w};}function Ke(s,u,v){return{'r':E(s,0xff)*0xff,'g':E(u,0xff)*0xff,'b':E(v,0xff)*0xff};}function fl(u,v,w){u=E(u,0xff),v=E(v,0xff),w=E(w,0xff);var x=Math['max'](u,v,w),y=Math['min'](u,v,w),z,B,C=(x+y)/0x2;if(x==y)z=B=0x0;else{var F=x-y;switch(B=C>0.5?F/(0x2-x-y):F/(x+y),x){case u:z=(v-w)/F+(v<w?0x6:0x0);break;case v:z=(w-u)/F+0x2;break;case w:z=(u-v)/F+0x4;break;}z/=0x6;}return{'h':z,'s':B,'l':C};}function Te(u,v,w){var x,y,z;u=E(u,0x168),v=E(v,0x64),w=E(w,0x64);function B(G,H,J){return J<0x0&&(J+=0x1),J>0x1&&(J-=0x1),J<0x1/0x6?G+(H-G)*0x6*J:J<0x1/0x2?H:J<0x2/0x3?G+(H-G)*(0x2/0x3-J)*0x6:G;}if(v===0x0)x=y=z=w;else{var C=w<0.5?w*(0x1+v):w+v-w*v,F=0x2*w-C;x=B(F,C,u+0x1/0x3),y=B(F,C,u),z=B(F,C,u-0x1/0x3);}return{'r':x*0xff,'g':y*0xff,'b':z*0xff};}function Ql(u,v,w){const lP=bY;u=E(u,0xff),v=E(v,0xff),w=E(w,0xff);var x=Math['max'](u,v,w),y=Math[lP(0x1fe)](u,v,w),z,B,C=x,F=x-y;if(B=x===0x0?0x0:F/x,x==y)z=0x0;else{switch(x){case u:z=(v-w)/F+(v<w?0x6:0x0);break;case v:z=(w-u)/F+0x2;break;case w:z=(u-v)/F+0x4;break;}z/=0x6;}return{'h':z,'s':B,'v':C};}function Je(u,v,w){u=E(u,0x168)*0x6,v=E(v,0x64),w=E(w,0x64);var x=Math['floor'](u),y=u-x,z=w*(0x1-v),B=w*(0x1-y*v),C=w*(0x1-(0x1-y)*v),F=x%0x6,G=[w,B,z,z,C,w][F],H=[C,w,w,B,z,z][F],J=[z,z,C,w,w,B][F];return{'r':G*0xff,'g':H*0xff,'b':J*0xff};}function vl(u,v,w,x){const lQ=bY;var y=[_(Math[lQ(0x1ff)](u)['toString'](0x10)),_(Math[lQ(0x1ff)](v)[lQ(0x30e)](0x10)),_(Math['round'](w)['toString'](0x10))];return x&&y[0x0][lQ(0x3e2)](0x0)==y[0x0][lQ(0x3e2)](0x1)&&y[0x1]['charAt'](0x0)==y[0x1]['charAt'](0x1)&&y[0x2]['charAt'](0x0)==y[0x2]['charAt'](0x1)?y[0x0]['charAt'](0x0)+y[0x1][lQ(0x3e2)](0x0)+y[0x2][lQ(0x3e2)](0x0):y['join']('');}function Me(u,v,w,x,y){const lR=bY;var z=[_(Math['round'](u)[lR(0x30e)](0x10)),_(Math[lR(0x1ff)](v)['toString'](0x10)),_(Math['round'](w)['toString'](0x10)),_(Ts(x))];return y&&z[0x0]['charAt'](0x0)==z[0x0]['charAt'](0x1)&&z[0x1]['charAt'](0x0)==z[0x1]['charAt'](0x1)&&z[0x2]['charAt'](0x0)==z[0x2][lR(0x3e2)](0x1)&&z[0x3]['charAt'](0x0)==z[0x3][lR(0x3e2)](0x1)?z[0x0][lR(0x3e2)](0x0)+z[0x1][lR(0x3e2)](0x0)+z[0x2]['charAt'](0x0)+z[0x3][lR(0x3e2)](0x0):z['join']('');}function Bl(u,v,w,x){var y=[_(Ts(x)),_(Math['round'](u)['toString'](0x10)),_(Math['round'](v)['toString'](0x10)),_(Math['round'](w)['toString'](0x10))];return y['join']('');}M['equals']=function(s,t){return!s||!t?!0x1:M(s)['toRgbString']()==M(t)['toRgbString']();},M['random']=function(){const lS=bY;return M['fromRatio']({'r':Math['random'](),'g':Math['random'](),'b':Math[lS(0x373)]()});};function Ne(s,u){u=u===0x0?0x0:u||0xa;var v=M(s)['toHsl']();return v['s']-=u/0x64,v['s']=Xt(v['s']),M(v);}function Fe(s,u){u=u===0x0?0x0:u||0xa;var v=M(s)['toHsl']();return v['s']+=u/0x64,v['s']=Xt(v['s']),M(v);}function we(s){return M(s)['desaturate'](0x64);}function Re(s,u){const lT=bY;u=u===0x0?0x0:u||0xa;var v=M(s)[lT(0x3d8)]();return v['l']+=u/0x64,v['l']=Xt(v['l']),M(v);}function ze(s,u){const lU=bY;u=u===0x0?0x0:u||0xa;var v=M(s)['toRgb']();return v['r']=Math['max'](0x0,Math['min'](0xff,v['r']-Math['round'](0xff*-(u/0x64)))),v['g']=Math[lU(0x21e)](0x0,Math['min'](0xff,v['g']-Math[lU(0x1ff)](0xff*-(u/0x64)))),v['b']=Math['max'](0x0,Math['min'](0xff,v['b']-Math['round'](0xff*-(u/0x64)))),M(v);}function Ce(s,u){u=u===0x0?0x0:u||0xa;var v=M(s)['toHsl']();return v['l']-=u/0x64,v['l']=Xt(v['l']),M(v);}function ge(s,u){var v=M(s)['toHsl'](),w=(v['h']+u)%0x168;return v['h']=w<0x0?0x168+w:w,M(v);}function Ue(s){const lV=bY;var t=M(s)[lV(0x3d8)]();return t['h']=(t['h']+0xb4)%0x168,M(t);}function Al(u,v){if(isNaN(v)||v<=0x0)throw new Error('Argument\x20to\x20polyad\x20must\x20be\x20a\x20positive\x20number');for(var w=M(u)['toHsl'](),x=[M(u)],y=0x168/v,z=0x1;z<v;z++)x['push'](M({'h':(w['h']+z*y)%0x168,'s':w['s'],'l':w['l']}));return x;}function je(s){var u=M(s)['toHsl'](),v=u['h'];return[M(s),M({'h':(v+0x48)%0x168,'s':u['s'],'l':u['l']}),M({'h':(v+0xd8)%0x168,'s':u['s'],'l':u['l']})];}function Ee(u,v,w){const lW=bY;v=v||0x6,w=w||0x1e;var x=M(u)['toHsl'](),y=0x168/w,z=[M(u)];for(x['h']=(x['h']-(y*v>>0x1)+0x2d0)%0x168;--v;)x['h']=(x['h']+y)%0x168,z[lW(0x1f5)](M(x));return z;}function ke(u,v){v=v||0x6;for(var w=M(u)['toHsv'](),x=w['h'],y=w['s'],z=w['v'],B=[],C=0x1/v;v--;)B['push'](M({'h':x,'s':y,'v':z})),z=(z+C)%0x1;return B;}M['mix']=function(u,v,w){const lX=bY;w=w===0x0?0x0:w||0x32;var x=M(u)['toRgb'](),y=M(v)[lX(0xea)](),z=w/0x64,B={'r':(y['r']-x['r'])*z+x['r'],'g':(y['g']-x['g'])*z+x['g'],'b':(y['b']-x['b'])*z+x['b'],'a':(y['a']-x['a'])*z+x['a']};return M(B);},M['readability']=function(s,u){const lY=bY;var v=M(s),w=M(u);return(Math[lY(0x21e)](v['getLuminance'](),w['getLuminance']())+0.05)/(Math['min'](v[lY(0x165)](),w['getLuminance']())+0.05);},M['isReadable']=function(u,v,w){const lZ=bY;var x=M['readability'](u,v),y,z;switch(z=!0x1,y=Qe(w),y['level']+y['size']){case lZ(0xd7):case'AAAlarge':z=x>=4.5;break;case'AAlarge':z=x>=0x3;break;case'AAAsmall':z=x>=0x7;break;}return z;},M['mostReadable']=function(u,v,w){const m0=bY;var x=null,y=0x0,z,B,C,F;w=w||{},B=w[m0(0x27e)],C=w['level'],F=w['size'];for(var G=0x0;G<v['length'];G++)z=M['readability'](u,v[G]),z>y&&(y=z,x=M(v[G]));return M[m0(0xf9)](u,x,{'level':C,'size':F})||!B?x:(w['includeFallbackColors']=!0x1,M[m0(0x1aa)](u,['#fff','#000'],w));};var Qt=M['names']={'aliceblue':bY(0x26e),'antiquewhite':bY(0x32d),'aqua':bY(0x260),'aquamarine':bY(0x1be),'azure':'f0ffff','beige':'f5f5dc','bisque':'ffe4c4','black':'000','blanchedalmond':'ffebcd','blue':'00f','blueviolet':'8a2be2','brown':'a52a2a','burlywood':'deb887','burntsienna':'ea7e5d','cadetblue':'5f9ea0','chartreuse':bY(0x2e4),'chocolate':'d2691e','coral':'ff7f50','cornflowerblue':'6495ed','cornsilk':'fff8dc','crimson':'dc143c','cyan':bY(0x260),'darkblue':'00008b','darkcyan':'008b8b','darkgoldenrod':'b8860b','darkgray':'a9a9a9','darkgreen':'006400','darkgrey':'a9a9a9','darkkhaki':'bdb76b','darkmagenta':'8b008b','darkolivegreen':'556b2f','darkorange':'ff8c00','darkorchid':'9932cc','darkred':bY(0x2b9),'darksalmon':'e9967a','darkseagreen':'8fbc8f','darkslateblue':'483d8b','darkslategray':'2f4f4f','darkslategrey':'2f4f4f','darkturquoise':'00ced1','darkviolet':'9400d3','deeppink':'ff1493','deepskyblue':'00bfff','dimgray':'696969','dimgrey':'696969','dodgerblue':'1e90ff','firebrick':'b22222','floralwhite':'fffaf0','forestgreen':bY(0x2af),'fuchsia':bY(0x3fa),'gainsboro':'dcdcdc','ghostwhite':'f8f8ff','gold':'ffd700','goldenrod':'daa520','gray':'808080','green':'008000','greenyellow':'adff2f','grey':'808080','honeydew':'f0fff0','hotpink':'ff69b4','indianred':'cd5c5c','indigo':'4b0082','ivory':'fffff0','khaki':bY(0x394),'lavender':bY(0x7d),'lavenderblush':'fff0f5','lawngreen':'7cfc00','lemonchiffon':'fffacd','lightblue':'add8e6','lightcoral':'f08080','lightcyan':'e0ffff','lightgoldenrodyellow':bY(0x3bb),'lightgray':'d3d3d3','lightgreen':'90ee90','lightgrey':'d3d3d3','lightpink':'ffb6c1','lightsalmon':bY(0x151),'lightseagreen':'20b2aa','lightskyblue':'87cefa','lightslategray':'789','lightslategrey':'789','lightsteelblue':'b0c4de','lightyellow':'ffffe0','lime':'0f0','limegreen':'32cd32','linen':'faf0e6','magenta':'f0f','maroon':'800000','mediumaquamarine':'66cdaa','mediumblue':'0000cd','mediumorchid':'ba55d3','mediumpurple':bY(0x24c),'mediumseagreen':'3cb371','mediumslateblue':'7b68ee','mediumspringgreen':'00fa9a','mediumturquoise':bY(0x13b),'mediumvioletred':'c71585','midnightblue':'191970','mintcream':'f5fffa','mistyrose':'ffe4e1','moccasin':bY(0x33f),'navajowhite':bY(0x3ce),'navy':bY(0x3b1),'oldlace':'fdf5e6','olive':bY(0x259),'olivedrab':'6b8e23','orange':bY(0xfc),'orangered':'ff4500','orchid':'da70d6','palegoldenrod':'eee8aa','palegreen':'98fb98','paleturquoise':'afeeee','palevioletred':'db7093','papayawhip':'ffefd5','peachpuff':bY(0x103),'peru':'cd853f','pink':'ffc0cb','plum':'dda0dd','powderblue':'b0e0e6','purple':'800080','rebeccapurple':bY(0x97),'red':'f00','rosybrown':'bc8f8f','royalblue':'4169e1','saddlebrown':'8b4513','salmon':'fa8072','sandybrown':'f4a460','seagreen':bY(0x3e6),'seashell':'fff5ee','sienna':'a0522d','silver':'c0c0c0','skyblue':'87ceeb','slateblue':'6a5acd','slategray':'708090','slategrey':'708090','snow':'fffafa','springgreen':'00ff7f','steelblue':bY(0x2a2),'tan':'d2b48c','teal':'008080','thistle':'d8bfd8','tomato':'ff6347','turquoise':'40e0d0','violet':'ee82ee','wheat':'f5deb3','white':'fff','whitesmoke':'f5f5f5','yellow':'ff0','yellowgreen':'9acd32'},Oe=M['hexNames']=De(Qt);function De(s){var u={};for(var v in s)s['hasOwnProperty'](v)&&(u[s[v]]=v);return u;}function Ks(s){return s=parseFloat(s),(isNaN(s)||s<0x0||s>0x1)&&(s=0x1),s;}function E(s,u){const m1=bY;Pe(s)&&(s=m1(0x13d));var v=He(s);return s=Math['min'](u,Math['max'](0x0,parseFloat(s))),v&&(s=parseInt(s*u,0xa)/0x64),Math['abs'](s-u)<0.000001?0x1:s%u/parseFloat(u);}function Xt(s){const m2=bY;return Math['min'](0x1,Math[m2(0x21e)](0x0,s));}function f(s){return parseInt(s,0x10);}function Pe(s){return typeof s=='string'&&s['indexOf']('.')!=-0x1&&parseFloat(s)===0x1;}function He(s){return typeof s=='string'&&s['indexOf']('%')!=-0x1;}function _(s){return s['length']==0x1?'0'+s:''+s;}function Ri(s){return s<=0x1&&(s=s*0x64+'%'),s;}function Ts(s){return Math['round'](parseFloat(s)*0xff)['toString'](0x10);}function _l(s){return f(s)/0xff;}var A=(function(){const m3=bY;var u='[-\x5c+]?\x5cd+%?',v='[-\x5c+]?\x5cd*\x5c.\x5cd+%?',w='(?:'+v+')|(?:'+u+')',x=m3(0x168)+w+')[,|\x5cs]+('+w+')[,|\x5cs]+('+w+')\x5cs*\x5c)?',y='[\x5cs|\x5c(]+('+w+m3(0x1ad)+w+')[,|\x5cs]+('+w+m3(0x1ad)+w+')\x5cs*\x5c)?';return{'CSS_UNIT':new RegExp(w),'rgb':new RegExp('rgb'+x),'rgba':new RegExp('rgba'+y),'hsl':new RegExp('hsl'+x),'hsla':new RegExp('hsla'+y),'hsv':new RegExp('hsv'+x),'hsva':new RegExp('hsva'+y),'hex3':/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,'hex6':/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,'hex4':/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,'hex8':/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};}());function ci(s){const m4=bY;return!!A['CSS_UNIT'][m4(0x141)](s);}function fe(s){const m5=bY;s=s['replace'](xe,'')['replace'](Ve,'')[m5(0xe2)]();var u=!0x1;if(Qt[s])s=Qt[s],u=!0x0;else{if(s==m5(0xaa))return{'r':0x0,'g':0x0,'b':0x0,'a':0x0,'format':'name'};}var v;return(v=A['rgb']['exec'](s))?{'r':v[0x1],'g':v[0x2],'b':v[0x3]}:(v=A['rgba'][m5(0x141)](s))?{'r':v[0x1],'g':v[0x2],'b':v[0x3],'a':v[0x4]}:(v=A['hsl']['exec'](s))?{'h':v[0x1],'s':v[0x2],'l':v[0x3]}:(v=A['hsla']['exec'](s))?{'h':v[0x1],'s':v[0x2],'l':v[0x3],'a':v[0x4]}:(v=A['hsv'][m5(0x141)](s))?{'h':v[0x1],'s':v[0x2],'v':v[0x3]}:(v=A['hsva']['exec'](s))?{'h':v[0x1],'s':v[0x2],'v':v[0x3],'a':v[0x4]}:(v=A['hex8']['exec'](s))?{'r':f(v[0x1]),'g':f(v[0x2]),'b':f(v[0x3]),'a':_l(v[0x4]),'format':u?m5(0x209):'hex8'}:(v=A['hex6'][m5(0x141)](s))?{'r':f(v[0x1]),'g':f(v[0x2]),'b':f(v[0x3]),'format':u?'name':'hex'}:(v=A[m5(0x195)]['exec'](s))?{'r':f(v[0x1]+''+v[0x1]),'g':f(v[0x2]+''+v[0x2]),'b':f(v[0x3]+''+v[0x3]),'a':_l(v[0x4]+''+v[0x4]),'format':u?'name':'hex8'}:(v=A[m5(0x33d)]['exec'](s))?{'r':f(v[0x1]+''+v[0x1]),'g':f(v[0x2]+''+v[0x2]),'b':f(v[0x3]+''+v[0x3]),'format':u?'name':'hex'}:!0x1;}function Qe(s){const m6=bY;var u,v;return s=s||{'level':'AA','size':'small'},u=(s['level']||'AA')['toUpperCase'](),v=(s['size']||'small')[m6(0xe2)](),u!=='AA'&&u!=='AAA'&&(u='AA'),v!==m6(0x18c)&&v!=='large'&&(v='small'),{'level':u,'size':v};}const zi=0x44,ki='Aptos,\x20Calibri,\x20\x22Segoe\x20UI\x22,\x20\x22PingFang\x20SC\x22,\x20\x22Microsoft\x20YaHei\x22,\x20sans-serif',Oi=0xb,ql=0x8,Js=0.1,Zl=0x2,Ms=1.2,vt=0x22,Ns='#f3f3f3',Fs=bY(0x3a5),ve=bY(0x3a7),$l='#21a366',Be='rgba(33,\x20163,\x20102,\x200.1)',Ae=0x1,_e='#000000',qe={'double':0x8,'solid':0x7,'dashed':0x5,'dotted':0x4},Bt='bold\x2012px\x20'+ki,bt=Oi+bY(0x331)+ki,$e=0x20,ih={'backgroundColor':Ns,'color':Fs,'font':Bt},is={'backgroundColor':'#f4f7f9','color':'#73808d','font':bY(0x318)+Oi+'px\x20'+ki};let Ut;const ts=new Map(),Di=(s=0x1)=>Number['isFinite'](s)?Math['min'](2.5,Math['max'](0.5,s)):0x1,hi=(s,t)=>Math['max'](0x1,Math['round'](s*Di(t))),pt=(s,u)=>{const m7=bY;if(!s)return s;const v=Di(u);return s[m7(0x1f3)](/(\d+(?:\.\d+)?)px/g,(w,x)=>Number(x)*v+'px');},qi=(s,t)=>{if(s)return{...s,'width':Math['max'](0.5,s['width']*Di(t))};},pi=(s,t)=>{if(s)return{...s,'font':pt(s['font'],t),'borderTop':qi(s['borderTop'],t),'borderRight':qi(s['borderRight'],t),'borderBottom':qi(s['borderBottom'],t),'borderLeft':qi(s['borderLeft'],t)};},ws=s=>pt(Bt,s)||Bt,th=s=>pt(bt,s)||bt,lh=s=>({...ih,'font':ws(s)}),sh=s=>({...is,'font':pt(is['font'],s)}),Rs=s=>s['map'](t=>({...t,...t[bY(0xd0)]?.[bY(0xfa)]?{'children':Rs(t[bY(0xd0)])}:{}})),ch=s=>{const m8=bY;if(typeof s['font']==m8(0x11e)&&s[m8(0xd6)]['trim']())return s['font'];if(!(s['fontFamily']!==void 0x0||s['fontSize']!==void 0x0||s['fontWeight']!==void 0x0||s['fontStyle']!==void 0x0))return;const u=((()=>{const m9=m8,{fontWeight:v}=s;if(typeof v==m9(0x186))return v>=0x258?'bold':'normal';if(typeof v=='string'){const w=v['trim']();return/^\d+$/[m9(0x39b)](w)?Number(w)>=0x258?m9(0x14b):'normal':w;}return'normal';})());return[s['fontStyle']||'normal',u,(Number[m8(0x1b3)](s['fontSize'],0xa)||Oi)+'px',s['fontFamily']||ki]['join']('\x20');},zs=s=>{const ma=bY;if(s){if(s['includes'](ma(0x183)))return'left';if(s['includes'](ma(0xdb)))return'right';if(s['includes']('htCenter'))return'center';}},Cs=s=>{const mb=bY;if(s){if(s['includes']('htTop'))return'top';if(s[mb(0x8c)](mb(0x1c1)))return mb(0x287);if(s['includes']('htMiddle'))return'middle';}},ls=(s,t)=>!!s?.['split'](/\s+/)['includes'](t),eh=(s,u,v)=>typeof s==bY(0x186)?s:s?.[u]??v,Il=s=>{const t=Number(s?.['width']);return Number['isFinite'](t)&&t>0x0?t:0x0;},hh=s=>!!s&&!s['hide']&&Il(s)>0x0,dh=s=>s['structure']?.['columns']?.['length']?s['structure'][bY(0x380)]:s['columns'],mh=s=>s['structure']?.[bY(0x3db)]??s['colWidths'],ss=(s,u,v)=>typeof s=='number'?s:s?.[u]??v,At=(s,t)=>typeof s=='number'&&Number['isFinite'](s)?s<=0x0?Js:Math['max'](Math['ceil'](s),ql):Math['max'](Math['ceil'](t),ql),Zh=s=>{if(s==null)return!0x1;const t=(''+s)['trim']();return t?!/^\d+([./:-]\d+)*$/['test'](t):!0x1;},Ih=u=>{const md=bY,v=u['meta'],w=u['data']||[];if(!v||w['length']<0x2||(u['merge']||[])['length'])return 0x0;const x=w[0x0]||[],y=w[0x1]||[],z=x['filter'](C=>(''+(C??''))['trim']()!==''),B=y['filter'](C=>(''+(C??''))['trim']()!=='');return z[md(0xfa)]<Math['min'](Math['max'](Math['floor'](v['totalCols']/0x2),0x3),0x6)||!z['every'](Zh)||B[md(0xfa)]<0x2?0x0:0x1;},oh=u=>{const mf=bY,v=dh(u),w=mh(u),x=[{'key':pe,'title':'','type':'index','fixed':'left','width':zi,'minWidth':zi,'maxWidth':zi,'widthFillDisable':!0x0,'headerAlign':mf(0x346),'align':'center','headerVerticalAlign':'middle','verticalAlign':'middle','overflowTooltipShow':!0x1,'overflowTooltipHeaderShow':!0x1}],y=[];for(let z=0x0;z<(u['meta']?.[mf(0x1e6)]||0x0);z+=0x1){const B=ml(z),C=v?.[z],F=eh(w,z,u['defaults']['colWidth']),G=!!C?.[mf(0x26f)]||F<=0x0,H=Cs(C?.['className'])||'middle';y['push'](B),x['push']({'key':B,'title':C?.['title']||''+(z+0x1),'width':G?0x0:Math['max'](Math['ceil'](F),0x1),'hide':G,'widthFillDisable':!0x0,'renderType':'both','headerAlign':'center','headerVerticalAlign':mf(0x1b9),'align':zs(C?.['className'])||mf(0xca),'verticalAlign':H,'overflowTooltipShow':!0x0,'overflowTooltipHeaderShow':!0x0});}return{'columns':x,'dataKeys':y};},gs=(u,v)=>{const mg=bY,w={...u,...u['children']?.['length']?{'children':u['children']['map'](B=>gs(B,v))}:{}},x=Number(u['width']);Number[mg(0x100)](x)&&x>0x0&&(w['width']=hi(x,v));const y=Number(u['minWidth']);Number['isFinite'](y)&&y>0x0&&(w['minWidth']=hi(y,v));const z=Number(u['maxWidth']);return Number['isFinite'](z)&&z>0x0&&(w['maxWidth']=hi(z,v)),w;},cs=(s,u=0x1)=>{const v=Di(u);return v===0x1?Rs(s):s['map'](w=>gs(w,v));},nh=s=>{if(typeof s=='number'&&Number['isFinite'](s))return Math['max'](s,0x0);if(typeof s=='string'){const t=Number['parseFloat'](s);return Number['isFinite'](t)?Math['max'](t,0x0):0x0;}return 0x0;},bh=s=>{const mi=bY;if(typeof s!='string')return'solid';const t=s['trim']();switch(t){case'double':case'dashed':case mi(0x2cc):case'solid':return t;default:return mi(0x351);}},$i=(s,u)=>{const mj=bY,v=nh(s['border'+u+'Width']);if(v)return{'width':v,'style':bh(s['border'+u+'Style']),'color':s['border'+u+mj(0x24b)]||_e};},_t=s=>s?!!(s['borderTop']||s['borderRight']||s[bY(0xf1)]||s['borderLeft']):!0x1,Us=s=>s?!!(s['horizontalAlign']||s[bY(0x125)]||s[bY(0x2c5)]||s['shrinkToFit']):!0x1,es=(s,t)=>Us(s)?!!(s?.[bY(0x2c5)]||s?.[bY(0x17b)]||s?.['horizontalAlign']&&s['horizontalAlign']!==(t?.['align']||'left')||s?.['verticalAlign']&&s['verticalAlign']!==(t?.['verticalAlign']||'middle')):!0x1,ah=s=>{const mk=bY;switch(s){case mk(0x346):return mk(0x346);case'right':return'flex-end';default:return'flex-start';}},Yh=s=>{switch(s){case'top':return'flex-start';case'bottom':return'flex-end';default:return'center';}},Wh=(s,u,v,w)=>{switch(s){case'right':return u-v;case'center':return-Math['min'](w,Math['max']((v-u)/0x2,0x0));default:return 0x0;}},jt=s=>typeof s['_height']=='number'&&s['_height']<=Js,qt=(s,u)=>{const v=s?.['key'];if(typeof v=='string'&&v['startsWith']('c')){const w=Number(v['slice'](0x1));if(Number['isInteger'](w)&&w>=0x0)return w;}return Math['max'](u-0x1,0x0);},it=(s,u,v)=>ei(s,qt(v,u)+0x1),js=(s,t)=>ei(s,t+0x1),ol=s=>s==null?'':''+s,yh=s=>ol(s)['trim']()!=='',Sh=s=>/^[+-]?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?%?$/['test'](s[bY(0x295)]()),Xh=(u,v,w)=>{const mm=bY,x=v+'\x0a'+w+'\x0a'+u,y=ts['get'](x);if(y!==void 0x0)return y;!Ut&&typeof document<'u'&&(Ut=document['createElement'](mm(0x375)));const z=Ut?.['getContext']('2d');if(!z)return u['length']*Oi;z['font']=v;const B=z[mm(0x119)](u)['width']+w*0x2;return ts['set'](x,B),B;},ph=(u,v,w,x)=>{const mn=bY,y=u['columns'][x+0x1];if(!hh(y))return!0x1;const z=js(w,x);return u[mn(0x283)]['has'](z)||u['mergeCoveredMap']['has'](z)?!0x1:!yh(v[ml(x)]);},hs=(u,v,w,x,y)=>{const mo=bY;let z=0x0;for(let B=0x1;B<=$e;B+=0x1){const C=x+B*y;if(C<0x0||C>=u[mo(0x1e6)]||!ph(u,v,w,C))break;z+=Il(u['columns'][C+0x1]);}return z;},ds=(u,v,w,x,z,B,C,F)=>{const mp=bY,G=ol(C);if(!G||B?.['wrapText']||B?.[mp(0x17b)]||Sh(G))return;const H=js(w,x);if(u['mergeStartMap']['has'](H)||u['mergeCoveredMap']['has'](H))return;const J=Il(z);if(!J)return;const K=B?.[mp(0xd6)]||bt,L=Math['ceil'](Xh(G,K,hi(Zl,F)));if(L<=J)return;const N=B?.['horizontalAlign']||z?.['align']||mp(0xca),O=N==='right'||N==='center'?hs(u,v,w,x,-0x1):0x0,P=N!=='right'?hs(u,v,w,x,0x1):0x0,R=J+O+P;if(R<=J)return;const T=Math['min'](L,R);return{'left':Wh(N,J,T,O),'width':T};},Zi=s=>s?s[bY(0x34d)]*0x64+(qe[s['style']]||0x1):0x0,uh=(u,v,w,x,y)=>{const mq=bY,z=pi(u['cellCache']['get'](ei(v-0x1,w+0x1)),y),B=pi(u[mq(0x2fe)][mq(0x27f)](ei(v+0x1,w+0x1)),y),C=pi(u['cellCache']['get'](ei(v,w)),y),F=pi(u['cellCache'][mq(0x27f)](ei(v,w+0x2)),y),G=Zi(x['borderTop'])>=Zi(z?.['borderBottom'])?x['borderTop']:void 0x0,H=Zi(x['borderBottom'])>Zi(B?.['borderTop'])?x[mq(0xf1)]:void 0x0,J=Zi(x[mq(0x114)])>=Zi(C?.['borderRight'])?x['borderLeft']:void 0x0,K=Zi(x['borderRight'])>Zi(F?.['borderLeft'])?x['borderRight']:void 0x0;return{...x,'borderTop':G,'borderRight':K,'borderBottom':H,'borderLeft':J};},tt=(s,u)=>{const mr=bY,v=document['createElement']('span'),w=u['width']/0x2;return Object['assign'](v['style'],{'position':'absolute','pointerEvents':'none','boxSizing':'border-box'}),s==='top'||s==='bottom'?(Object['assign'](v['style'],{'left':-w+'px','width':'calc(100%\x20+\x20'+u[mr(0x34d)]+'px)','height':'0'}),v[mr(0x270)][s]=-w+'px',v['style']['borderTop']=u['width']+'px\x20'+u[mr(0x270)]+'\x20'+u['color']):(Object['assign'](v[mr(0x270)],{'top':-w+'px','height':'calc(100%\x20+\x20'+u['width']+'px)','width':'0'}),v[mr(0x270)][s]=-w+'px',v['style'][mr(0x114)]=u['width']+'px\x20'+u['style']+'\x20'+u['color']),v;},Gh=(s,u,v)=>{const mu=bY,w=document[mu(0x177)]('span');return w[mu(0x36e)]=ol(s),Object['assign'](w['style'],{'position':'relative','zIndex':'1','width':'100%','height':'100%','boxSizing':'border-box','display':'flex','alignItems':Yh(u['verticalAlign']),'justifyContent':ah(u['horizontalAlign']),'padding':'0\x20'+v+'px','overflow':'hidden','textOverflow':u['wrapText']?'clip':'ellipsis','whiteSpace':u['wrapText']?'pre-wrap':'nowrap','wordBreak':u['wrapText']?'break-word':'normal','lineHeight':''+Ms,'textAlign':u['horizontalAlign']||'left','color':u['color']||'inherit','font':u['font']||bt,'transform':u['shrinkToFit']?'scale(0.92)':'none','transformOrigin':(u['horizontalAlign']||'left')+'\x20center'}),w;},Lh=(s,t)=>{const mv=bY;t&&Object['assign'](s['style'],{'position':mv(0x393),'left':t['left']+'px','top':'0','width':t['width']+'px','overflow':'hidden','textOverflow':'clip'});},xh=(u,v,w,x,y,z)=>{const mw=bY;u[mw(0xf2)](),Object['assign'](u[mw(0x270)],{'pointerEvents':'none','overflow':'visible','background':'transparent'});const B=document['createDocumentFragment']();if(x){const C=Gh(w,v,hi(Zl,z));Lh(C,y),B[mw(0x2bb)](C);}v['borderTop']&&B['appendChild'](tt('top',v['borderTop'])),v['borderRight']&&B['appendChild'](tt('right',v['borderRight'])),v['borderBottom']&&B['appendChild'](tt('bottom',v[mw(0xf1)])),v['borderLeft']&&B['appendChild'](tt('left',v['borderLeft'])),u['appendChild'](B);},Vh=u=>{const mx=bY;if(!u)return;const v=u['style']||{},w={};v['backgroundColor']&&(w[mx(0x33a)]=v['backgroundColor']),v['color']?w['color']=v[mx(0x90)]:v['backgroundColor']&&M(v['backgroundColor'])[mx(0x35e)]()&&(w['color']='#ffffff');const x=ch(v);x?w['font']=x:v['backgroundColor']&&M(v['backgroundColor'])[mx(0x35e)]()&&(w['font']=mx(0x104)+Oi+'px\x20'+ki);const y=$i(v,'Top');y&&(w[mx(0x3a9)]=y);const z=$i(v,'Right');z&&(w[mx(0x196)]=z);const B=$i(v,mx(0x3f1));B&&(w['borderBottom']=B);const C=$i(v,'Left');C&&(w['borderLeft']=C);const F=zs(u['className']);F&&(w['horizontalAlign']=F);const G=Cs(u['className']);if(G&&(w[mx(0x125)]=G),ls(u['className'],'htWrap')&&(w['wrapText']=!0x0),ls(u['className'],'htShrink')&&(w['shrinkToFit']=!0x0),!(!w['backgroundColor']&&!w['color']&&!w['font']&&!_t(w)&&!Us(w)))return w;},Et=({hostHeight:u,sheetDefaults:v,virtualState:w,zoomScale:x=0x1})=>{const my=bY,z=Di(x),B=hi(Zl,z),C=hi(vt,z),F=hi(At(v['rowHeight'],v['rowHeight']),z),G=hi(v[my(0x24a)],z),H=lh(z),J=sh(z),K=({rowIndex:P,colIndex:R,column:T})=>{if(R===0x0)return;const U=it(P,R,T);if(w['mergeCoveredMap']['has'](U))return{'rowspan':0x0,'colspan':0x0};const V=w['mergeStartMap']['get'](U);if(V)return{'rowspan':V['rowspan'],'colspan':V['colspan']};},L=()=>H,N=({row:P,rowIndex:R,colIndex:T,column:U})=>{const mz=my;if(T===0x0)return H;const V=P;if(!jt(V))return gt(V)!==oi[mz(0x3cb)]?J:pi(w['cellCache']['get'](it(R,T,U)),z);},O=({row:P,rowIndex:R,colIndex:T,column:U,value:a0})=>{const a1=P;if(T===0x0||jt(a1)||gt(a1)!==oi['Loaded'])return;const a2=it(R,T,U);if(w['mergeCoveredMap']['has'](a2))return;const a3=pi(w['cellCache']['get'](a2),z),a4=qt(U,T),a5=ds(w,a1,R,a4,U,a3,a0,z),a6=es(a3,U)||!!a5;if(!(!_t(a3)&&!a6))return a7=>{const mA=b,a8={...a3||{},'horizontalAlign':a3?.[mA(0x2a8)]||U?.[mA(0x3c0)],'verticalAlign':a3?.['verticalAlign']||U?.['verticalAlign']},a9=_t(a3)?uh(w,R,a4,a8,z):a8;xh(a7,a9,a0,a6,a5,z);};};return{'ROW_KEY':rs,'DISABLED':!0x0,'HEIGHT':Math['max'](u,0xf0),'MAX_HEIGHT':Math['max'](u,0xf0),'HEADER_HEIGHT':C,'CELL_HEIGHT':F,'CELL_WIDTH':G,'CELL_PADDING':B,'CELL_LINE_HEIGHT':Ms,'COLUMNS_VERTICAL_ALIGN':my(0x1b9),'HEADER_FONT':ws(z),'BODY_FONT':th(z),'BORDER_RADIUS':0x0,'BORDER_COLOR':ve,'HEADER_BG_COLOR':Ns,'BODY_BG_COLOR':my(0x2d7),'HEADER_TEXT_COLOR':Fs,'BODY_TEXT_COLOR':'#202124','READONLY_COLOR':'#ffffff','READONLY_TEXT_COLOR':'#202124','EDIT_BG_COLOR':'#ffffff','PLACEHOLDER_COLOR':'#8a94a3','SCROLLER_COLOR':'#c1c7d0','SCROLLER_FOCUS_COLOR':'#9aa0a6','SELECT_ROW_COL_BG_COLOR':Be,'SELECT_AREA_COLOR':'rgba(33,\x20163,\x20102,\x200.14)','SELECT_BORDER_COLOR':$l,'AUTOFILL_POINT_BORDER_COLOR':$l,'ENABLE_SELECTOR':!0x0,'ENABLE_SELECTOR_SINGLE':!0x1,'ENABLE_SELECTOR_SPAN_COL':!0x0,'ENABLE_SELECTOR_SPAN_ROW':!0x0,'ENABLE_SELECTOR_ALL_ROWS':!0x0,'ENABLE_SELECTOR_ALL_COLS':!0x0,'SELECTOR_AREA_MIN_X':Ae,'ENABLE_CONTEXT_MENU':!0x1,'ENABLE_HEADER_CONTEXT_MENU':!0x1,'ENABLE_AUTOFILL':!0x0,'ENABLE_AUTOFILL_SPAN_COL':!0x0,'ENABLE_AUTOFILL_SPAN_ROW':!0x0,'ENABLE_PASTER':!0x1,'ENABLE_HISTORY':!0x1,'ENABLE_RESIZE_COLUMN':!0x1,'ENABLE_RESIZE_ROW':!0x1,'ENABLE_KEYBOARD':!0x0,'ENABLE_COPY':!0x0,'BEFORE_AUTOFILL_DATA_METHOD':()=>[],'SPAN_METHOD':K,'HEADER_CELL_STYLE_METHOD':L,'BODY_CELL_STYLE_METHOD':N,'BODY_CELL_RENDER_METHOD':O,'BODY_CELL_FORMATTER_METHOD':({row:P,rowIndex:R,colIndex:T,column:U,value:V})=>{const mB=my;if(jt(P))return'';if(T===0x0){const a3=R+0x1-w['indexOffset'];return a3>0x0?''+a3:'';}if(gt(P)!==oi[mB(0x3cb)])return'';const a0=P,a1=pi(w['cellCache']['get'](it(R,T,U)),z),a2=ds(w,a0,R,qt(U,T),U,a1,V,z);return es(a1,U)||a2||V==null?'':''+V;}};},rh=e({'__name':'XlsxTable','props':{'data':null},'setup'(u){const mD=bY,x=u,z=c(null),B=c(null),C=c(null),N=c([]),a0=c(0x0),a1=c(''),a2=c(0x0),a3=c(0x0),a4=c({...ft}),a5=c(!0x0),a6=c(!0x1),a7=c(0x0),a8=c(0x0),a9=c([]),aa=c(0x1),ab=c({'scrollX':0x0,'scrollY':0x0,'width':0x0,'height':0x0}),ad=g(()=>N['value']['find'](bo=>bo['id']===a0['value'])),af=g(()=>{const mC=b,bo=N['value'][mC(0x36a)](bp=>!bp['hidden']);return bo['length']?bo:N[mC(0x121)];}),ag=g(()=>!a1['value']&&!a6['value']&&(ay['value']||a5['value'])),aj=g(()=>!ag['value']&&!a1['value']&&a6['value']&&a8['value']>0x0),ak=g(()=>N['value']['length']?ad['value']?.['name']?'正在准备「'+ad['value']['name']+'」...':'正在准备工作表内容...':mD(0xfb)),am=g(()=>a2['value']?mD(0xfd)+Math[mD(0x1fe)](a7['value']*li,a2[mD(0x121)])['toLocaleString']()+mD(0x87)+a2['value']['toLocaleString']()+'\x20行':''),an=g(()=>{const mE=mD,bo=a2[mE(0x121)]||ad['value']?.['rowCount']||0x0,bp=a3[mE(0x121)]||ad['value']?.['colCount']||0x0;return bo?bp?'共\x20'+bo+mE(0xb4)+bp+'\x20列,按视口预取平滑加载':'共\x20'+bo+'\x20行,按视口预取平滑加载':'';}),ao=o(),ap=bo=>Math['min'](2.5,Math[mD(0x21e)](0.5,Number(bo['toFixed'](0x2)))),aq=bo=>Math['max'](0x1,Math[mD(0x1ff)](bo*aa['value'])),ar=bo=>Math['max'](0.1,Math[mD(0x1ff)](bo*aa[mD(0x121)])),au=g(()=>({'left':aq(zi)+'px','top':aq(vt)+'px'})),av=g(()=>({'transform':'translate('+-ab['value'][mD(0x2cf)]+'px,\x20'+-ab['value']['scrollY']+'px)'})),aw=g(()=>{const mF=mD,bo=ab[mF(0x121)],bp=Math['max'](bo['width']-aq(zi),0x0),bq=Math['max'](bo['height']-aq(vt),0x0);return a9['value'][mF(0x36a)](br=>{const mG=mF,bu=aq(br['left'])-bo['scrollX'],bv=aq(br['top'])-bo[mG(0x39f)];return bu+aq(br['width'])>=-0xf0&&bu<=bp+0xf0&&bv+aq(br['height'])>=-0xf0&&bv<=bq+0xf0;});}),ax=()=>Xe['create'](),{loading:ay,worker:az,onWorkerEvent:aA}=qs(ax);let aB=Ct();const aC=new Map(),aD=new Map();let aE=null,aF=null,aG=0x0,aH=0x0,aI={'start':0x0,'end':0x0},aJ=0x1,aK=0x0,aL=0x0;const aM=(bo,bp)=>{const mH=mD;bo[mH(0x128)]=bp,bo['_height']=ar(bp);},aN=()=>{const mI=mD;aB[mI(0xdd)]['forEach']((bo,bp)=>{const bq=aB['rows'][bp];bq&&aM(bq,bo);});},aO=()=>({'scale':aa[mD(0x121)],'label':Math['round'](aa[mD(0x121)]*0x64)+'%','canZoomIn':aa['value']<2.5,'canZoomOut':aa['value']>0.5,'canReset':aa['value']!==0x1,'minScale':0.5,'maxScale':2.5}),aP=bo=>(aa[mD(0x121)]=ap(bo),aO()),aQ=()=>{const mJ=mD,bo=z[mJ(0x121)];bo&&p(bo,{'zoomIn':()=>aP(aa['value']+0.1),'zoomOut':()=>aP(aa[mJ(0x121)]-0.1),'resetZoom':()=>aP(0x1),'setZoom':aP,'getState':aO,'subscribe':ao['subscribe']});},aR=()=>a0[mD(0x121)]??N['value'][0x0]?.['id'],aS=()=>B[mD(0x121)]?.['clientHeight']||0x0,aT=()=>{a7['value']=aB['loadedWindows']['size'],a8['value']=aB['loadingWindows']['size'];},aU=()=>{ab['value']={'scrollX':aE?.['ctx']['scrollX']||0x0,'scrollY':aE?.['ctx']['scrollY']||0x0,'width':B['value']?.['clientWidth']||0x0,'height':B['value']?.['clientHeight']||0x0};},aV=bo=>({'left':aq(bo['left'])+'px','top':aq(bo['top'])+'px','width':aq(bo['width'])+'px','height':aq(bo[mD(0x8e)])+'px'}),aW=()=>({'config':Et({'hostHeight':aS(),'sheetDefaults':a4['value'],'virtualState':aB,'zoomScale':aa['value']}),'columns':cs(aB['columns'],aa['value'])}),aX=()=>{aI={'start':0x0,'end':0x0},aJ=0x1,aK=0x0;},aY=()=>{aE&&(aH&&cancelAnimationFrame(aH),aH=requestAnimationFrame(()=>{const mK=b;if(aH=0x0,!aE||!aB[mK(0x377)]||!aB['totalRows'])return;const bo=Math['max'](aE['ctx']['body'][mK(0x7e)]||0x0,0x0),bp=Math[mK(0x21e)](aE[mK(0x1fa)]['body'][mK(0x2a0)]||bo,bo),bq=aE['ctx']['scrollY']||0x0;aJ=bq>=aK?0x1:-0x1,aK=bq,aI={'start':bo,'end':bp},aU(),b3(bo,bp);}));},aZ=()=>(aE||!B[mD(0x121)]||(aE=new ye(B['value'],{'data':[],'columns':[],'config':Et({'hostHeight':aS(),'sheetDefaults':a4['value'],'virtualState':aB,'zoomScale':aa['value']})}),aE['on']('onScrollX',aY),aE['on']('onScrollY',aY),aE['on']('resize',aY)),aE),b0=(bo,bp=aB['columns'],bq=aB['rows'],br=!0x1)=>{const mL=mD,bu={'config':Et({'hostHeight':aS(),'sheetDefaults':a4[mL(0x121)],'virtualState':aB,'zoomScale':aa['value']}),'columns':cs(bp,aa['value'])};if(bo['loadConfig'](bu['config']),bo[mL(0x36c)](bu['columns']),bo['loadData'](bq),bo['draw'](),aU(),br){requestAnimationFrame(()=>{const mM=mL;bo['scrollTo'](0x0,0x0),bo[mM(0x1ac)](),aU(),aY();});return;}aY();},b1=()=>{const mN=mD,bo=aZ();if(!bo)return;const {config:bp,columns:bq}=aW();bo['loadConfig'](bp),aB['active']&&bq['length']&&bo['loadColumns'](bq),bo['doLayout'](),bo[mN(0x1ac)](),aU(),aY();},b2=(bo=0x0,bp=!0x0)=>{const mO=mD,bq=aR();if(bq===void 0x0)return;const br=ot(bo,aB['totalRows']);aB['loadedWindows']['has'](br)||aB['loadingWindows']['has'](br)||(aB[mO(0x357)]['add'](br),aT(),aB[mO(0x377)]&&(Hl(aB['rows'],aB['totalRows'],br,oi['Loading']),aE?.['draw']()),a1['value']='',az['emit']('parseSheet',{'sheet':bq,'startRow':br,'pageSize':li,'sessionId':aL}),bp&&(ay['value']=!0x1));},b3=(bo,bp)=>{const mP=mD;!aB['active']||!aB['totalRows']||Le({'startRow':bo,'endRow':bp,'direction':aJ,'totalRows':aB[mP(0x16c)]})['forEach'](bq=>b2(bq,!0x0));},b4=bo=>{const mQ=mD,bp=bo[mQ(0xce)];if(!bp)return;const {columns:bq,dataKeys:br}=oh(bo);aB={...Ct(),'active':!0x0,'totalRows':bp['totalRows'],'totalCols':bp[mQ(0x1e6)],'indexOffset':Ih(bo),'defaults':bo['defaults'],'dataKeys':br,'rows':ue(bp[mQ(0x16c)]),'columns':bq},a4['value']=bo[mQ(0x2b8)],a2['value']=bp['totalRows'],a3['value']=bp['totalCols'],aT(),k(()=>{const bu=aZ();bu&&b0(bu,bq,aB['rows'],!0x0);});},b5=bo=>{aB['dataKeys']['forEach'](bp=>{delete bo[bp];});},b6=bo=>{Array['isArray'](bo)&&bo['forEach']((bp,bq)=>{const mR=b;if(bp===void 0x0)return;const br=aB['rows'][bq];if(!br)return;const bu=At(bp,aB[mR(0x2b8)]['rowHeight']);aM(br,bu),aB[mR(0xdd)]['set'](bq,bu);});},b7=bo=>{const mS=mD,bp=bo['meta'];if(!bp)return;const bq=[],br=Math['min'](bp['endRow'],aB['totalRows']);for(let bu=bp['startRow'];bu<br;bu+=0x1){const bv=aB['rows'][bu],bw=bu-bp['startRow'];if(!bv)continue;b5(bv),(bo[mS(0x160)]?.[bw]||[])['forEach']((bz,bA)=>{bz===''||bz===null||bz===void 0x0||(bv[ml(bA)]=bz);});const bx=ss(bo['rowHeights'],bw,aB['defaults'][mS(0x1e0)]),by=At(ss(bo['structure']?.['rowHeights'],bu,bx),aB['defaults']['rowHeight']);aM(bv,by),bv[St]=oi['Loaded'],aB[mS(0xdd)]['set'](bu,by),bq['push'](bu);}aB['windowRows']['set'](bp[mS(0x88)],bq);},b8=bo=>{const bp=bo['meta'];if(!bp)return;const bq=[];Object['entries'](bo['cell']||{})['forEach'](([br,bu])=>{const [bv,bw]=br['split']('-')['map'](Number),bx=ei(bp['startRow']+bv,bw+0x1),by=Vh(bu);by&&(aB['cellCache']['set'](bx,by),bq['push'](bx));}),aB['windowCells']['set'](bp['startRow'],bq);},b9=bo=>{aB['mergeStartMap']['clear'](),aB['mergeCoveredMap']['clear'](),bo['forEach'](bp=>{const mT=b,bq=ei(bp['row'],bp['col']+0x1);aB['mergeStartMap']['set'](bq,{...bp,'col':bp[mT(0xe6)]+0x1});for(let br=0x0;br<bp[mT(0xcb)];br+=0x1)for(let bu=0x0;bu<bp['colspan'];bu+=0x1){if(br===0x0&&bu===0x0)continue;const bv=ei(bp[mT(0x17e)]+br,bp['col']+bu+0x1);aB['mergeCoveredMap']['set'](bv,!0x0);}});},ba=bo=>{const mU=mD,bp=bo[mU(0x2c9)],bq=bp?.['merge'];if(bq)b9(bq);else{const br=bo[mU(0xce)];br&&!aB['mergeStartMap'][mU(0x22f)]&&b9((bo['merge']||[])['map'](bu=>({...bu,'row':bu['row']+br['startRow']})));}if(b6(bp?.['rowHeights']),bp?.[mU(0x2e7)]){a9['value']=bp['images'];const bu=aR();bu!==void 0x0&&aD['set'](bu,bp['images']);}},bb=bo=>{const mV=mD,bp=bo['meta'];if(!bp)return;aB['active']||b4(bo),ba(bo),b7(bo),b8(bo),aB['loadedWindows']['add'](bp['startRow']),aB['loadingWindows']['delete'](bp[mV(0x88)]),aT(),a6['value']=!0x0;const bq=aR();bq!==void 0x0&&aC['set'](bq,aB),aE?.['draw'](),ay['value']=!0x1,a5[mV(0x121)]=!0x1;const br=aI[mV(0x155)]||bp['startRow'],bu=Math[mV(0x21e)](aI['end'],bp['endRow']-0x1,bp['startRow']);b3(br,bu);},bd=()=>{const mW=mD;a1['value']='',a2['value']=0x0,a3['value']=0x0,a4[mW(0x121)]={...ft},a9['value']=[],aB=Ct(),a6['value']=!0x1,aX(),aT(),aU(),aE&&(aE[mW(0x36c)]([]),aE['loadData']([]),aE[mW(0x26a)](0x0,0x0),aE['draw']());},bf=()=>{const bo=aR();bo===void 0x0||!aB['active']||aC['set'](bo,aB);},bg=bo=>{const mX=mD,bp=aC['get'](bo);return bp?(bp['loadingWindows']['clear'](),aB=bp,a1['value']='',a2['value']=bp[mX(0x16c)],a3[mX(0x121)]=bp['totalCols'],a4['value']=bp['defaults'],a9['value']=aD['get'](bo)||[],a6['value']=bp['loadedWindows']['size']>0x0,a5['value']=!a6['value'],aT(),k(()=>{const mY=mX,bq=aZ();bq&&(b0(bq,bp[mY(0x380)],bp['rows']),aU());}),!0x0):!0x1;},bj=()=>{const mZ=mD,bo=aR();if(bo===void 0x0){ay['value']=!0x1,a5[mZ(0x121)]=!0x1;return;}if(aL+=0x1,bg(bo)){ay['value']=!0x1;return;}a5[mZ(0x121)]=!0x0,bd(),b2(0x0,!0x1);},bk=async()=>{const n0=mD;await k(),C['value']?.['querySelector']('.sheet-tab.active')?.['scrollIntoView']({'block':'nearest','inline':'center','behavior':n0(0x332)});},bm=bo=>{if(a0['value']===bo){bk();return;}bf(),a0['value']=bo,bj();},bn=()=>{const n1=mD;az[n1(0xc8)]('parseWorkbook',{'workbook':x['data']});};return aA('sheets',({sheets:bo})=>{const n2=mD;N['value']=bo;const bp=bo[n2(0x2fb)](bq=>!bq['hidden'])||bo[0x0];if(bp){a0['value']=bp['id'],bj();return;}a5['value']=!0x1,ay['value']=!0x1;}),aA(mD(0x2da),({sessionId:bo,sheet:bp,sheetData:bq})=>{bo!==aL||bp!==aR()||bb(bq);}),aA('parseError',({sessionId:bo,startRow:bp,message:bq})=>{bo&&bo!==aL||(a5['value']=!0x1,ay['value']=!0x1,typeof bp=='number'?(aB['loadingWindows']['delete'](bp),aT(),aB['active']&&(Hl(aB['rows'],aB['totalRows'],bp,oi['Placeholder']),aE?.['draw']())):(aB['loadingWindows']['clear'](),aT()),a1['value']=bq||'Excel\x20解析失败');}),h(()=>x['data'],()=>{const n3=mD;aL+=0x1,N['value']=[],a0['value']=0x0,aa[n3(0x121)]=0x1,aC[n3(0x10f)](),aD['clear'](),a5[n3(0x121)]=!0x0,bd(),bn();}),h(aa,()=>{aN(),b1(),ao['emit']();}),h([a0,af],()=>{bk();}),i(()=>{aQ(),aZ(),B['value']&&(aF=new ResizeObserver(()=>{aG&&cancelAnimationFrame(aG),aG=requestAnimationFrame(()=>{aG=0x0,b1();});}),aF['observe'](B['value'])),bn();}),j(()=>{aG&&cancelAnimationFrame(aG),aH&&cancelAnimationFrame(aH),aF?.['disconnect'](),aF=null,n(z['value']),aE?.['destroy'](),aE=null;}),{'__sfc':!0x0,'props':x,'excelRoot':z,'tableHost':B,'sheetTabsBar':C,'sheets':N,'sheetIndex':a0,'errorMessage':a1,'totalRows':a2,'totalCols':a3,'sheetDefaults':a4,'sheetInitializing':a5,'hasInitialWindow':a6,'loadedWindowCount':a7,'loadingWindowCount':a8,'sheetImages':a9,'zoom':aa,'imageViewport':ab,'activeSheet':ad,'sheetTabs':af,'showBlockingLoading':ag,'showStreamingLoading':aj,'sheetLoadingText':ak,'cachedSummary':am,'statusSummary':an,'zoomEmitter':ao,'clampZoom':ap,'scalePx':aq,'scaleRowHeight':ar,'imageClipStyle':au,'imageLayerStyle':av,'visibleImages':aw,'compositeWorkerFactory':ax,'loading':ay,'worker':az,'onWorkerEvent':aA,'virtualState':aB,'sheetStateCache':aC,'sheetImageCache':aD,'table':aE,'resizeObserver':aF,'resizeFrame':aG,'scrollFrame':aH,'viewportRange':aI,'scrollDirection':aJ,'lastScrollY':aK,'sheetSessionId':aL,'applyRowHeight':aM,'syncScaledRowHeights':aN,'getZoomState':aO,'setZoom':aP,'attachZoomProvider':aQ,'getActiveSheetId':aR,'getHostHeight':aS,'syncWindowStats':aT,'syncImageViewport':aU,'getImageStyle':aV,'buildTableView':aW,'resetViewportTracking':aX,'scheduleViewportLoad':aY,'ensureTable':aZ,'renderTable':b0,'syncTableLayout':b1,'requestWindow':b2,'ensureViewportWindows':b3,'initializeVirtualSheet':b4,'clearVirtualRow':b5,'applyStructureRowHeights':b6,'applyWindowRows':b7,'applyWindowCells':b8,'setSheetMerges':b9,'applySheetStructure':ba,'applyVirtualWindow':bb,'resetViewState':bd,'cacheCurrentSheetState':bf,'restoreCachedSheetState':bg,'startSheetSession':bj,'scrollActiveSheetIntoView':bk,'handleSheet':bm,'emitParseWorkbook':bn};}}),Kh='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAMAAADDpiTIAAAC9FBMVEUAAAABAQEODw8AAAAAAAAAAAAzMzMBAQEAAAABAQFycnIAAAD9/f0mJiYAAAD9/f2EhITS0tIbf0qBgYHOzs6Kiorl5eVpgHRXWVgLDQz7+/v39/dDmWoObzoQfEIqi1YVf0Ukh1Ha2tofhE2lpaVebGTt7e15eXnh4eHX19cZgUmYmJg8Pj1VVVWoqKiEhIQObznGxsaxsbEng1C1tbXMzMy+vr7CwsLR0dHFxcVmZmampqa2trY/cFVTU1PZ2dnW1tYAAgDm5ubY2Ng/lmcObzo/lmcNbzo+lmYOcDo2kV////8QfEH9/f3+/v77+/v4+Pgri1YRfUIsjFjy8vIdg0v6+vopilXw8PAniVMTfkTt7e0liFIXgEfo6Ogbgkr3+PcVf0UfhU3q6uohhk/29vYZgUj19fX09PQjh1Dm5ubs7Ozk5OTv7+/e3t7i4uIho2YUSixbz5owuHkfmWAYXDdNtYT4+/nb29vc3NwjhlDg4ODW1tYtjFnQ0NDU1NTY2NjU1tUOcTsQekDIyclEmWvKysrHx8cxjlsXfUNAlmi/wL9OtYUAeDdFiFtYn3Y7l2YTbzsAbTQzdUpQvYVVzpcBoWEAQhkht3VHblVGYU8AViozuHpJqnZJoXHMzMwAl1tjuo4jmmFGtIEeXTn1+fbExMS7u7sAejoThk1FnGxs0qEogUwAfT5Nk2jBwcEyilc6hFQAeS0uiFQBgEMrhVAObjm0tLQAdiZCjmAbf0YigEkAfDOpqany9vRHjmIdiFEChEcWfEK4uLg/ilsAbwHO39Vt0qIAdBxzqIc8h1cOdT03kV8AchC/1Meurq6kw7ADk1jo8eygoKCXl5dgtozt9PC3z8APg0ni7OaxsrFr0aDc6eGNtZwjll7W5NysyLaevalEsX9poH6Aq5BUmXAdXDiTuaGGspfG2c0gckBLqnYAZx8AZAZo0Z9edmY9aE09XEgLfkJhroFhkXF61KdxvJZlwY88sH0BtXFXi2gATxf6D1MSAAAAS3RSTlMACQYNExgZHSQpVTD3Njb2O/wOPfwr9w0LEPb28fHx8fHx+/FxF/VD9vzxWy4RiUz91JhUrPLIspTmOMvjJGLlvEbSzbGxiorOzuSptM5HAAA3i0lEQVR42uycy04aURzGC0JvK0mxxXRn6C22Nppae9G0SdetLIiZhISYEILhuoVgABMDCx7CHSxZ+gC+RZ+m58rHOWeOA1bAtOc7MAzD0NjMr9/3P/859Z6Tk5OTk5OT020pHL53lxQO37Ef6J9W+K5K/GSOhv9U7Lo/oyPhQJiPwom1O6uDg/sPotH1lYlr/uxZwmFwu7n/4vXTJeu1rzY2vhH9+PH9+97ep09byc3VtYPoisTAUXBrDrv2NJPNzV1Z8vBRkT+EymPV+As9SL5ZKmXLzfqb2O723qed5OpBJMwoSDgG/h6ARHjtaS67EBXtKkO1sZpMVaKGULNWztbqbwgHW5trUQaBM4K/u/4hALAATUFATREHQCJQr28Q1euNZrl6trv9IbkaIX8HZwR/B0Bo7WkpuwT5IECeEFxAUkARIOrUO503b047jerp7sedzQdhwoBD4KbXP/RuhQDAQzrLttiRR7PihUicIT7C53Krfw/nkuGb/nxQkcC3IgACGAJEp6ftWKzdqbc+f9h8SBhwNnAzAFYoAJncQkQBstkBHVK+CIyDAASctWOteKvdiX/eeR9xNnBTANYBwMKkg8DeX1cUGggIAtqtVjx+0WoPPiYfOgRucv1X1iNrLzMlrhzZgXAsWDgNB7CXK7HBxPdFQGjxABvgiaCUhRoCHSLmAa3WxcX5eau7v/XWBcHsAKyvR1ZfVkoLEQfBKp/iUHEBoxZgBLRjlIBur9cVCDgCZgfAyyxAJcjCgW2SQAlQGWgQyRgQBJz3Rr3efjJ6z+XAbADcj84bACBABnnAD0xj8EcAPtBkDIxdAIUAJWDQHwy+vg+5HJgFgIgEoEIGfTEG2wQP/Tx5INgOYAqYP2KmyKVNClALCBMQBIz6g6udh84EplN4DEC6Mmd5GQ8oWInI2BJhwgXUIKiDgJYgYDjYfxxOuEpgBgCevEx785XkIOPRDX1YXcGOgGwTwQUEAjwG+GSAEtC/3Iq6GJglAuYMgAmCJAAZgSpBnTPqFQEDoIzGAGpBWgh0z2khMByOvr69lwg5AgIBCAkHOPEWrYomxQfQP2DSbIBJ5IBOgIyB0f77sCNgNgDS8x7XXn+PuwE3AUgnICsJqCkmYBYC/d9JR8D0ABTSCxAQMKV6AeQzO5ycEmgEnLFCgBIwGg6vtkKOgLsFwITL2BDIGHGAgpCMAAJOxx5AC4Hh1oqbDEwJQD69cFmcwDNNABTABCaDoNpUJwNxTgCJgZ31RCLkCJgOgJP5DjMP7G5QQS8JBMAEMCGACagEsBTo968GHyIhR8AUAFSOT25XaW2P8DVTdWAUBIgC5AAQQFOIVoIxRkCPEHDZ3Yu6QmDBANhVgBsYAEg/MCoCVIPIgZxiAigEpAfEeB1ACWg7AqYBwDsunJxoD2UX78ULhMP8Hd/iGzhfXHxrKPAy0bABeEDJtytQo5oggAIgU2B42dh74AgIBiBVWIT0mLDFQVoPAzSIDAbQE+D3B2U/IN5lbeGrYfnjQ0fAnQDAqBMmCk+tHtDCIGMDQCsF4QGtcUfoclB0BAQBsPo8lfdVIR+kwpSfEADyCg0KEAHzxIqHIEA5iJ4AhQClYKczcXuYhECsuP0o/MwREADA/BUQCBYvgA1I+caAJKBhEHDZb5S33zoClghAgW0CEPCdHAABBYCSMR+UMYAUEATQEIg1yp+/OAKuBeAof3xz5ac5h51kt4QT0GDLATCAFNBbApMp0BIEDIfNuiMgGIB5K09kEgD5x4G4fSAI8ER/UK8GJQCcANkPEIUgsYDyRm33lSNgOQDAJnyiQQGg4BMFRltAiwEhWEATFiAJGA5rtXpt970j4BoAUsdSKSKyPfYRPY4dCPvmoZTcpCQF7MH9gM8MJjCQLUPCAdkUcNfAhgAAwDIRVgeAgMHosl1s1pu7m44AKwCHqflKUGWiYkaCZX4IBtAXAgJFLk6ANhkkFtAvlpuNatwRsDwA4Cp2AHwnBzoAcAG5klwFgBIgJ4PizuBgcNXJUgJijoAlAWBPFbUmsF9/dIgNC9CXjCIEYAG9bLFcazRiSUfAEgAAA+Q5RgFI5PMgYcwAeXIWzHoQFpDRUwCFICfgrC0IaHIC2smQI2AWAI5SU+qIjBtIdQMyjPmhhoCU7AkoJoCOEBpCnIBhO0c+a5JgoAS4JSK+AByZAweDBlXwOaZ8E8GYF6T1UsAOADyALhOU3YD+IJflBNS3VhwBd8cBQAAACLAAvS3o2w/S5oLng2GtRAmoNeoNR4DNAZR/r4oDHOIYXnBcXPxD9UPttOsJSKEe0OcEZASGAJYKlkUdiI5grNUiFnCWyQoPaLiloiYAP4/mLcZGsMzJgcyBNDDQZwO4MYA6kKUAWyvOQmDQJWcJD6g6AhYKAHQYVBgcpybbxqgHaAqw56QN+LaF0QxAP4iFwCibkQRsND9EEm6JSDAAy7GAlFkNyOmgRAAA+FhAGRYgQoB2A7qjqpcDAW6p6DIAmGpqYLaIpAWgFgQB1gwQZQBmAoN2OiNToLrRdEtFVQB+HY51xJ9HZHAR65aHsCfe4Rg+wR/Bviw+YmIvKYUKf2n3ENEfRAhgpVgJKQACsEKM1YHx3gU5uQQP+OgIUAGYo4CWxRow7F6AO4XoB/jVAT7rgzo0BC56JU8hwC0VXTAAwg58Lr+lnaB0B7BmSK4UYfJbIzQZAg3ZDWjFB+W06gHbjxwBiwEABmBxAUtFgBiYTAGlDGC/wkoFoJhVLUDWgb1qwaMElMYEuKWiCwIAsmcAHMDMAAAAC+D/h6jiKRFAZVQB0gLOT088T/OA/36h4MIBCHYAgwBkgOoB44ZgRSFAbwgTcQv4Q97Z6zgNRFFYAiRKFLEVPACioaBD4g0sj1NYq0iRokhRtBabQJtoo9iRUCh4CDq2pKSi4gEo6Hga5tdnfuMJxc5i30ASktiLmI9zZ+49nhxHZWkTMHiraAtAViSIS4uIsXos9KqAREGWBPXugD0PFBDIkrCRBMQ0cKIIuFarwfdvBm4VVQA8YwDkxo2/wO87bojgu3gWyAtubnDXhaZjxF0MwiCCLKAtBev9cXoFDVAEDNwqqgGAwJiFB8477OF3gVMgvEnBygbwDJoSEADAloD6OFuyY0wCtsO2iuoA5H4JyGMlIPxuFEhBAYAE0PAQsLZngmgJ6BJwqL+s5lXlZIHNoAkIKgAkoDMw1OF3uxnoXBiq2rAnB6x9EoCrxlU58HgzFseZq8HNkM3CGgB+CYi68Tj5LrJAfAZwJcCnAGV0Djh82Y7ZoZwbXQOai+FaRYMKAN2OlYCOd/nd+bMAPYQE2AS4CgAJMPeN2G/mbDFZugTsB2sUBABsiPhQ5aQgRU74n9pX+HP2RP0m/AVxJw/Fh+QdzoPzdaQBjgF7LGT7sDAaxcslZgKV1RhUbaEFHVjLGCAJGO3o0dAALQvs6lcDJUAD4E6CYxGtLKImoMsAWkMgoHT2EUESMEzi9WFJVcSbBXa7gRoF7xoASzFw84TtI5IA6P1hCwBFgOMOEwAc9hQAg4CpImCza14/HKJN7M4BKBQB5zQO4FCGAtDwA6CXA62FwL4auwSwDzICNoM0CiZQAPnfv1sBQAAUABLQCQAIAAAlZ4gfCwIW7zgBLzdDNAomAIAzECcB5pqQ3cMvGGwJTAGAPQkYTdic0p0JtgQMzyh45wAI9c+7JgEgABoAApZzNwes7VkgWkKtPXS0FosKTxZYMQK2w7OKJpkEEvo7NrRJAEfAngYGZoHedUAzmkoAbAIWfB7QvBzerqIAgI4KISSnwe7YM/mL5AQv8j/JFxDEfUa019TR2mGmBpATKiBKAoWSANjG2cYiFQ1IAAqCXgI2GwaAgIlLiI+AoRkFNQDuKnLFlhsxZUK7NQQCOASBaYCQgPqaut9PEbChBAzLKJgAAJDgBgn3Gh0AVGfAAgAEmMYQDsCCXHYSMKxdRVMoAFKKp0oQXRQYAwDPtULoCaEYJAAo5CnmQQIGZRVNAoB89IcjAUECYgHALOAwYz2vTg0YklEwVQrISbBIlHdpABTAIWDtmwTAG8YA8BMw0QnYDMgomAaAnN5IrADknTnAd72o5gwyAVBnOk3AYIyCSQBg2T+kAeE2QTgHVNhWGrsJAwBsIbvjAIQJuFYENIOxiiYAABCEekWnZwEAQLlEjYKwDQByAACg0aEBzVCMgvdsGRi3EnDXAZVWEbYAoBEAgFeVQgTsPg6DgHQA5KGJgOsudABAMcDTEnDKwcgBzSzD2QwCqpaAmSTgcByEUTAhAOwusleQB3LAWCqAJMBIAT4JaBYZr0BHZYHDlyHsKQkAKAEMghAImfH4T7hk9pGBqaBtGCKuTcxQgCVM4tbOUTMWJgDy/GECpu1MsB6CVRQAiOHJMEyZO9h4EaxwcnCgeJLJD6hX1Qfw4MkGshVltItoCHOpcY25aAupwVvaXcEpZ6AFADvHba4zSZhHAwQCfAWpCBj13yioAZBpw6f+lOFODSJ/g6hP4xPidfUWjiWZOkw8B1sIOfCKBTlGyn3sFIc4ANAARsCVlgRY6P2AWbsO2EwzKTmuBnARmJgEjOpXfTcKKgCeZAiSRcS/fx44sQHvLBMW8jGwGlA9IZjE10wCnHIwAFB8uQSUtgbs6kPfjYIAIEVEl4pRItQJQEXYLAZgGmBdJSQACGsAO94kYLR7/ajXBCQF4LxeAS4zhQToAJhJwNsQ2K7ZzwxpwNJPQL+NgokBCFPQoQAFAAABavwnE8sZpBRgO+E/DhoQJuC6JaDpNQFpAQiPP1YDCFxfCgkAABUNZ8MAY/tQAUBIA+ZhAvpsFEwFABYQWXQOkAqAFKCPHAgQgUmAlIB3DIAya1egIQ2oPAT02CiYCgBgECoTdl1PgBzACbAtwk45UAIA5KAB3QT01yiYGoDwFMA3DSDYaQISMKehJMACwN4w5H2V0YjQgNIl4EE/CUgOABCIWgk6/hBIgD0LcAFYvb/KsmgNWBsE9NUomA4ATANCi4BTrUIAoAgAAI4EAIA5qDt3HtDTPSWTAhC/EkT4OoO+HDARG8iapYCbsaU77logSMCun0bBB8lTwMneYsAyljsAzB0A1gBgoQMQpwGlh4BeGgUfJFeAyPFHoB6IHEDDXgdMLAAYATdFpsW5a4FDHwl4kF4BkAKiEcg9SQCVADjEre+RAABhDXAvGQEB9df+2cTuAQBnSgAUwJ0GOgBMTQA+5Bkish7QcwLSA4BiUPz1g2Y5GPNASwLMvUMBAKJTAywCRp/6ZhRM3A4W9+chgA0sHQlov2TWBADTQFgXghqADpOPgP3HnhkF74UCkOzMtSAxe4KXAMAxCBsAvCOBKlQcATeMgGO/jIL3AQD4EKMJQGvYmQWUVg6YgoDVLEPEEeDWBPcXvTIK6qbQpOE2gGJmgkoCMGIgwM0Bq0WwEp3HEtCM9vs+GQUBAEkUOUq/JHqvQbMejOuEPC1BKMBsdZ15ApiFsoBDQI+MghoAebIg2tA6gYHxSIBxpYgnCZgtwdU08wayQAcBM0rAdje6GPXHKCgAePz0WZYnDG7+t4O/YncBveUgSIDvMiFIwGqS+SNCA6YtAZumvqh7YxO7JwAQNPlC31eDD1jmEBCgOgKuL6QFgPiHH6f0EVCZFaFtnwhQADwnxf8RHAKrL4hNQ9wdQ3Rr4KrUxjwsBuy8cvw9WUCsBSgB/TAKtgDQdJouvD+bjoJn8JEbIBlWErgqjZYQcsCqMhSAZf3L8bKU3yg8Yx+aricV25KyyLMsZxjMOVLm5uKCgH4YBQHA5ThdXOLRCM6BGTCFQbNBwJKPV8gatprzYS/m5XrByzr1/uLL8eOnr1+/ff58e3v78+d3Hj9vP3891s12Na2W46Kgp237AlMKCiOgoQT0wigoAXjxvGD/3sluJ4NTABZaGdAuGsUswE0CmAW8m1zRkb+hSbzZHQ6Huq5HdE1HIfhypBi0HFAM/vz6wePX98/H3c11uRyPr0qhJpwABs9F3QejYAvA5Xh+T2IpH+lfSKdABHKB/CXrgS4BrjeMt4PEThHqW+V3jALGAFOCj1QLGASUAoaB5OA3jR+3x+bdpFpWE3oioQGcgLf/v1HwL3vn9jJTFIbxGGdXNDlEKTkkh3IocsgFScqpmdiamtROMxnMrWkcyyku+AvMHZkLLuVCyJWaHKJE+RDCf+Fda717nv3utfaMzDDbzH4cvtworZ/ned611nzLADBl6bx9RwauUkn9RuI/MwoSAkYAy89CDzwCAEAAPiMUek4UDMwIfOCCcYJ7gMBQ8OYNUdCoFbz8cdME64aA//6iYACAd7g0OJUptekXSf2BvyoZDkjdEQgcAM9BOO6GtT8iVLcZ0FmQJQguGQgCCgwDGgKi4GmjWvAoR4IU2Py/XxQMAFhyJJ80BSAYBkgSASy/k4AyAPBgAZIATgJCgBjQNmAaQUNDACswaRBA8PDWuWKBSqROgRn/+zWxNgDl/CDl8ROQef1DfwUFcILY0QA9UJFSAgFGrqekqoyAsYFTphXOICkI7DzgSsBGcO3UUf+oJuDM7f+bgPHjFQBTly7JH0+EzGd76SuLKaAV7YbAARDg+C7yCAEQoBhAHyQpBAiCqBPcCo8H8IHa0WpNEXDt/74mRgTMnTCFAPASIcbAiNdffbEQAAFdQwAAcA3Ac2KyCpgkICENLpECIzAMwAfeZ0/UaT8gm2AC5szupJlKixdP2rJl+rRZfjF58kmVgnfkSJltwCRBdwJwLAiuAgtADCAHiADuAvCBM8yAHQZg4PW9U7Xz2ca9JBKweO2O7Tvn/7auJ1Vfnv349PxdWXdUdoGuBDAATgKKnAKCgBoToKQZgA1kzzTAgPABg8DtGafONG4l7qLg2u3zmzdvNn9fN5KrK6/Grn//efwIXAAE2ABYnxMBAEyAEgiowwOYAUSBtAGzUwQGgjrw9MyMxuVkXRRcu7N58+LwqNm8Ojb27LlX8hgBMgEnAQeYABwM258WlgRUQQAQUIomAf0IMcBzAdvA66fZ7AW6JpYUArZs5+W/OhS6eFUz0Hr14+MRTUBZEiBvEsSOAvAAIAAPwECoxAjwcQGPBVmCADsEzECAwO1GIzEErJ1/U6/+jVbrylCo1bqhGRhrPi97bAIgIKp98TWgYA5zLBOok9gFhA9wIWQjMBQQB2I2pDagEKCpMCkXBXc0zepfOX06lzs9BFL/iiuKgebVVy/z3QmABRACkoDYGGAEBATtKAAEQR7AB7QNGATuNxJxUXDHTb38p4di7aHcaY3Aq8+eJECEgD0L8reRxiaDfEoAVVDYAHwAY4HYI0IWKBtgBN48vJyAa2J6/Vv8fz83JGIfaN0gAuABggBxqzRMQHQUwBUxeICbAR4NTwKCMAXZsA2YLvD69bWBE7C2Scs/NAsvpRAgAt6WC4SAaYIIgd0gAB7g3g6AB8AEsDVMBCALrErQLobSBu4FCNwf8EXBLfOHef0VATQSfMwfVzvEIAAW0MkDcDlAFgEZBMwAq4Y8AAXcDNkG+B4JI/D6/aaBXhTcfvNqKzfUal0c+0r3NpkACgFYgCTggCBAFIECYkAiUAUDoIAwYMlSIGzAIKBM4MWmFQMgAAEw5OuvCHj1PF/g46GIBYQRCN0Qw7EAYgAmYCUBICBFIBC7BGBAI8BVYJAE7GzeGGL/5xS40Xrmq+NCEQJm+UmuWYAUQwAQAAPoA0wBOIhAwDbAjTDIgRfvB0bA2hFYfyLg6hhZgCKg3A4BdgCtAABBgLsKUgzoIEAhtCiAG9hWIGygYRC4TTlwfwAEcAMY+gBQao19oLXzmAAFgLAAx6aweGCWhcflQAAQgMBAaEJAJeA2MIMRMCbwdNPUcQPYEVo8fxQMQI0C3+oFUwRtC5CfF+tOABAABEWm4GgcBWBA3idkE6BTok2TM/+egLUXr+zPjYJaY8+9ChHAPRDbgSz7pjgI0IrsC0oEungBIMB1wrYN6CqgTOD2pgn//mRoR3MkDIAAePLyuE8eYFmA/R2EJAK4Ls5iAuACNgPSC6oseXqEQkg5oEyACBjA2eD2G7nR0JU7X4s+WQAGAZQAknUuwDlQcpoAkgCNUIwGkMMKhA0YBLgJ3P73N0R2jkQFJJ1+/OWYTxaAGrgPJcBOATQBBwLHtQqBKiTfdoMYCIAAPmemtgX0nsD7aeNX/tNRYM6uEakABMC3qh+yAAbA/d1DXAgwAbYNIBBsBiAnA5wE540JUAzc2/yPh8HZC3K5/SOh04/vVotFbQFEgCwBgaz7AbgnJh6ZDCQZ0AoQAATurQJGAC6gTIBi4MKmiXMy/zAEZo4SAPUiWkCoBECOIgAT4F0h2QdJYQQKgCCuHIIBIKC6AJlAVk0Dlzp+P8EUgF4AOGEB4M4ATgEgIF8YkwgoCLxCwEEFZuDDDFxGYCFAZVDFwOV7yzvUgBSAngCg7RqugaWSswWKJ8eZAPnSLBhAELAKwgziIQACCALKAWMCjcuNzVMz48alAPQfgEcEAFsAlwDMgZB8Yk6aAB8PkOw2wCCIWljBmIgjxBAE0Q8aqm2hxoWz6+bOjqsBKQC9AFA7dkzVQACADIAUD24TQBBEowAcRGsBM1CRDBiJLmDmARoH1OnA8tjdgBSAP1ZOA8AZgBIAB5AQuJqAOR+AC8jBEGZgGgEwkGkgGeAggAnQd6CasXpqJpMC0H8ATlaPcQbIFtjhseEDSiEAgokAMwEQgLgQRJzAr1ibBPiUSbsMkglkz63JxIRACkBvAFQJAD8A4HCcA+wRl4SMmAF2AbkxYHPASYBmWOHtQjsLjh2VJqC2BGZcWDpu5d8NAQAwIuvPAHAG5PMEAKYAVwIgBuQTM3xbCDZAP2wKUAcYgQADX2SBCAL+sKnqgrX1E2ZnUgD6DcA5A0BFXwzSpwGOKQBHgyCAFTYBEhNA6ugEJA8QVFjCBczNUn1SSATo04Hl41a6CEgB6AmAet04AEqACwDsCaIIsORMiJlAQuA5GAjtFKEOhKsAJkLlAbXVkxUAFgEpAH0AoGLGAN4IiHttgJdfICCembAYEC4ACoCAYy5QAOATxyBgWW2RsoAUgH4DoDOAHYAjAB3AIgAuAABkHyShE1qtMAoB+kClIGxAToTUBBbW3RaQAvDnevzoFAEQjAFogarzxyKAOmgHgYsACwEFgTw6QhQELuC3mwApIODE37UAALB//8GRkALgRN0eA5ABtjgEWBEAMBRgMMRYIH0AEmcGvEcoTYAHwqrTAlIAegPgBMYAAIDXhyzBAQQF6jNk7SQInKCEsSAfooBYkzYgs4AJAAImBogAYwEpAP0FoO4AYG8sAegAUQT2hcU+EK2EgEC6gNUHnSZw4ujqibYFpAD0CgDmwLADdHh6Dg4gEYAJiLmgRD9dDHjhueC4J9oATEB8G7qTyzNEwF8HYETWnwB40I4AC4COBMhvJiLOCSUC7dlQbg4AgrBEF5AIcA746+daFpAC0GsHqB7DRoB0gDgEsPRScAAQ4NggKjEEaASOsTAUA8W2CRzbunEunQqmAPQNgPMKgPBOEACg5Y97bpg7gA2C7AKYDNEGAmEssI6OnU2AEfBXZVamAPTTAWq6AxR9vhEAAJQ6TAPxj+M5GSDhc2UwAsjZByu+YIAIqGyjSVASkALQSwc4X1Md4KhfcQHQuQfghxAOCmMIcPuAFx4LwghEtgbrVANTAPoKQL1K9wJ1CZQAdEOggwWwJAG4OyIZCGTtETsJ8DZkIjUwBaB3AIo+IoAJwPLHCxYQYwJuBGwXKAOBfBcEClunTPhLGQAADh48NBI6CABwGmQBoNqgQ1h4iwA8YCoYQA5IBsITgRgJUAfDCFAGpAD0D4ATBoCKBQDUzQKAAIQUCG0Rh7qAhQDkhRGwZ8LyhrmLhQWkAPQNgLwFQHcESEDAQcBevGSrDwkYANhA5y4AAgIX8LZOmZsC0HcA/HgAEAG23A4ABNAF8NlieV4IBNwm4EkTIKkMSDIA+zsoSX8nOkDHCOi2H8AO4N4cDMUAEEAbjCBQcpqA50kXKJY2ZEQGJA2AOx30h6u1/04HHeqqHjoAq+PRkFl/tw64EYCYAfaAX+ydSajTQBjHUZ8bXgRBUE/igqDgVTyJHocmT7TVYsQSU2sRLyoWCh4FD4IXBQ8iLhRcqJSmBQWpFsQFRFRww31DvXgRt5uTpf6TZmaaZqmJ+m9eUh5JfDK/fvN9/5lJS2x70J0OFqkXNCe5AKy9wNcVEDBc+18R3HRtSADssQD4AB4ABheE8IX75cgEcn0EoCo0IUBRyIDAmQ3unL1yTnIBaLQ+kUKOI/ljvRHglvWPco6jAvnU8nNLMQCu0cDxAADwIwAyAdlGgL5c5qDlC7DnkzOWFlEENi6kfcCECTECECYAdA/VCFdPugFuvaH7hHBVO9RdGx0AJQEA4lwQL24yaBLAdIZcVSFnUQlqgq0yLQQdISBZAOQbzbskQ9jKkLuXG0Pf8LLwhs2hbygGQNAF+LCFxZaAudkvJwHCyeS2P4g5IzvG10ybk1wA8nr3GZEIUxLp7PebBiAB2N/h3+9ZV88HFADAjCB2EghLUCBZ4tjCNgKoBaECoyRkLixy5wIbZ88aixWA+aEAaLRuZQj3E3vHbwhAALhD+Pe7FSADEOcAOWskiPAk0Y0pMwxgVREnJ2AtJ8DUIXcuCPX1AxsXxtIHAIB8XgmhRvMRv8nkt611yhBaJ8Tp0eWGEkJ5OwIAgGKnU6oVaoXK8MJUwUqNq1KpU3Ko45D1jbZFyxFwRgHziGnENAbIKxINwIbqgftE4rXZy/pQbdaov+TRJJH7B7QNSgjlz/YDsP7bA6qTw+vBt4pkWwKVr59v3DjvR0/d+vx1vWUQmwiUMFK43T1OtCmzamqSAVAal58TiRtBn59pRHYrBIBA0i0A8IyQwvoHP95QnR5aPx5UJDsG1D4fCajPHbiDSAbMzZIdA4qrl40lGQDabNf5H9snZ/3fPq9cFQST6wHanx8BNpoR4MGbg3upDg6r0ycNAEwEajeO7AqkI0879iJzqIdAybWybMfyMWNAKLEA6N33NX7m/qrpu90azVd8kmrvu2uVAOIBsN4CYK8tCoJ/2QBQ0S4gBADjRTcBePAM3QOB7c4sMIEAKNQMEJSCFx777Lk3PBaBdBcg+ZcYgAIFAM0fCICMVDkfBIAjFgCYRQ5ZyYCTAGnFpHgBUMIKZgCrFPTbco3Ln0hGYAEoQSUGAATEDwCa3waAyg2AuarIbRFtJKsmLxpLNABr66jeWNX7Wp83kQQ3qTcSCkCYLqDfHDaORc9Igbx6+pRkRwCRGSD5LQX11ssIwgjkE4DTaNdRAnDEAmAcq0qLJgB08xBQWLxyzHCDEwxAXtt3n999fxDl7+gAPhCJbwGoQSwAcRXgjgAHD9L9qCMAVcGioGjPH+0xAARoj7Bz+RiSgOgBUMIIFbyg+a5WB0KWr64DQpFZAP6TQFrb/YEuwCYAM8cgJwIlVxmQxAggNAMyPkrBMkrAKC0A/zkAlXGg2+gBsAQEXAQYOykeMxgRoBxeG2AGMGv4DYMuPzTg8vASAGA0v0nAHwAAAgCOEWNjR1aMLRpLOABlgRmQIZ+aDfHVwhLwLq4OI0UYAWwGDo6uCzjfB0B/R4C5Q2TV1OQDIDIDiHSrrosu1uvvCOFbAHnxXxgeAGbzxw9Abtyj3wQAAwrA6mlTjOGARANQ1mEGMErBlu79V8LDI9aQANhpwOgAKAEAZhjomUTb5SXLJvfGg5ILQBlmALsUFF35WmgBlMPJPwBUowRAHhcRgOUE44tnjU2JEYByNMqrqOS8peA6VeFemL39kHvhwwNqfgQAIAaYx5EAUEMEYCDgDAUbl6cBgDLMAFYpeJH1QUboEFgA5VASA2C0+NCKCgBEAC8CzkmE49uXpgKAMswARi13qMX5JG9oHaoQvgUQMgEQA/CDTgcJNCEEAASfEEIByI3zZTNAd8XcQloHpgCAPMwA/6WgGJv3LmyiBuDbg5MPTgadEiZZANApYX06b/wM1OevNdleRsYRlhiTFXECUK5GJpgBDL07o7Ou0S9/5JeAdy82qlHJA0Cx0DG+N6YSRJnf4p5Soy9zT7dCoeaVPVeYbgNEAZhjADAhJgAiJKDdQj3nqedbLADK7e4T/iXddtg/TghATpYxKXwoSVKmFwOgAWuLWE+Zcz9WIIeDsycomhFgzqQUACA0A143vR9nDUGDbQFUQ0oIgP2FETYDkmRt9MeHMtZeKFkgo91zCAKy3fo4AIMinRISKwBadGpcREbvreiySv/5yuNLKAE9FsDFhhadyo+9ALBXhkiAgSc8SEAoibuMEI8XgtwRAG8KhhdsOUGJB0DJrr3PbdBHaFAAc0cAzBZFC61gAIAAMQJ+hEVEA9cO0Zfd8lZuYFNB1kxLCwCazjUDJFKhpWDf2fW3MuG6h01d+2MAoO3DI4AIwAfAPDrDP6gYLxiDAVNSAoCmN1HVear6pt6Py0v+yZdx8kgBwKJAEh4B5H4iDBxBwEwIrbe/f0dWT48TAC1S5VswAzx6h0ZFuOBbAFqUqvoAALIBIITuwqYCspkLQOw44H7gIN0gsnrG5NQAQLv1u8K6DmeWq4IS8FV0GWCwCNDrBkgk/YAsTget5rfeekVmL4sPgAVRAyA0A14bzQpUXnFPfNKlNeIoIoDMAUDyK9MK8EGAf3kBWBwnAFrUghnAyOxvb/7drkrrAv9pELfOoLOICoBrURpBPSFiGBKBgt5iEBJeAFamCQBVhxnAKAV19fdpd7in3TFOi1JMADqGF8w1g3PYe4R2rfgVNYbdhrDMFwuAsdQAoFWzG7hzvCtv63Zu1z6DQMGwAKpa3AAU1h86dzyQzn2pEMkUqXw/HFDfa35jgEzmzYoVADVq6U1k94zqTjXVrr8kEt8CUKMWA4D99+6dCKJ75wDA4Z9HA+nnYQAgJIC+l9IGgAozgFkK+oQkdgCO3zv14lQAnTjuAODosUA6KgYADhElQJo3M2UAKDADGGsF2/QMDaOArMkjihqxmACcu/diTwD1A7A7gAYBAH9IdgIwMSUAqLrADHje1I0A8EFgAZgB4K8HQPJTEcrxA6DGIK1dhxngKfHbNCdDAGBYAHH8TVrSAChIMIjFBJBYAVBjEXJ8lhuk6xdf8y2Ay23V0N8OQE3qtT0gYEtKIQCqfhNmgGe5sKqeRaHIsABM/e0AVCTZMVIoQoAgCUwPANUtMAO8q/0uIwB4LIDNVdXU3w9AxhAiAMYKEBZcAExIEwCo81iGcJcLx4ffAeAfAaBnCiMlBAeZNAPANwMy5PVHXgdwHQnAvwNARjbTAesh1C4MzN9myNx4AcjGo2rrQo1I7BCAANA/aahezcYjNcEAOL+o2jggMUgzAFn95l1eoOf9/tVNPRuT1G6SAZBdb+0IYGaJKQZA5ZsBfAtAzdpKOgDGfyIaAECA7KLAOKQagCzMAJ+iFgCuTjoAJDwAPMm9Q7ojQDbLNQM4FoCrA0g4ANF0AWKlHgB1m8JM93gWwGMN1yYfAPIfgIFqN5kFH9cCyEYvABDhcHCOmAQEHw5OEgDZONW+6DUDuKsGYkkAAEC0E0KIoTATQirkXwCgWmeYASO1AABAtFPCCAk5JcwAQPrrAfjF3rn8vhBFcdx/IKxEQmxsrCTWliIyv1KNiveoMB7xXIhHSUQXzKKEBUHsSCq5FcrImBGvqJSqiIVHQhDvVzxXbNyZaXvQnkunc5t5nG9+9fvJb2Za7mfu955zz72DJAMkpgBwANCi0N4Fn3uTb7XKhGMOQHZrRzIASQFIGowAAMGVhUMyg7/8qrmJgFcxHmMAjAvPU/+TApA0AgAAzl5DF4b4aj9YPsR/7E0p9wuUguUlgwcgK1kqJAPEKQA1K0cAAL40rH8BBS4TPohADWF6tAEQJgNggvjr3z1RpADwWh1A8KFU2xLcRofmlwzAhKxsqU4y4B96bBpqVrLkATAdW1LoF4WmH7T+iD0AvEww0gD80fztb/0KrEEyAKpkLfm6G/YBQncDKG9V5Uo+ACAAIABFHgCjBg8DEKUBVZmSBABOgPsiALgMEwxAZAI1yQRkAwwD8SIX2GiOegBPS3J/VgfjjxgtL1XlCQBAEkGDV0IAMGqwC4DYBEyZXUBXAFZ4qeD0ptm9Smlrk28lAwCj8uK/Z4NrhqZKEwAAk0E/Tu/xpdPf2wRs+nb0/dFOvXde8DP8DQ7gE0r/DcBwmQCoMpVd2PlIeDwZdHaJikgGAOlZp82iH5XM0wDA0QM+dfS/AVCiC4BmNLqlgbEd5SV2AV0B2FO0rl69qvcqq7QHAHh/YL0vHXjPp4P/2fRNAEZHFADNqNzoZRz9xpRGAALA1UKhMNSr9OJvABz1CwD0AHjTexNO0bWArIYsAsdMYPvX4EckAMDNUAKgKJ0NDwBwybcATZJwA8DnBA1NlsIGALeA35ofMgjuVyup7CqyAHADSCm96YUpiYDwAeD0AK0ZBJhHgkyyMjAANElS7bMPkSWA168jv7h7OZfVPCUBgJbJN+96pd0ReGhEHACj8VRJISH/DWx18P2GrC5ADSEAMJXcvPXb3z1FGgB24fkMZAR4/OQJmB8cjAmEFgBHnc8riAEAqs2LQVPYJgD4/jEPr2ieCSQHgOlKHAHgBoA/NqBSgkLRwZhAaAHoPhbir4gDwC7s3YRuFXmBscoTfJewylYtcIUSALSqfKAAaFJkuw+DwWyeMfMFvkLgrITINKQACDRAABYGL6NxB98J2GQLFzITf7TQ06qxMHhp4QNgemwBsIsv0X9e6nnF5kdgy0X4aTOeVxi/SPwBiG0PoHGLR+/vtw3D6yPwx0U8Ktn8QxEAkQXAaDwTPA2slHWOyZZOHse3i3YgCR6AsE0HhwKAccEDYONty6O8lsEbVZ4oRJeKF20JAIStICSuALgDPHQbmLLqHaV+nYk/NvjJBZkAyC8JwwUlYbEFwGi8RmN85U7DEBsFHBc8AOEqClViCkC2fOkiau53r1jtt9Ossw9FQ4WA+wAOQLjKwkMDwMJgxWqIAXiVv+z3I9EdpLgJmEwqALAwJAIMRAkAoQE8+tPaRQlh5VnAJqCVuwKQSjwAwbZ/tnxLsBL0xZ+3tV25gR3KTeAkjxcDEQEwOAByrIGuBOVJYM8AQP86mgAYBAC5AMVqj/H7n6d47T8Px1PG7oChwXLBySIA5AOglk+hBsBrfjsblFXv4yPGi+dLdq5fEQCDBIBhCX7P1KE9gZjzF3Fi3taaxBAA0QDAiesQuUlg1uWU6h0MGQ7G4xoLEAAKAyUDYA2tvIs7+r1TZavLOfqVf5wjEQCn+UPf+BECgFUxA3CTu1XW9SQ0b+DNHTOJAMxasXwZzwWne9ZvqeDZaZ+aHTsAWA0r8/IKvazu72RfEG0l+6bGZAGweNanz4d86fOn2e32//TlsC99+TQ7ZgBo8x5gnblr59i9bJsibu7O/WpJAiA96/PPI77083NaaSr95aBPfUnHC4B5eETnJoEraESHTx64sSM4h0/hABw6cuzVq2O968ghAODwwQ2+dPBwzABgpnArgBcmCoBdeT5DdGaNyQPg1UYfIgC6SNPRud1mWhc/Vzx4vHsioxEAEgHgvXffEhuAlwTGz7bwErJm/oC/Qd+yyqcJgK4AzAtAtulVeeNGLjqbueWBqG6Y9jwCINQA8P71oSKa2S1awrb5uoBPIQgiSH0hARBqAAS3sLfUh/3rfK88EDcBAiDMALjjePwOvnembPnpQQCB56ZNAIQXgJzFk3kpPJnz7N83sFceiGcRylaOAAgtAHxGT9R6D8t67j9GkU/+YSIEQFgBsCuwFQCSBP6fMOKGYK08xJH+pRMAcgDgmbwnIgN48n9Nx6pvRV3AowtWjgAIJQBgAH1F8RaUB2KzyQRAGAHgdZ3HRSHcdTAAocS5RL5e9GXFJgDCCAAyekOTwHhCGC8o9ZYKEQDhAyADKRwfSWDES/BoMjPPhwAAmg4OHACriMzjoElgXLmrZ+8GcS0cACoI6QLAWH4b+xU3ACjmwOL3zH9fnzW8VSX4nLLdx4flAFBJWFcAMv7Fqq+Fvfa9BeVcDzzZlUf/NIF+AKCi0IABsIrnLwbZYragrNRdKnSpaPUDAJWFBwwAa+AG0EwC64Fd0Isp7X4AoIUhwQLAqo8V/D+P/+ZNr+1ledOK+BUfV1kfANDSsKAAAAMQyI3ce2bqtiLSxfNFiwAIBwA8BXRbWTz7b21qiv/Ak8C9Q3Xy3oxNLXVcfLFym0NFAIQCgMyQfmlPpy61da2kZ3qWXjp9CdTl8vpQxp/0EgEQ9CCwWCz9rSKopPtrpyKoy+UzGQIgNADoYoXoogSACIBkiAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAiAkWMzQ8nQVQKAACAACAACgAAgAAgAAoAAIAAIAAKAACAAEgnAmjlzCAACgAAgAAiA5AKwnABINAB8XShvfwIgaQDkW1GAC0B6hrM8lABIhAgAAmAbtwACIMEAtMYA851EkDsGIAASBcC2tXkCgADgAKxxAFhMACQSAD4EcABYQQAkGABIBM5IEQBDyZADQD6/btWqRQTAbxo1NpMQAvTi6R35ZhpgDQHQ1rTkAHBpsweA0/4uALMJgGHDpiQFAMt8viX/51zQ7IjsEicVgKlDCQHA/vh4HeSBnERgZLYJlArApJ2FoSQoY314utoNAlwLoB6gpfFj6kNJ0NX9bIQTBLhRYDsNEI3ZYBkAgKbUE9EF6B+et6eCIAigHsDxgCSYQOHdx6fOEACCgAglAqUAAJq2M/4m8PXdhx87/pgJiFIUKBmASfWJsSeg/u7jnXVr8+AAy6OUB5IDAGhK7Amov/vwfbPXAcAYkHqAliaP2RlvAur7zhV35dsOAEMAAqBtAhPjGwsU6jvffXyWb6UBvSEAAfCHptYnnotrLFDYue/dxxdbWg4wP4IOIBMAIGDizjh2AoW62/6bN/MOgGeB2g5AAHQQsJN3AvV4MVCo13eee3fOaX+nA4AYIGIOIBEA0KRf7Jk/S8NAGMax1QgOhUgHM3RxE9yKo4EORTr5IRwLmRM88qeEZBCF1g+QrY7FJV/Cb+BWdArp1snJ9+5Nc9cuFirNXcnvIHO533PPe0c7UAIpy8CBQO2n4yx/nqN/XgD0n6A6AJvc9j9oBIDRQZBS+1m+WE4d33aszSsgToA6ACLdwQgGAZBuzVhismyS5z/zwOb+ywLgE6AOgEi33xlBc27PRF7yRZ59feo2WfkXC0CtCbCfACBa964/6GzNq6y8vyy/53HgE/TPBwBcAZWbAHsMAHJx/heGoWmn1z3zbfYkBbOSKRDHcRi5xCdeIPp/EP2rNAGEAEhDo9E0tJ45DWMZCAsiIEmStuu6uq4z/aV/eAHQAVAH4H/8Hx0ZxycQgCiUhgjg/j0vYPXP/Q/X/Ss0AeQMQJMG4KadRJWScNqAi4ef6cfjD/e/wj8fAKoVgMwBcHHXq10iIB/tU/14/Ll/+gLgBVAHYPcAtD3Y8qpZ/QSPQgIC9rl+OP7cf1kA90oVgMwBIHTPK10BPfFgPaCfQj6zz9of3/9r/tUrAGkD0DJ1n1SOD4t+GDYF7a/00/ffpn8sgDoAuwVAa5lXji0VDmBR+6z8C/1DwT9eABQrAHkDcHZpOfJgIY949lE/TH+o/9I/HwAqFYDMAfhlvw5SHASCKAwvZyazz2b2OreJCxFBaAQJSqvjAebyqdRLpTtZB3wF+TXkAN/rDtn+CPq/PtZm+jHkxz/3fw/gRQP4PvwuG0XijpZr0fTBr/6jY3/mAcSFK9ibvvDDf8L//9z/PYBXDOAYIlEhRNhLM/hx+z/7O7sAaAfwdTgOgachx4c+/O/Xv1N/5gF0w0zyKLy8wDd98OP4m7+3HwDmARRrt3dzp+jqrvTd2iZ98Nv179SfdwBl0e69gNXCnS8v8HH4M37H/rQD+CyLut01gOfVho/Dn/H79WcewFQTJOxZk+Lj7Is++Bvw+/QnHsB6rgmatNv3qPZJ//n4O/RnHkA/7p6YI8DDPuknfrf+tAP4KH+qM089qtQe+Ekf/D79mQfQVD1Bgp3YYf+gfwK/V3/mAZwqsppGPglf/Z3zEw/gwj4d2wAIw0AUragp0sEADBPZ7th/FEAIGURFd1j/eYPcT5vjeG+Bu1bP6fPvH/zP++sGsMwWq4JIyS7+7/mFA2iThyCzsDrrawfQTUKc5/bgXmF9Avgipy+zvnAAwx6AmwK/KTa+fADCehVj0w1AroBekG4AY8cbAYAAQAAgABAACAAEAAIAAYAAQAAgABAACAAEAAIAAYAAQAAgABAANnbpoASAGAiAGNTA1b/ag37qoCxMoiECIAACIAACIAACxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0DcwADrBNgCPPHtE2CNCbAEeOgGGDPgb88OchsEYjAKS2QmMy60QcoKcgA2SBwEKfc/To1Tkl27qStTve8EUf4ngwQBfOv/B/B8BIzrfYWz+zpGewRYAIMG0K34A50GMAQMIPW3bryYDg4uZuxufYoYQMqlv07TsrzBzbJM07UvOcUL4JRyLqWKtOoDDlolUkvJOZ1CBbCfgHOp8yzyDicyz3Mt52gHYA/ATkAVkVZa/DppRaRuByBkAK8CqsBJfe0fKwA7AVZALtoAXJRadP5t/2BvAI8ArIBHArnAhc2v+4c7AM8CNIGU4Sbp/CH3t+8BmsDWwJDgZND1t/kjfQfYNV8JwJfNH3B/1VgDcNYEnX/TGEJw0ZjI85sGHg6y/u4Yv/Jo+FcBAAAAAAAAAAAAAAAA/OQT3R040atZehsAAAAASUVORK5CYII=';var Th=function(){const n4=bY;var s=this,u=s['_self']['_c'],v=s['_self']['_setupProxy'];return u('div',{'ref':'excelRoot','staticClass':'excel-wrapper','attrs':{'data-viewer-zoom-provider':'xlsx'}},[v['showBlockingLoading']?u('div',{'staticClass':'loading'},[u('div',{'staticClass':'loading-card'},[s['_m'](0x0),u('div',{'staticClass':'loading-copy'},[u('span',{'staticClass':'loading-kicker'},[s['_v'](n4(0x3aa))]),u('strong',[s['_v'](s['_s'](v['sheetLoadingText']))]),u('p',[s['_v'](n4(0x218))])]),u('span',{'staticClass':n4(0x3a3)})])]):v[n4(0x3b2)]?u(n4(0x138),{'staticClass':'error'},[s['_v']('\x20'+s['_s'](v['errorMessage'])+'\x20')]):s['_e'](),u('div',{'staticClass':'table-wrapper'},[v['showStreamingLoading']?u('div',{'staticClass':'sheet-loading'},[u('span',{'staticClass':'sheet-loading-dot'}),u('span',[s['_v'](n4(0x304))]),v[n4(0x8b)]?u('span',{'staticClass':n4(0x120)},[s['_v'](s['_s'](v['cachedSummary']))]):s['_e']()]):s['_e'](),u('div',{'staticClass':'table-host'},[u('div',{'ref':'tableHost','staticClass':'table-target','staticStyle':{'width':'100%','height':'100%'}}),v['visibleImages'][n4(0xfa)]?u('div',{'staticClass':'excel-image-viewport','style':v[n4(0x267)],'attrs':{'aria-hidden':'true'}},[u('div',{'staticClass':'excel-image-layer','style':v['imageLayerStyle']},s['_l'](v['visibleImages'],function(w,x){const n5=n4;return u('img',{'key':w['id']+'-'+x,'staticClass':'excel-image','style':v['getImageStyle'](w),'attrs':{'src':w['src'],'alt':w['id'],'draggable':n5(0x2d1)}});}),0x0)]):s['_e']()])]),u('div',{'staticClass':'toolbar'},[u('div',{'ref':'sheetTabsBar','staticClass':'btn-group','attrs':{'aria-label':'工作表列表'}},s['_l'](v['sheetTabs'],function(w){const n6=n4;return u('button',{'key':w['id'],'staticClass':n6(0x327),'class':{'active':v['sheetIndex']===w['id']},'attrs':{'type':n6(0x84),'title':w['name'],'aria-pressed':v['sheetIndex']===w['id']},'on':{'click':function(x){return v['handleSheet'](w['id']);}}},[s['_v']('\x20'+s['_s'](w[n6(0x209)])+'\x20')]);}),0x0),v['statusSummary']?u(n4(0x138),{'staticClass':'summary'},[s['_v']('\x20'+s['_s'](v['statusSummary'])+'\x20')]):s['_e']()])]);},Jh=[function(){const n7=bY;var s=this,t=s['_self']['_c'];return s['_self'][n7(0xc6)],t('div',{'staticClass':'loading-brand'},[t(n7(0x389),{'staticClass':'lg','attrs':{'src':Kh,'alt':'xlsx'}})]);}],Mh=r(rh,Th,Jh,!0x1,null,'70a78385',null,null);const Rh=Mh['exports'];export{Rh as default};
|