react-bootstrap-plugins 2.0.0 → 2.1.0

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.md CHANGED
@@ -14,6 +14,7 @@
14
14
  | **SearchSelect** | [SEARCHSELECT.md](./docs/SEARCHSELECT.md) | Filterable, searchable select dropdown |
15
15
  | **Label** | [LABEL.md](./docs/LABEL.md) | Bootstrap-styled form label with required indicator |
16
16
  | **TableLoading** | [TABLELOADING.md](./docs/TABLELOADING.md) | Bootstrap 5 placeholder loading skeleton for table `<tbody>` |
17
+ | **AutoTextarea** | [AUTOTEXTAREA.md](./docs/AUTOTEXTAREA.md) | Auto-resizing textarea — grows with content up to `maxRows`/`maxHeight`, then scrolls |
17
18
 
18
19
  Each component guide includes full prop tables, usage examples, import patterns, and dark mode behavior.
19
20
 
@@ -108,15 +109,17 @@ import DatePicker from 'react-bootstrap-plugins/DatePicker'
108
109
  import SearchSelect from 'react-bootstrap-plugins/SearchSelect'
109
110
  import Label from 'react-bootstrap-plugins/Label'
110
111
  import TableLoading from 'react-bootstrap-plugins/TableLoading'
112
+ import AutoTextarea from 'react-bootstrap-plugins/AutoTextarea'
111
113
 
112
114
  // Single component — named import
113
115
  import { DatePicker } from 'react-bootstrap-plugins/DatePicker'
114
116
  import { SearchSelect } from 'react-bootstrap-plugins/SearchSelect'
115
117
  import { Label } from 'react-bootstrap-plugins/Label'
116
118
  import { TableLoading } from 'react-bootstrap-plugins/TableLoading'
119
+ import { AutoTextarea } from 'react-bootstrap-plugins/AutoTextarea'
117
120
 
118
121
  // Multiple named — barrel, tree-shaken
119
- import { DatePicker, SearchSelect, Label, TableLoading } from 'react-bootstrap-plugins'
122
+ import { DatePicker, SearchSelect, Label, TableLoading, AutoTextarea } from 'react-bootstrap-plugins'
120
123
 
121
124
  // CSS (required for DatePicker)
122
125
  import 'react-bootstrap-plugins/css/plugins.css'
@@ -160,7 +163,8 @@ function App() {
160
163
  | `SearchSelect` | ~1.2 KB |
161
164
  | `Label` | ~0.3 KB |
162
165
  | `TableLoading` | ~0.2 KB |
163
- | All four (barrel) | ~6.7 KB |
166
+ | `AutoTextarea` | ~0.4 KB |
167
+ | All five (barrel) | ~7.1 KB |
164
168
 
165
169
  Measured with ESM, tree-shaken, minified, gzipped. Your actual size depends on your bundler configuration.
166
170
 
@@ -215,6 +219,7 @@ src/
215
219
  │ ├── SearchSelect.jsx Searchable select dropdown
216
220
  │ ├── Label.jsx Form label
217
221
  │ ├── TableLoading.jsx Table placeholder skeleton
222
+ │ ├── AutoTextarea.jsx Auto-resizing textarea
218
223
  │ └── *.d.ts TypeScript declarations
219
224
  └── css/
220
225
  └── plugins.css
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkM3OUUXZG_cjs=require('./chunk-M3OUUXZG.cjs');require('./chunk-NPQQDBFB.cjs');Object.defineProperty(exports,"AutoTextarea",{enumerable:true,get:function(){return chunkM3OUUXZG_cjs.a}});Object.defineProperty(exports,"default",{enumerable:true,get:function(){return chunkM3OUUXZG_cjs.b}});//# sourceMappingURL=AutoTextarea.cjs.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJBdXRvVGV4dGFyZWEuY2pzIn0=
@@ -0,0 +1,29 @@
1
+ import * as React from 'react';
2
+
3
+ interface AutoTextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'rows'> {
4
+ /** Minimum number of visible rows (default 2) */
5
+ minRows?: number;
6
+ /** Maximum number of rows before scrolling (default 8) */
7
+ maxRows?: number;
8
+ /**
9
+ * Hard cap on height in pixels. When provided it overrides the
10
+ * `maxRows`-derived limit — the textarea grows up to `maxHeight`
11
+ * and becomes scrollable beyond it.
12
+ */
13
+ maxHeight?: number;
14
+ }
15
+ /**
16
+ * Bootstrap-styled textarea that automatically adjusts its height to fit
17
+ * its content. Zero dependencies.
18
+ *
19
+ * Grows as the user types, up to `maxRows` (or `maxHeight` in px when
20
+ * provided), then shows a scrollbar. Shrinks back down when content is
21
+ * removed.
22
+ *
23
+ * @example
24
+ * <AutoTextarea value={text} onChange={e => setText(e.target.value)} minRows={2} maxRows={8} />
25
+ * <AutoTextarea value={text} onChange={e => setText(e.target.value)} maxHeight={240} />
26
+ */
27
+ declare const AutoTextarea: React.ForwardRefExoticComponent<AutoTextareaProps & React.RefAttributes<HTMLTextAreaElement>>;
28
+
29
+ export { AutoTextarea, type AutoTextareaProps, AutoTextarea as default };
@@ -0,0 +1,29 @@
1
+ import * as React from 'react';
2
+
3
+ interface AutoTextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'rows'> {
4
+ /** Minimum number of visible rows (default 2) */
5
+ minRows?: number;
6
+ /** Maximum number of rows before scrolling (default 8) */
7
+ maxRows?: number;
8
+ /**
9
+ * Hard cap on height in pixels. When provided it overrides the
10
+ * `maxRows`-derived limit — the textarea grows up to `maxHeight`
11
+ * and becomes scrollable beyond it.
12
+ */
13
+ maxHeight?: number;
14
+ }
15
+ /**
16
+ * Bootstrap-styled textarea that automatically adjusts its height to fit
17
+ * its content. Zero dependencies.
18
+ *
19
+ * Grows as the user types, up to `maxRows` (or `maxHeight` in px when
20
+ * provided), then shows a scrollbar. Shrinks back down when content is
21
+ * removed.
22
+ *
23
+ * @example
24
+ * <AutoTextarea value={text} onChange={e => setText(e.target.value)} minRows={2} maxRows={8} />
25
+ * <AutoTextarea value={text} onChange={e => setText(e.target.value)} maxHeight={240} />
26
+ */
27
+ declare const AutoTextarea: React.ForwardRefExoticComponent<AutoTextareaProps & React.RefAttributes<HTMLTextAreaElement>>;
28
+
29
+ export { AutoTextarea, type AutoTextareaProps, AutoTextarea as default };
@@ -0,0 +1,2 @@
1
+ export{a as AutoTextarea,b as default}from'./chunk-KKWFIJKN.js';import'./chunk-RR7TBRGI.js';//# sourceMappingURL=AutoTextarea.js.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJBdXRvVGV4dGFyZWEuanMifQ==
@@ -1,2 +1,2 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkGZ2D7HTS_cjs=require('./chunk-GZ2D7HTS.cjs');require('./chunk-NPQQDBFB.cjs');Object.defineProperty(exports,"DatePicker",{enumerable:true,get:function(){return chunkGZ2D7HTS_cjs.a}});Object.defineProperty(exports,"default",{enumerable:true,get:function(){return chunkGZ2D7HTS_cjs.b}});//# sourceMappingURL=DatePicker.cjs.map
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkOEFG7PNW_cjs=require('./chunk-OEFG7PNW.cjs');require('./chunk-NPQQDBFB.cjs');Object.defineProperty(exports,"DatePicker",{enumerable:true,get:function(){return chunkOEFG7PNW_cjs.a}});Object.defineProperty(exports,"default",{enumerable:true,get:function(){return chunkOEFG7PNW_cjs.b}});//# sourceMappingURL=DatePicker.cjs.map
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJEYXRlUGlja2VyLmNqcyJ9
@@ -1,2 +1,2 @@
1
- export{a as DatePicker,b as default}from'./chunk-ES5ABK5L.js';import'./chunk-RR7TBRGI.js';//# sourceMappingURL=DatePicker.js.map
1
+ export{a as DatePicker,b as default}from'./chunk-WLMCWTO6.js';import'./chunk-RR7TBRGI.js';//# sourceMappingURL=DatePicker.js.map
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJEYXRlUGlja2VyLmpzIn0=
@@ -0,0 +1,2 @@
1
+ import {a}from'./chunk-RR7TBRGI.js';import*as t from'react';import {jsx}from'react/jsx-runtime';var h=t.forwardRef(({className:T,value:s,onChange:f,minRows:r=2,maxRows:c=8,maxHeight:l,style:g,...x},o)=>{let i=t.useRef(null),a$1=t.useCallback(()=>{let e=i.current;if(!e)return;e.style.height="auto";let n=getComputedStyle(e),d=parseFloat(n.lineHeight)||20,b=parseFloat(n.paddingTop)||0,A=parseFloat(n.paddingBottom)||0,E=parseFloat(n.borderTopWidth)||0,w=parseFloat(n.borderBottomWidth)||0,u=b+A+E+w,L=d*r+u,m=l??d*c+u,M=Math.min(Math.max(e.scrollHeight,L),m);e.style.height=`${M}px`,e.style.overflowY=e.scrollHeight>m+1?"auto":"hidden";},[r,c,l]);t.useEffect(()=>{a$1();},[s,a$1]),t.useEffect(()=>{let e=()=>a$1();return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[a$1]);let H=e=>{f?.(e),a$1();},R=t.useCallback(e=>{i.current=e,typeof o=="function"?o(e):o&&(o.current=e);},[o]);return jsx("textarea",{ref:R,value:s,onChange:H,className:a("form-control",T),rows:r,style:{resize:"none",overflow:"hidden",...g},...x})});h.displayName="AutoTextarea";var C=h;export{h as a,C as b};//# sourceMappingURL=chunk-KKWFIJKN.js.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb25lbnRzL0F1dG9UZXh0YXJlYS50c3giXSwibmFtZXMiOlsiQXV0b1RleHRhcmVhIiwiY2xhc3NOYW1lIiwidmFsdWUiLCJvbkNoYW5nZSIsIm1pblJvd3MiLCJtYXhSb3dzIiwibWF4SGVpZ2h0Iiwic3R5bGUiLCJwcm9wcyIsInJlZiIsImlubmVyUmVmIiwiYWRqdXN0SGVpZ2h0IiwiZWwiLCJjb21wdXRlZCIsImxpbmVIZWlnaHQiLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSIsImJvcmRlclRvcCIsImJvcmRlckJvdHRvbSIsInZlcnRpY2FsUGFkZGluZyIsIm1pbkgiLCJtYXhIIiwibmV3SGVpZ2h0IiwiaGFuZGxlUmVzaXplIiwiaGFuZGxlQ2hhbmdlIiwibWVyZ2VSZWYiLCJub2RlIiwianN4IiwiY24iLCJBdXRvVGV4dGFyZWFfZGVmYXVsdCJdLCJtYXBwaW5ncyI6Im9HQXFDTUEsQ0FBQUEsQ0FBcUIsQ0FBQSxDQUFBLFVBQUEsQ0FBbUQsQ0FBQyxDQUM3RSxTQUFBLENBQUFDLENBQUFBLENBQ0EsTUFBQUMsQ0FBQUEsQ0FDQSxRQUFBLENBQUFDLENBQUFBLENBQ0EsT0FBQSxDQUFBQyxDQUFBQSxDQUFVLENBQUEsQ0FDVixPQUFBLENBQUFDLENBQUFBLENBQVUsQ0FBQSxDQUNWLFNBQUEsQ0FBQUMsQ0FBQUEsQ0FDQSxLQUFBLENBQUFDLENBQUFBLENBQ0EsR0FBR0MsQ0FDTCxDQUFBLENBQUdDLENBQUFBLEdBQVEsQ0FDVCxJQUFNQyxDQUFBQSxDQUFpQixDQUFBLENBQUEsTUFBQSxDQUE0QixJQUFJLENBQUEsQ0FFakRDLEdBQUFBLENBQXFCLENBQUEsQ0FBQSxXQUFBLENBQVksSUFBTSxDQUMzQyxJQUFNQyxDQUFBQSxDQUFLRixFQUFTLE9BQUEsQ0FDcEIsR0FBSSxDQUFDRSxDQUFBQSxDQUFJLE9BR1RBLENBQUFBLENBQUcsS0FBQSxDQUFNLE1BQUEsQ0FBUyxNQUFBLENBRWxCLElBQU1DLENBQUFBLENBQVcs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IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY24gfSBmcm9tICcuLi9saWIvY24uanMnXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogIFR5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b1RleHRhcmVhUHJvcHNcbiAgZXh0ZW5kcyBPbWl0PFJlYWN0LlRleHRhcmVhSFRNTEF0dHJpYnV0ZXM8SFRNTFRleHRBcmVhRWxlbWVudD4sICdyb3dzJz4ge1xuICAvKiogTWluaW11bSBudW1iZXIgb2YgdmlzaWJsZSByb3dzIChkZWZhdWx0IDIpICovXG4gIG1pblJvd3M/OiBudW1iZXJcbiAgLyoqIE1heGltdW0gbnVtYmVyIG9mIHJvd3MgYmVmb3JlIHNjcm9sbGluZyAoZGVmYXVsdCA4KSAqL1xuICBtYXhSb3dzPzogbnVtYmVyXG4gIC8qKlxuICAgKiBIYXJkIGNhcCBvbiBoZWlnaHQgaW4gcGl4ZWxzLiBXaGVuIHByb3ZpZGVkIGl0IG92ZXJyaWRlcyB0aGVcbiAgICogYG1heFJvd3NgLWRlcml2ZWQgbGltaXQg4oCUIHRoZSB0ZXh0YXJlYSBncm93cyB1cCB0byBgbWF4SGVpZ2h0YFxuICAgKiBhbmQgYmVjb21lcyBzY3JvbGxhYmxlIGJleW9uZCBpdC5cbiAgICovXG4gIG1heEhlaWdodD86IG51bWJlclxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qICBBdXRvVGV4dGFyZWEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIEJvb3RzdHJhcC1zdHlsZWQgdGV4dGFyZWEgdGhhdCBhdXRvbWF0aWNhbGx5IGFkanVzdHMgaXRzIGhlaWdodCB0byBmaXRcbiAqIGl0cyBjb250ZW50LiBaZXJvIGRlcGVuZGVuY2llcy5cbiAqXG4gKiBHcm93cyBhcyB0aGUgdXNlciB0eXBlcywgdXAgdG8gYG1heFJvd3NgIChvciBgbWF4SGVpZ2h0YCBpbiBweCB3aGVuXG4gKiBwcm92aWRlZCksIHRoZW4gc2hvd3MgYSBzY3JvbGxiYXIuIFNocmlua3MgYmFjayBkb3duIHdoZW4gY29udGVudCBpc1xuICogcmVtb3ZlZC5cbiAqXG4gKiBAZXhhbXBsZVxuICogPEF1dG9UZXh0YXJlYSB2YWx1ZT17dGV4dH0gb25DaGFuZ2U9e2UgPT4gc2V0VGV4dChlLnRhcmdldC52YWx1ZSl9IG1pblJvd3M9ezJ9IG1heFJvd3M9ezh9IC8+XG4gKiA8QXV0b1RleHRhcmVhIHZhbHVlPXt0ZXh0fSBvbkNoYW5nZT17ZSA9PiBzZXRUZXh0KGUudGFyZ2V0LnZhbHVlKX0gbWF4SGVpZ2h0PXsyNDB9IC8+XG4gKi9cbmNvbnN0IEF1dG9UZXh0YXJlYSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRleHRBcmVhRWxlbWVudCwgQXV0b1RleHRhcmVhUHJvcHM+KCh7XG4gIGNsYXNzTmFtZSxcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBtaW5Sb3dzID0gMixcbiAgbWF4Um93cyA9IDgsXG4gIG1heEhlaWdodCxcbiAgc3R5bGUsXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgY29uc3QgaW5uZXJSZWYgPSBSZWFjdC51c2VSZWY8SFRNTFRleHRBcmVhRWxlbWVudD4obnVsbClcblxuICBjb25zdCBhZGp1c3RIZWlnaHQgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgZWwgPSBpbm5lclJlZi5jdXJyZW50XG4gICAgaWYgKCFlbCkgcmV0dXJuXG5cbiAgICAvLyBSZXNldCBoZWlnaHQgdG8gYXV0byBzbyBzY3JvbGxIZWlnaHQgcmVmbGVjdHMgYWN0dWFsIGNvbnRlbnQgc2l6ZVxuICAgIGVsLnN0eWxlLmhlaWdodCA9ICdhdXRvJ1xuXG4gICAgY29uc3QgY29tcHV0ZWQgPSBnZXRDb21wdXRlZFN0eWxlKGVsKVxuICAgIGNvbnN0IGxpbmVIZWlnaHQgPSBwYXJzZUZsb2F0KGNvbXB1dGVkLmxpbmVIZWlnaHQpIHx8IDIwXG4gICAgY29uc3QgcGFkZGluZ1RvcCA9IHBhcnNlRmxvYXQoY29tcHV0ZWQucGFkZGluZ1RvcCkgfHwgMFxuICAgIGNvbnN0IHBhZGRpbmdCb3R0b20gPSBwYXJzZUZsb2F0KGNvbXB1dGVkLnBhZGRpbmdCb3R0b20pIHx8IDBcbiAgICBjb25zdCBib3JkZXJUb3AgPSBwYXJzZUZsb2F0KGNvbXB1dGVkLmJvcmRlclRvcFdpZHRoKSB8fCAwXG4gICAgY29uc3QgYm9yZGVyQm90dG9tID0gcGFyc2VGbG9hdChjb21wdXRlZC5ib3JkZXJCb3R0b21XaWR0aCkgfHwgMFxuXG4gICAgY29uc3QgdmVydGljYWxQYWRkaW5nID0gcGFkZGluZ1RvcCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJUb3AgKyBib3JkZXJCb3R0b21cbiAgICBjb25zdCBtaW5IID0gbGluZUhlaWdodCAqIG1pblJvd3MgKyB2ZXJ0aWNhbFBhZGRpbmdcbiAgICAvKiBFeHBsaWNpdCBwaXhlbCBjYXAgd2lucyBvdmVyIHRoZSByb3ctYmFzZWQgbGltaXQgKi9cbiAgICBjb25zdCBtYXhIID0gbWF4SGVpZ2h0ID8/IGxpbmVIZWlnaHQgKiBtYXhSb3dzICsgdmVydGljYWxQYWRkaW5nXG5cbiAgICBjb25zdCBuZXdIZWlnaHQgPSBNYXRoLm1pbihNYXRoLm1heChlbC5zY3JvbGxIZWlnaHQsIG1pbkgpLCBtYXhIKVxuICAgIGVsLnN0eWxlLmhlaWdodCA9IGAke25ld0hlaWdodH1weGBcbiAgICBlbC5zdHlsZS5vdmVyZmxvd1kgPSBlbC5zY3JvbGxIZWlnaHQgPiBtYXhIICsgMSA/ICdhdXRvJyA6ICdoaWRkZW4nXG4gIH0sIFttaW5Sb3dzLCBtYXhSb3dzLCBtYXhIZWlnaHRdKVxuXG4gIC8vIEFkanVzdCBvbiBldmVyeSB2YWx1ZSBjaGFuZ2VcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBhZGp1c3RIZWlnaHQoKVxuICB9LCBbdmFsdWUsIGFkanVzdEhlaWdodF0pXG5cbiAgLy8gQWRqdXN0IG9uIHdpbmRvdyByZXNpemUgKHdyYXBwaW5nIGNoYW5nZXMgd2l0aCB3aWR0aClcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVSZXNpemUgPSAoKSA9PiBhZGp1c3RIZWlnaHQoKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVSZXNpemUpXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVSZXNpemUpXG4gIH0sIFthZGp1c3RIZWlnaHRdKVxuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50PikgPT4ge1xuICAgIG9uQ2hhbmdlPy4oZSlcbiAgICAvKiBLZWVwIHVuY29udHJvbGxlZCB1c2FnZSB3b3JraW5nIOKAlCB2YWx1ZSBlZmZlY3Qgd29uJ3QgZmlyZSB3aXRob3V0IGEgcHJvcCBjaGFuZ2UgKi9cbiAgICBhZGp1c3RIZWlnaHQoKVxuICB9XG5cbiAgLyogLS0tLSBtZXJnZWQgcmVmIC0tLS0gKi9cbiAgY29uc3QgbWVyZ2VSZWYgPSBSZWFjdC51c2VDYWxsYmFjaygobm9kZTogSFRNTFRleHRBcmVhRWxlbWVudCB8IG51bGwpID0+IHtcbiAgICBpbm5lclJlZi5jdXJyZW50ID0gbm9kZVxuICAgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSByZWYobm9kZSlcbiAgICBlbHNlIGlmIChyZWYpIHJlZi5jdXJyZW50ID0gbm9kZVxuICB9LCBbcmVmXSlcblxuICByZXR1cm4gKFxuICAgIDx0ZXh0YXJlYVxuICAgICAgcmVmPXttZXJnZVJlZn1cbiAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICBjbGFzc05hbWU9e2NuKCdmb3JtLWNvbnRyb2wnLCBjbGFzc05hbWUpfVxuICAgICAgcm93cz17bWluUm93c31cbiAgICAgIHN0eWxlPXt7IHJlc2l6ZTogJ25vbmUnLCBvdmVyZmxvdzogJ2hpZGRlbicsIC4uLnN0eWxlIH19XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKVxufSlcblxuQXV0b1RleHRhcmVhLmRpc3BsYXlOYW1lID0gJ0F1dG9UZXh0YXJlYSdcblxuZXhwb3J0IHsgQXV0b1RleHRhcmVhIH1cbmV4cG9ydCBkZWZhdWx0IEF1dG9UZXh0YXJlYVxuIl19
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkNPQQDBFB_cjs=require('./chunk-NPQQDBFB.cjs'),t=require('react'),jsxRuntime=require('react/jsx-runtime');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var t__namespace=/*#__PURE__*/_interopNamespace(t);var h=t__namespace.forwardRef(({className:T,value:s,onChange:f,minRows:r=2,maxRows:c=8,maxHeight:l,style:g,...x},o)=>{let i=t__namespace.useRef(null),a=t__namespace.useCallback(()=>{let e=i.current;if(!e)return;e.style.height="auto";let n=getComputedStyle(e),d=parseFloat(n.lineHeight)||20,b=parseFloat(n.paddingTop)||0,A=parseFloat(n.paddingBottom)||0,E=parseFloat(n.borderTopWidth)||0,w=parseFloat(n.borderBottomWidth)||0,u=b+A+E+w,L=d*r+u,m=l??d*c+u,M=Math.min(Math.max(e.scrollHeight,L),m);e.style.height=`${M}px`,e.style.overflowY=e.scrollHeight>m+1?"auto":"hidden";},[r,c,l]);t__namespace.useEffect(()=>{a();},[s,a]),t__namespace.useEffect(()=>{let e=()=>a();return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[a]);let H=e=>{f?.(e),a();},R=t__namespace.useCallback(e=>{i.current=e,typeof o=="function"?o(e):o&&(o.current=e);},[o]);return jsxRuntime.jsx("textarea",{ref:R,value:s,onChange:H,className:chunkNPQQDBFB_cjs.a("form-control",T),rows:r,style:{resize:"none",overflow:"hidden",...g},...x})});h.displayName="AutoTextarea";var C=h;exports.a=h;exports.b=C;//# sourceMappingURL=chunk-M3OUUXZG.cjs.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb25lbnRzL0F1dG9UZXh0YXJlYS50c3giXSwibmFtZXMiOlsiQXV0b1RleHRhcmVhIiwidCIsImNsYXNzTmFtZSIsInZhbHVlIiwib25DaGFuZ2UiLCJtaW5Sb3dzIiwibWF4Um93cyIsIm1heEhlaWdodCIsInN0eWxlIiwicHJvcHMiLCJyZWYiLCJpbm5lclJlZiIsImFkanVzdEhlaWdodCIsImVsIiwiY29tcHV0ZWQiLCJsaW5lSGVpZ2h0IiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iLCJib3JkZXJUb3AiLCJib3JkZXJCb3R0b20iLCJ2ZXJ0aWNhbFBhZGRpbmciLCJtaW5IIiwibWF4SCIsIm5ld0hlaWdodCIsImhhbmRsZVJlc2l6ZSIsImhhbmRsZUNoYW5nZSIsIm1lcmdlUmVmIiwibm9kZSIsImpzeCIsImNuIiwiQXV0b1RleHRhcmVhX2RlZmF1bHQiXSwibWFwcGluZ3MiOiJ3ZUFxQ01BLENBQUFBLENBQXFCQyxZQUFBLENBQUEsVUFBQSxDQUFtRCxDQUFDLENBQzdFLFNBQUEsQ0FBQUMsQ0FBQUEsQ0FDQSxNQUFBQyxDQUFBQSxDQUNBLFFBQUEsQ0FBQUMsQ0FBQUEsQ0FDQSxPQUFBLENBQUFDLENBQUFBLENBQVUsQ0FBQSxDQUNWLE9BQUEsQ0FBQUMsQ0FBQUEsQ0FBVSxDQUFBLENBQ1YsU0FBQSxDQUFBQyxDQUFBQSxDQUNBLEtBQUEsQ0FBQUMsQ0FBQUEsQ0FDQSxHQUFHQyxDQUNMLENBQUEsQ0FBR0MsQ0FBQUEsR0FBUSxDQUNULElBQU1DLENBQUFBLENBQWlCVixZQUFBLENBQUEsTUFBQSxDQUE0QixJQUFJLENBQUEsQ0FFakRXLENBQUFBLENBQXFCWCxZQUFBLENBQUEsV0FBQSxDQUFZLElBQU0sQ0FDM0MsSUFBTVksQ0FBQUEsQ0FBS0YsRUFBUyxPQUFBLENBQ3BCLEdBQUksQ0FBQ0UsQ0FBQUEsQ0FBSSxPQUdUQSxDQUFBQSxDQUFHLEtBQUEsQ0FBTSxNQUFBLENBQVMsTUFBQSxDQUVsQixJQUFNQyxDQUFB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IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY24gfSBmcm9tICcuLi9saWIvY24uanMnXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogIFR5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b1RleHRhcmVhUHJvcHNcbiAgZXh0ZW5kcyBPbWl0PFJlYWN0LlRleHRhcmVhSFRNTEF0dHJpYnV0ZXM8SFRNTFRleHRBcmVhRWxlbWVudD4sICdyb3dzJz4ge1xuICAvKiogTWluaW11bSBudW1iZXIgb2YgdmlzaWJsZSByb3dzIChkZWZhdWx0IDIpICovXG4gIG1pblJvd3M/OiBudW1iZXJcbiAgLyoqIE1heGltdW0gbnVtYmVyIG9mIHJvd3MgYmVmb3JlIHNjcm9sbGluZyAoZGVmYXVsdCA4KSAqL1xuICBtYXhSb3dzPzogbnVtYmVyXG4gIC8qKlxuICAgKiBIYXJkIGNhcCBvbiBoZWlnaHQgaW4gcGl4ZWxzLiBXaGVuIHByb3ZpZGVkIGl0IG92ZXJyaWRlcyB0aGVcbiAgICogYG1heFJvd3NgLWRlcml2ZWQgbGltaXQg4oCUIHRoZSB0ZXh0YXJlYSBncm93cyB1cCB0byBgbWF4SGVpZ2h0YFxuICAgKiBhbmQgYmVjb21lcyBzY3JvbGxhYmxlIGJleW9uZCBpdC5cbiAgICovXG4gIG1heEhlaWdodD86IG51bWJlclxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qICBBdXRvVGV4dGFyZWEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIEJvb3RzdHJhcC1zdHlsZWQgdGV4dGFyZWEgdGhhdCBhdXRvbWF0aWNhbGx5IGFkanVzdHMgaXRzIGhlaWdodCB0byBmaXRcbiAqIGl0cyBjb250ZW50LiBaZXJvIGRlcGVuZGVuY2llcy5cbiAqXG4gKiBHcm93cyBhcyB0aGUgdXNlciB0eXBlcywgdXAgdG8gYG1heFJvd3NgIChvciBgbWF4SGVpZ2h0YCBpbiBweCB3aGVuXG4gKiBwcm92aWRlZCksIHRoZW4gc2hvd3MgYSBzY3JvbGxiYXIuIFNocmlua3MgYmFjayBkb3duIHdoZW4gY29udGVudCBpc1xuICogcmVtb3ZlZC5cbiAqXG4gKiBAZXhhbXBsZVxuICogPEF1dG9UZXh0YXJlYSB2YWx1ZT17dGV4dH0gb25DaGFuZ2U9e2UgPT4gc2V0VGV4dChlLnRhcmdldC52YWx1ZSl9IG1pblJvd3M9ezJ9IG1heFJvd3M9ezh9IC8+XG4gKiA8QXV0b1RleHRhcmVhIHZhbHVlPXt0ZXh0fSBvbkNoYW5nZT17ZSA9PiBzZXRUZXh0KGUudGFyZ2V0LnZhbHVlKX0gbWF4SGVpZ2h0PXsyNDB9IC8+XG4gKi9cbmNvbnN0IEF1dG9UZXh0YXJlYSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRleHRBcmVhRWxlbWVudCwgQXV0b1RleHRhcmVhUHJvcHM+KCh7XG4gIGNsYXNzTmFtZSxcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBtaW5Sb3dzID0gMixcbiAgbWF4Um93cyA9IDgsXG4gIG1heEhlaWdodCxcbiAgc3R5bGUsXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgY29uc3QgaW5uZXJSZWYgPSBSZWFjdC51c2VSZWY8SFRNTFRleHRBcmVhRWxlbWVudD4obnVsbClcblxuICBjb25zdCBhZGp1c3RIZWlnaHQgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgZWwgPSBpbm5lclJlZi5jdXJyZW50XG4gICAgaWYgKCFlbCkgcmV0dXJuXG5cbiAgICAvLyBSZXNldCBoZWlnaHQgdG8gYXV0byBzbyBzY3JvbGxIZWlnaHQgcmVmbGVjdHMgYWN0dWFsIGNvbnRlbnQgc2l6ZVxuICAgIGVsLnN0eWxlLmhlaWdodCA9ICdhdXRvJ1xuXG4gICAgY29uc3QgY29tcHV0ZWQgPSBnZXRDb21wdXRlZFN0eWxlKGVsKVxuICAgIGNvbnN0IGxpbmVIZWlnaHQgPSBwYXJzZUZsb2F0KGNvbXB1dGVkLmxpbmVIZWlnaHQpIHx8IDIwXG4gICAgY29uc3QgcGFkZGluZ1RvcCA9IHBhcnNlRmxvYXQoY29tcHV0ZWQucGFkZGluZ1RvcCkgfHwgMFxuICAgIGNvbnN0IHBhZGRpbmdCb3R0b20gPSBwYXJzZUZsb2F0KGNvbXB1dGVkLnBhZGRpbmdCb3R0b20pIHx8IDBcbiAgICBjb25zdCBib3JkZXJUb3AgPSBwYXJzZUZsb2F0KGNvbXB1dGVkLmJvcmRlclRvcFdpZHRoKSB8fCAwXG4gICAgY29uc3QgYm9yZGVyQm90dG9tID0gcGFyc2VGbG9hdChjb21wdXRlZC5ib3JkZXJCb3R0b21XaWR0aCkgfHwgMFxuXG4gICAgY29uc3QgdmVydGljYWxQYWRkaW5nID0gcGFkZGluZ1RvcCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJUb3AgKyBib3JkZXJCb3R0b21cbiAgICBjb25zdCBtaW5IID0gbGluZUhlaWdodCAqIG1pblJvd3MgKyB2ZXJ0aWNhbFBhZGRpbmdcbiAgICAvKiBFeHBsaWNpdCBwaXhlbCBjYXAgd2lucyBvdmVyIHRoZSByb3ctYmFzZWQgbGltaXQgKi9cbiAgICBjb25zdCBtYXhIID0gbWF4SGVpZ2h0ID8/IGxpbmVIZWlnaHQgKiBtYXhSb3dzICsgdmVydGljYWxQYWRkaW5nXG5cbiAgICBjb25zdCBuZXdIZWlnaHQgPSBNYXRoLm1pbihNYXRoLm1heChlbC5zY3JvbGxIZWlnaHQsIG1pbkgpLCBtYXhIKVxuICAgIGVsLnN0eWxlLmhlaWdodCA9IGAke25ld0hlaWdodH1weGBcbiAgICBlbC5zdHlsZS5vdmVyZmxvd1kgPSBlbC5zY3JvbGxIZWlnaHQgPiBtYXhIICsgMSA/ICdhdXRvJyA6ICdoaWRkZW4nXG4gIH0sIFttaW5Sb3dzLCBtYXhSb3dzLCBtYXhIZWlnaHRdKVxuXG4gIC8vIEFkanVzdCBvbiBldmVyeSB2YWx1ZSBjaGFuZ2VcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBhZGp1c3RIZWlnaHQoKVxuICB9LCBbdmFsdWUsIGFkanVzdEhlaWdodF0pXG5cbiAgLy8gQWRqdXN0IG9uIHdpbmRvdyByZXNpemUgKHdyYXBwaW5nIGNoYW5nZXMgd2l0aCB3aWR0aClcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVSZXNpemUgPSAoKSA9PiBhZGp1c3RIZWlnaHQoKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVSZXNpemUpXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVSZXNpemUpXG4gIH0sIFthZGp1c3RIZWlnaHRdKVxuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50PikgPT4ge1xuICAgIG9uQ2hhbmdlPy4oZSlcbiAgICAvKiBLZWVwIHVuY29udHJvbGxlZCB1c2FnZSB3b3JraW5nIOKAlCB2YWx1ZSBlZmZlY3Qgd29uJ3QgZmlyZSB3aXRob3V0IGEgcHJvcCBjaGFuZ2UgKi9cbiAgICBhZGp1c3RIZWlnaHQoKVxuICB9XG5cbiAgLyogLS0tLSBtZXJnZWQgcmVmIC0tLS0gKi9cbiAgY29uc3QgbWVyZ2VSZWYgPSBSZWFjdC51c2VDYWxsYmFjaygobm9kZTogSFRNTFRleHRBcmVhRWxlbWVudCB8IG51bGwpID0+IHtcbiAgICBpbm5lclJlZi5jdXJyZW50ID0gbm9kZVxuICAgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSByZWYobm9kZSlcbiAgICBlbHNlIGlmIChyZWYpIHJlZi5jdXJyZW50ID0gbm9kZVxuICB9LCBbcmVmXSlcblxuICByZXR1cm4gKFxuICAgIDx0ZXh0YXJlYVxuICAgICAgcmVmPXttZXJnZVJlZn1cbiAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICBjbGFzc05hbWU9e2NuKCdmb3JtLWNvbnRyb2wnLCBjbGFzc05hbWUpfVxuICAgICAgcm93cz17bWluUm93c31cbiAgICAgIHN0eWxlPXt7IHJlc2l6ZTogJ25vbmUnLCBvdmVyZmxvdzogJ2hpZGRlbicsIC4uLnN0eWxlIH19XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKVxufSlcblxuQXV0b1RleHRhcmVhLmRpc3BsYXlOYW1lID0gJ0F1dG9UZXh0YXJlYSdcblxuZXhwb3J0IHsgQXV0b1RleHRhcmVhIH1cbmV4cG9ydCBkZWZhdWx0IEF1dG9UZXh0YXJlYVxuIl19
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkNPQQDBFB_cjs=require('./chunk-NPQQDBFB.cjs'),i=require('react'),reactDom=require('react-dom'),jsxRuntime=require('react/jsx-runtime');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var i__namespace=/*#__PURE__*/_interopNamespace(i);var xe=["Su","Mo","Tu","We","Th","Fr","Sa"],Te=["January","February","March","April","May","June","July","August","September","October","November","December"],Ye=Array.from({length:60},(a,t)=>t),b=12,z=(a,t)=>new Date(a,t+1,0).getDate(),ae=(a,t)=>a!==null&&t!==null&&a.getFullYear()===t.getFullYear()&&a.getMonth()===t.getMonth()&&a.getDate()===t.getDate(),Ae=(a,t,u)=>!(t&&a<new Date(t.getFullYear(),t.getMonth(),t.getDate())||u&&a>new Date(u.getFullYear(),u.getMonth(),u.getDate())),He=(a,t)=>{let u=new Date(a,t,1).getDay(),m=z(a,t),p=[],g=z(a,t-1);for(let c=u-1;c>=0;c--){let v=g-c;p.push({day:v,date:new Date(a,t-1,v),isOutside:true});}for(let c=1;c<=m;c++)p.push({day:c,date:new Date(a,t,c),isOutside:false});let D=42-p.length;for(let c=1;c<=D;c++)p.push({day:c,date:new Date(a,t+1,c),isOutside:true});return p},V=(a,t,u)=>{if(!a||isNaN(a.getTime()))return "";let m=a.getFullYear(),p=String(a.getMonth()+1).padStart(2,"0"),g=String(a.getDate()).padStart(2,"0"),D=a.getHours(),c=String(a.getMinutes()).padStart(2,"0"),v=D>=12?"PM":"AM";D=D%12||12;let y=String(D).padStart(2,"0");if(u)return u.replace("yyyy",String(m)).replace("MM",p).replace("dd",g).replace("hh",y).replace("mm",c).replace("aa",v);switch(t){case "time":return `${y}:${c} ${v}`;case "datetime":return `${m}-${p}-${g} ${y}:${c} ${v}`;default:return `${m}-${p}-${g}`}},F=(a,t,u="date")=>({target:{value:a,name:t,type:u},preventDefault:()=>{},stopPropagation:()=>{},nativeEvent:null}),Ie={date:300,time:300,datetime:400,year:250},Oe={date:280,time:220,datetime:440,year:280},Fe=a=>{if(!a)return document.documentElement;let t=a.parentElement;for(;t;){let u=window.getComputedStyle(t),m=u.overflowY||u.overflow;if(m==="auto"||m==="scroll")return t;t=t.parentElement;}return document.documentElement},Le=(a,t,u)=>{if(!a)return {};let m=a.getBoundingClientRect(),p=t||300,g=window.innerHeight-m.bottom,D=m.top,c=g<p&&D>g,v=window.innerWidth<576?220:260,y=u||v;return {position:"fixed",top:c?Math.max(4,m.top-p-4):m.bottom+4,left:Math.max(4,Math.min(m.left,window.innerWidth-y-4)),minWidth:v,width:"max-content",maxWidth:window.innerWidth-8,zIndex:1070}},re=i__namespace.forwardRef(({className:a,mode:t="date",selected:u,value:m,onChange:p,dateFormat:g,placeholderText:D,size:c,isClearable:v=false,disabled:y=false,minDate:q,maxDate:K,timeIntervals:We=5,timezone:_e="Kampala",id:se,name:N,...ie},L)=>{let le=e=>{if(!e)return null;if(e instanceof Date)return isNaN(e.getTime())?null:e;if(typeof e=="string"||typeof e=="number"){let n=new Date(e);if(!isNaN(n.getTime()))return n;if(typeof e=="string"){let d=e.match(/^(\d{1,2}):(\d{2})\s*(AM|PM)$/i);if(d){let o=parseInt(d[1],10),M=parseInt(d[2],10),_=d[3].toUpperCase();o===12&&_==="AM"&&(o=0),o!==12&&_==="PM"&&(o+=12);let X=new Date;return new Date(X.getFullYear(),X.getMonth(),X.getDate(),o,M,0,0)}let s=e.match(/^(\d{4})-(\d{2})-(\d{2})\s+(\d{1,2}):(\d{2})\s*(AM|PM)$/i);if(s){let o=parseInt(s[4],10),M=parseInt(s[5],10),_=s[6].toUpperCase();return o===12&&_==="AM"&&(o=0),o!==12&&_==="PM"&&(o+=12),new Date(parseInt(s[1]),parseInt(s[2])-1,parseInt(s[3]),o,M,0,0)}}return null}return null},l=i__namespace.useMemo(()=>le(u??m),[u instanceof Date?u.getTime():u,m instanceof Date?m.getTime():m]),Z=t==="date"||t==="datetime",S=t==="time"||t==="datetime",[P,H]=i__namespace.useState(false),[E,U]=i__namespace.useState(()=>l?l.getFullYear():new Date().getFullYear()),[w,J]=i__namespace.useState(()=>l?l.getMonth():new Date().getMonth()),[h,R]=i__namespace.useState(l),[C,ee]=i__namespace.useState(()=>l&&l.getHours()%12||12),[x,te]=i__namespace.useState(()=>l?l.getMinutes():0),[T,ne]=i__namespace.useState(()=>l&&l.getHours()>=12?"PM":"AM"),[$,I]=i__namespace.useState(false),[j,B]=i__namespace.useState(()=>Math.floor((l?l.getFullYear():new Date().getFullYear())/b)*b),[oe,ce]=i__namespace.useState({}),O=i__namespace.useRef(null),Y=i__namespace.useRef(null),G=i__namespace.useRef(null);i__namespace.useEffect(()=>{let e=document.createElement("div");return e.className="datepicker-portal-root",document.body.appendChild(e),G.current=e,()=>{e.parentNode&&document.body.removeChild(e),G.current=null;}},[]),i__namespace.useEffect(()=>{l&&!isNaN(l.getTime())?(R(l),U(l.getFullYear()),J(l.getMonth()),ee(l.getHours()%12||12),te(l.getMinutes()),ne(l.getHours()>=12?"PM":"AM"),B(Math.floor(l.getFullYear()/b)*b)):R(null);},[l]),i__namespace.useEffect(()=>{if(!P)return;let e=()=>Y.current?Y.current.getBoundingClientRect().height:Ie[$?"year":t]||300,n=()=>Y.current?Y.current.getBoundingClientRect().width:Oe[$?"year":t]||280,d=Fe(O.current),s=()=>{requestAnimationFrame(()=>{ce(Le(O.current,e(),n()));});};return s(),d.addEventListener("scroll",s,{passive:true}),window.addEventListener("resize",s),()=>{d.removeEventListener("scroll",s),window.removeEventListener("resize",s);}},[P,t,$]),i__namespace.useEffect(()=>{if(!P)return;let e=n=>{Y.current&&!Y.current.contains(n.target)&&O.current&&!O.current.contains(n.target)&&(H(false),I(false));};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[P]);let A=(e,n,d,s)=>{let o=new Date(e),M=n%12;return s==="PM"&&(M+=12),M===12&&s==="AM"&&(M=0),o.setHours(M,d,0,0),o},W=e=>{if(!e||isNaN(e.getTime()))return;let n=V(e,t,g);p?.(F(n,N||"",t));},ue=e=>{if(!e){p?.(F(null,N||"",t)),H(false),I(false);return}W(e),t==="date"&&(H(false),I(false));},de=e=>{if(R(e),t==="date")ue(e);else if(t==="datetime"){let n=A(e,C,x,T);W(n);}},me=He(E,w),pe=()=>{let e=E,n=w;w===0?(e=E-1,n=11):n=w-1,U(e),J(n);let d=h||new Date,s=z(e,n),o=new Date(e,n,Math.min(d.getDate(),s));R(o),W(S?A(o,C,x,T):o);},fe=()=>{let e=E,n=w;w===11?(e=E+1,n=0):n=w+1,U(e),J(n);let d=h||new Date,s=z(e,n),o=new Date(e,n,Math.min(d.getDate(),s));R(o),W(S?A(o,C,x,T):o);},ge=new Date,be=q?new Date(q.getFullYear(),q.getMonth(),q.getDate()):null,ve=K?new Date(K.getFullYear(),K.getMonth(),K.getDate()):null,De=e=>{if(ee(e),S){let n=A(h||new Date,e,x,T);p?.(F(V(n,t,g),N||"",t));}},ye=e=>{if(te(e),S){let n=A(h||new Date,C,e,T);p?.(F(V(n,t,g),N||"",t));}},we=e=>{if(ne(e),S){let n=A(h||new Date,C,x,e);p?.(F(V(n,t,g),N||"",t));}},he=()=>{B(Math.floor(E/b)*b),I(true);},Me=e=>{U(e),I(false);let n=h||new Date,d=z(e,w),s=new Date(e,w,Math.min(n.getDate(),d));R(s),W(S?A(s,C,x,T):s);},Q=Math.floor(j/b)*b,ke=Array.from({length:b},(e,n)=>Q+n),Ne=e=>{e.stopPropagation(),R(null),p?.(F(null,N||""));},Se=e=>{e.key==="Escape"&&(H(false),I(false),O.current?.blur()),(e.key==="ArrowDown"||e.key==="Enter"||e.key===" ")&&(e.preventDefault(),H(true));},Pe=i__namespace.useCallback(e=>{O.current=e,typeof L=="function"?L(e):L&&(L.current=e);},[L]),Ee=D??(t==="time"?"Select time":t==="datetime"?"Select date & time":"Select date"),Re=jsxRuntime.jsxs("div",{ref:Y,className:chunkNPQQDBFB_cjs.a("datepicker-popover card border shadow-sm",t==="datetime"&&"datepicker-popover--wide"),style:oe,children:[$&&Z&&jsxRuntime.jsxs("div",{className:"datepicker-year-picker p-3",children:[jsxRuntime.jsxs("div",{className:"d-flex align-items-center justify-content-between mb-2",children:[jsxRuntime.jsx("button",{type:"button",className:"btn btn-sm btn-outline-secondary border-0 px-1",onClick:()=>B(j-b),"aria-label":"Previous years",children:"\u2039"}),jsxRuntime.jsxs("span",{className:"fw-semibold small",children:[Q," \u2013 ",Q+b-1]}),jsxRuntime.jsx("button",{type:"button",className:"btn btn-sm btn-outline-secondary border-0 px-1",onClick:()=>B(j+b),"aria-label":"Next years",children:"\u203A"})]}),jsxRuntime.jsx("div",{className:"datepicker-year-grid",children:ke.map(e=>{let n=e===new Date().getFullYear(),d=h&&e===h.getFullYear();return jsxRuntime.jsx("button",{type:"button",className:chunkNPQQDBFB_cjs.a("datepicker-year-cell btn btn-sm",d&&"btn-primary",!d&&n&&"btn-outline-primary",!d&&!n&&"btn-light border"),onClick:()=>Me(e),children:e},e)})})]}),!$&&jsxRuntime.jsx(jsxRuntime.Fragment,{children:jsxRuntime.jsxs("div",{className:chunkNPQQDBFB_cjs.a("d-flex",t==="datetime"?"flex-row":"flex-column"),children:[Z&&jsxRuntime.jsxs("div",{className:"datepicker-calendar p-2",children:[jsxRuntime.jsxs("div",{className:"d-flex align-items-center justify-content-between mb-2",children:[jsxRuntime.jsx("button",{type:"button",className:"btn btn-sm btn-outline-secondary border-0 px-1",onClick:pe,"aria-label":"Previous month",children:"\u2039"}),jsxRuntime.jsxs("div",{className:"d-flex align-items-center gap-1",children:[jsxRuntime.jsx("span",{className:"fw-semibold small",children:Te[w]}),jsxRuntime.jsx("button",{type:"button",className:"btn btn-sm btn-link text-decoration-none text-primary fw-semibold small p-0",onClick:he,"aria-label":"Choose year",children:E})]}),jsxRuntime.jsx("button",{type:"button",className:"btn btn-sm btn-outline-secondary border-0 px-1",onClick:fe,"aria-label":"Next month",children:"\u203A"})]}),jsxRuntime.jsx("div",{className:"datepicker-days-header",children:xe.map(e=>jsxRuntime.jsx("div",{className:"datepicker-day-label",children:e},e))}),jsxRuntime.jsx("div",{className:"datepicker-days-grid",children:me.map((e,n)=>{let d=ae(e.date,ge),s=h&&ae(e.date,h),o=Ae(e.date,be,ve),M=e.isOutside||!o;return jsxRuntime.jsx("button",{type:"button",disabled:M,className:chunkNPQQDBFB_cjs.a("datepicker-day",d&&"datepicker-day--today",s&&"datepicker-day--selected",e.isOutside&&"datepicker-day--outside",!o&&"datepicker-day--disabled"),onClick:()=>de(e.date),tabIndex:e.isOutside?-1:0,children:e.day},n)})})]}),t==="datetime"&&jsxRuntime.jsx("div",{className:"vr mx-1 my-2"}),S&&jsxRuntime.jsxs("div",{className:"datepicker-time p-2 d-flex flex-column",style:{minWidth:180},children:[t==="datetime"&&jsxRuntime.jsx("div",{className:"small fw-semibold text-muted text-center mb-1",children:"Time"}),jsxRuntime.jsxs("div",{className:"d-flex justify-content-center gap-2",children:[jsxRuntime.jsxs("div",{className:"datepicker-time-col",children:[jsxRuntime.jsx("div",{className:"datepicker-time-col-label",children:"Hour"}),jsxRuntime.jsx("div",{className:"datepicker-time-col-scroll",children:Array.from({length:12},(e,n)=>n+1).map(e=>jsxRuntime.jsx("button",{type:"button",className:chunkNPQQDBFB_cjs.a("datepicker-time-item",e===C&&"active"),onClick:()=>De(e),children:String(e).padStart(2,"0")},e))})]}),jsxRuntime.jsx("span",{className:"datepicker-time-separator",children:":"}),jsxRuntime.jsxs("div",{className:"datepicker-time-col",children:[jsxRuntime.jsx("div",{className:"datepicker-time-col-label",children:"Min"}),jsxRuntime.jsx("div",{className:"datepicker-time-col-scroll",children:Ye.map(e=>jsxRuntime.jsx("button",{type:"button",className:chunkNPQQDBFB_cjs.a("datepicker-time-item",e===x&&"active"),onClick:()=>ye(e),children:String(e).padStart(2,"0")},e))})]}),jsxRuntime.jsxs("div",{className:"datepicker-time-col",children:[jsxRuntime.jsx("div",{className:"datepicker-time-col-label",children:"\xA0"}),jsxRuntime.jsx("div",{className:"d-flex flex-column gap-1 mt-1",children:["AM","PM"].map(e=>jsxRuntime.jsx("button",{type:"button",className:chunkNPQQDBFB_cjs.a("datepicker-time-item","datepicker-time-item--ampm",T===e&&"active"),onClick:()=>we(e),children:e},e))})]})]})]})]})})]});return jsxRuntime.jsxs("div",{className:"datepicker-wrapper position-relative d-inline-block w-100",style:{minWidth:0},children:[jsxRuntime.jsxs("div",{className:"position-relative",children:[jsxRuntime.jsx("input",{ref:Pe,id:se,name:N,type:"text",readOnly:true,disabled:y,className:chunkNPQQDBFB_cjs.a("form-control",c==="sm"&&"form-control-sm",c==="lg"&&"form-control-lg","pe-5",a),placeholder:Ee,value:V(l,t,g),onClick:()=>!y&&H(!P),onKeyDown:Se,"aria-haspopup":"dialog","aria-expanded":P,autoComplete:"off",...ie}),v&&l&&!y&&jsxRuntime.jsx("button",{type:"button",className:"btn btn-sm btn-link position-absolute top-50 end-0 translate-middle-y pe-2 text-secondary",style:{zIndex:2},onClick:Ne,tabIndex:-1,"aria-label":"Clear",children:"\xD7"})]}),P&&!y&&G.current&&reactDom.createPortal(Re,G.current)]})});re.displayName="DatePicker";var qe=re;exports.a=re;exports.b=qe;//# sourceMappingURL=chunk-OEFG7PNW.cjs.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb25lbnRzL0RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbIkRBWVNfT0ZfV0VFSyIsIk1PTlRIUyIsIk1JTlVURVMiLCJfIiwiaSIsIllFQVJTX1BFUl9QQUdFIiwiZGF5c0luTW9udGgiLCJ5ZWFyIiwibW9udGgiLCJpc1NhbWVEYXkiLCJiIiwiaXNEYXRlSW5SYW5nZSIsImRhdGUiLCJtaW4iLCJtYXgiLCJidWlsZENhbGVuZGFyR3JpZCIsImZpcnN0RGF5IiwidG90YWxEYXlzIiwiY2VsbHMiLCJwcmV2TW9udGhEYXlzIiwiZGF5IiwiZCIsInJlbWFpbmluZyIsImZvcm1hdFZhbHVlIiwibW9kZSIsImZtdCIsInkiLCJNIiwiaCIsIm0iLCJhIiwiaGgiLCJtYWtlRXZlbnQiLCJ2YWx1ZSIsImlucHV0TmFtZSIsInR5cGUiLCJQT1BPVkVSX0dVRVNTIiwiUE9QT1ZFUl9XSURUSF9HVUVTUyIsImdldFNjcm9sbFBhcmVudCIsImVsIiwicGFyZW50Iiwic3R5bGUiLCJvdmVyZmxvd1kiLCJjYWxjUG9wb3ZlclN0eWxlIiwiaW5wdXRFbCIsInBvcG92ZXJIZWlnaHQiLCJwb3BvdmVyV2lkdGgiLCJyZWN0Iiwic3BhY2VCZWxvdyIsInNwYWNlQWJvdmUiLCJwbGFjZUFib3ZlIiwibWluVyIsInciLCJEYXRlUGlja2VyIiwiY2xhc3NOYW1lIiwic2VsZWN0ZWQiLCJvbkNoYW5nZSIsImRhdGVGb3JtYXQiLCJwbGFjZWhvbGRlclRleHQiLCJzaXplIiwiaXNDbGVhcmFibGUiLCJkaXNhYmxlZCIsIm1pbkRhdGUiLCJtYXhEYXRlIiwidGltZUludGVydmFscyIsInRpbWV6b25lIiwiaWQiLCJuYW1lIiwicHJvcHMiLCJyZWYiLCJyZXNvbHZlVmFsdWUiLCJ2IiwidGltZU1hdGNoIiwiYXAiLCJub3ciLCJkdE1hdGNoIiwicmVzb2x2ZWRWYWx1ZSIsInNob3dDYWxlbmRhciIsInNob3dUaW1lIiwiaXNPcGVuIiwic2V0SXNPcGVuIiwidmlld1llYXIiLCJzZXRWaWV3WWVhciIsInZpZXdNb250aCIsInNldFZpZXdNb250aCIsInRlbXBEYXRlIiwic2V0VGVtcERhdGUiLCJ0ZW1wSG91cnMiLCJzZXRUZW1wSG91cnMiLCJ0ZW1wTWlucyIsInNldFRlbXBNaW5zIiwidGVtcEFtUG0iLCJzZXRUZW1wQW1QbSIsInNob3dZZWFyUGlja2VyIiwic2V0U2hvd1llYXJQaWNrZXIiLCJ5ZWFyUGFnZSIsInNldFllYXJQYWdlIiwicG9wb3ZlclN0eWxlIiwic2V0UG9wb3ZlclN0eWxlIiwiaW5wdXRSZWYiLCJwb3BvdmVyUmVmIiwicG9ydGFsUmVmIiwiZ2V0SGVpZ2h0IiwiZ2V0V2lkdGgiLCJzY3JvbGxQYXJlbnQiLCJ1cGRhdGUiLCJoYW5kbGVyIiwiZSIsImJ1aWxkRGF0ZSIsImJhc2UiLCJoMTIiLCJtaW5zIiwiYW1wbSIsImZpcmVDaGFuZ2UiLCJmb3JtYXR0ZWQiLCJjb21taXQiLCJjb21taXREYXRlT25seSIsImdyaWQiLCJoYW5kbGVQcmV2TW9udGgiLCJuZXdZIiwibmV3TSIsIm1heEQiLCJuZXdEYXRlIiwiaGFuZGxlTmV4dE1vbnRoIiwidG9kYXkiLCJtaW5EdCIsIm1heER0IiwiaGFuZGxlSG91ckNoYW5nZSIsImhhbmRsZU1pbkNoYW5nZSIsImhhbmRsZUFtUG1DaGFuZ2UiLCJvcGVuWWVhclBpY2tlciIsImhhbmRsZVllYXJTZWxlY3QiLCJ5ZWFyUGFnZVN0YXJ0IiwieWVhcnMiLCJoYW5kbGVDbGVhciIsImhhbmRsZUlucHV0S2V5RG93biIsIm1lcmdlSW5wdXRSZWYiLCJub2RlIiwicGxhY2Vob2xkZXIiLCJwb3BvdmVyIiwianN4cyIsImNuIiwianN4IiwiaXNDdXJyZW50WWVhciIsImlzU2VsZWN0ZWQiLCJGcmFnbWVudCIsImNlbGwiLCJpc1RvZGF5IiwiaW5SYW5nZSIsImlzRGlzYWJsZWREYXkiLCJjcmVhdGVQb3J0YWwiLCJEYXRlUGlja2VyX2RlZmF1bHQiXSwibWFwcGluZ3MiOiJrZ0JBMERBLElBQU1BLEVBQUFBLENBQWUs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QUFBLENBQzdDLFNBQUEsQ0FBV3dELEVBQUFBLENBQ1gsZUFBQSxDQUFjLFFBQUEsQ0FDZCxnQkFBZXhELENBQUFBLENBQ2YsWUFBQSxDQUFhLEtBQUEsQ0FDWixHQUFHWCxHQUNOLENBQUEsQ0FFQ1IsQ0FBQUEsRUFBZWdCLENBQUFBLEVBQWlCLENBQUNmLEdBQ2hDaUYsY0FBQUEsQ0FBQyxRQUFBLENBQUEsQ0FDQyxJQUFBLENBQUssUUFBQSxDQUNMLFNBQUEsQ0FBVSwyRkFBQSxDQUNWLEtBQUEsQ0FBTyxDQUFFLE9BQVEsQ0FBRSxDQUFBLENBQ25CLE9BQUEsQ0FBU1IsRUFBQUEsQ0FDVCxRQUFBLENBQVUsRUFBQSxDQUNWLFlBQUEsQ0FBVyxPQUFBLENBQ1osZ0JBRUQsQ0FBQSxDQUFBLENBRUosQ0FBQSxDQUdDdkQsQ0FBQUEsRUFBVSxDQUFDbEIsQ0FBQUEsRUFBWXdDLENBQUFBLENBQVUsT0FBQSxFQUFXaUQscUJBQUFBLENBQWFYLEdBQVN0QyxDQUFBQSxDQUFVLE9BQU8sQ0FBQSxDQUFBLENBQ3RGLENBRUosQ0FBQyxFQUVEaEQsRUFBQUEsQ0FBVyxXQUFBLENBQWMsWUFBQSxLQUdsQmtHLEVBQUFBLENBQVFsRyIsImZpbGUiOiJjaHVuay1PRUZHN1BOVy5janMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi4vbGliL2NuLmpzJ1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qICBUeXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVQaWNrZXJDaGFuZ2VFdmVudCB7XG4gIHRhcmdldDoge1xuICAgIHZhbHVlOiBzdHJpbmcgfCBudWxsXG4gICAgbmFtZTogc3RyaW5nXG4gICAgdHlwZTogc3RyaW5nXG4gIH1cbiAgcHJldmVudERlZmF1bHQ6ICgpID0+IHZvaWRcbiAgc3RvcFByb3BhZ2F0aW9uOiAoKSA9PiB2b2lkXG4gIG5hdGl2ZUV2ZW50OiBudWxsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVBpY2tlclByb3BzIHtcbiAgLyoqIFBpY2tlciBtb2RlIChkZWZhdWx0ICdkYXRlJykgKi9cbiAgbW9kZT86ICdkYXRlJyB8ICd0aW1lJyB8ICdkYXRldGltZSdcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBEYXRlIChhbGlhcyBmb3IgdmFsdWUpICovXG4gIHNlbGVjdGVkPzogRGF0ZSB8IG51bGxcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBEYXRlLCBJU08gc3RyaW5nLCBcImhoOm1tIEFBXCIgdGltZSBzdHJpbmcsIFwiWVlZWS1NTS1ERCBoaDptbSBBQVwiIGRhdGV0aW1lIHN0cmluZywgb3IgdGltZXN0YW1wICovXG4gIHZhbHVlPzogRGF0ZSB8IHN0cmluZyB8IG51bWJlciB8IG51bGxcbiAgLyoqIFN5bnRoZXRpYyBldmVudCBoYW5kbGVyIOKAlCBlLnRhcmdldC52YWx1ZSBpcyBhIHByZS1mb3JtYXR0ZWQgc3RyaW5nICovXG4gIG9uQ2hhbmdlPzogKGU6IERhdGVQaWNrZXJDaGFuZ2VFdmVudCkgPT4gdm9pZFxuICAvKiogRGlzcGxheSBmb3JtYXQgd2l0aCB0b2tlbnM6IHl5eXksIE1NLCBkZCwgaGgsIG1tLCBhYSAqL1xuICBkYXRlRm9ybWF0Pzogc3RyaW5nXG4gIC8qKiBQbGFjZWhvbGRlciB0ZXh0IHdoZW4gZW1wdHkgKi9cbiAgcGxhY2Vob2xkZXJUZXh0Pzogc3RyaW5nXG4gIC8qKiBCb290c3RyYXAgc2l6ZSB2YXJpYW50ICovXG4gIHNpemU/OiAnc20nIHwgJ2xnJ1xuICAvKiogU2hvdyBhIGNsZWFyIGJ1dHRvbiBvbiB0aGUgaW5wdXQgKi9cbiAgaXNDbGVhcmFibGU/OiBib29sZWFuXG4gIC8qKiBEaXNhYmxlIHRoZSBpbnB1dCAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgLyoqIEVhcmxpZXN0IHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtaW5EYXRlPzogRGF0ZVxuICAvKiogTGF0ZXN0IHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtYXhEYXRlPzogRGF0ZVxuICAvKiogTWludXRlIHN0ZXAgaW4gdGhlIHRpbWUgbGlzdCAoZGVmYXVsdCA1KSAqL1xuICB0aW1lSW50ZXJ2YWxzPzogbnVtYmVyXG4gIC8qKiBUaW1lem9uZSBpZGVudGlmaWVyIChkZWZhdWx0ICdLYW1wYWxhJykgKi9cbiAgdGltZXpvbmU/OiBzdHJpbmdcbiAgLyoqIEFkZGl0aW9uYWwgQ1NTIGNsYXNzZXMgb24gdGhlIGlucHV0ICovXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKiogSW5wdXQgZWxlbWVudCBJRCAqL1xuICBpZD86IHN0cmluZ1xuICAvKiogSW5wdXQgbmFtZSBhdHRyaWJ1dGUg4oCUIHN1cmZhY2VzIGFzIGUudGFyZ2V0Lm5hbWUgaW4gb25DaGFuZ2UgKi9cbiAgbmFtZT86IHN0cmluZ1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qICBDb25zdGFudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmNvbnN0IERBWVNfT0ZfV0VFSyA9IFsnU3UnLCAnTW8nLCAnVHUnLCAnV2UnLCAnVGgnLCAnRnInLCAnU2EnXVxuY29uc3QgTU9OVEhTID0gW1xuICAnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsXG4gICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlcicsXG5dXG5jb25zdCBNSU5VVEVTID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogNjAgfSwgKF8sIGkpID0+IGkpXG5jb25zdCBZRUFSU19QRVJfUEFHRSA9IDEyXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogIEhlbHBlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuY29uc3QgZGF5c0luTW9udGggPSAoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyKTogbnVtYmVyID0+XG4gIG5ldyBEYXRlKHllYXIsIG1vbnRoICsgMSwgMCkuZ2V0RGF0ZSgpXG5cbmNvbnN0IGlzU2FtZURheSA9IChhOiBEYXRlIHwgbnVsbCwgYjogRGF0ZSB8IG51bGwpOiBib29sZWFuID0+XG4gIGEgIT09IG51bGwgJiYgYiAhPT0gbnVsbCAmJlxuICBhLmdldEZ1bGxZZWFyKCkgPT09IGIuZ2V0RnVsbFllYXIoKSAmJlxuICBhLmdldE1vbnRoKCkgPT09IGIuZ2V0TW9udGgoKSAmJlxuICBhLmdldERhdGUoKSA9PT0gYi5nZXREYXRlKClcblxuY29uc3QgaXNEYXRlSW5SYW5nZSA9IChkYXRlOiBEYXRlLCBtaW46IERhdGUgfCBudWxsLCBtYXg6IERhdGUgfCBudWxsKTogYm9vbGVhbiA9PiB7XG4gIGlmIChtaW4gJiYgZGF0ZSA8IG5ldyBEYXRlKG1pbi5nZXRGdWxsWWVhcigpLCBtaW4uZ2V0TW9udGgoKSwgbWluLmdldERhdGUoKSkpIHJldHVybiBmYWxzZVxuICBpZiAobWF4ICYmIGRhdGUgPiBuZXcgRGF0ZShtYXguZ2V0RnVsbFllYXIoKSwgbWF4LmdldE1vbnRoKCksIG1heC5nZXREYXRlKCkpKSByZXR1cm4gZmFsc2VcbiAgcmV0dXJuIHRydWVcbn1cblxuaW50ZXJmYWNlIENhbGVuZGFyQ2VsbCB7XG4gIGRheTogbnVtYmVyXG4gIGRhdGU6IERhdGVcbiAgaXNPdXRzaWRlOiBib29sZWFuXG59XG5cbmNvbnN0IGJ1aWxkQ2FsZW5kYXJHcmlkID0gKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcik6IENhbGVuZGFyQ2VsbFtdID0+IHtcbiAgY29uc3QgZmlyc3REYXkgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSkuZ2V0RGF5KClcbiAgY29uc3QgdG90YWxEYXlzID0gZGF5c0luTW9udGgoeWVhciwgbW9udGgpXG4gIGNvbnN0IGNlbGxzOiBDYWxlbmRhckNlbGxbXSA9IFtdXG5cbiAgY29uc3QgcHJldk1vbnRoRGF5cyA9IGRheXNJbk1vbnRoKHllYXIsIG1vbnRoIC0gMSlcbiAgZm9yIChsZXQgaSA9IGZpcnN0RGF5IC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBjb25zdCBkYXkgPSBwcmV2TW9udGhEYXlzIC0gaVxuICAgIGNlbGxzLnB1c2goeyBkYXksIGRhdGU6IG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgZGF5KSwgaXNPdXRzaWRlOiB0cnVlIH0pXG4gIH1cblxuICBmb3IgKGxldCBkID0gMTsgZCA8PSB0b3RhbERheXM7IGQrKykge1xuICAgIGNlbGxzLnB1c2goeyBkYXk6IGQsIGRhdGU6IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkKSwgaXNPdXRzaWRlOiBmYWxzZSB9KVxuICB9XG5cbiAgY29uc3QgcmVtYWluaW5nID0gNDIgLSBjZWxscy5sZW5ndGhcbiAgZm9yIChsZXQgZCA9IDE7IGQgPD0gcmVtYWluaW5nOyBkKyspIHtcbiAgICBjZWxscy5wdXNoKHsgZGF5OiBkLCBkYXRlOiBuZXcgRGF0ZSh5ZWFyLCBtb250aCArIDEsIGQpLCBpc091dHNpZGU6IHRydWUgfSlcbiAgfVxuXG4gIHJldHVybiBjZWxsc1xufVxuXG5jb25zdCBmb3JtYXRWYWx1ZSA9IChkYXRlOiBEYXRlIHwgbnVsbCwgbW9kZTogc3RyaW5nLCBmbXQ/OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBpZiAoIWRhdGUgfHwgaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSByZXR1cm4gJydcblxuICBjb25zdCB5ID0gZGF0ZS5nZXRGdWxsWWVhcigpXG4gIGNvbnN0IE0gPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKVxuICBjb25zdCBkID0gU3RyaW5nKGRhdGUuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpXG4gIGxldCBoID0gZGF0ZS5nZXRIb3VycygpXG4gIGNvbnN0IG0gPSBTdHJpbmcoZGF0ZS5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsICcwJylcbiAgY29uc3QgYSA9IGggPj0gMTIgPyAnUE0nIDogJ0FNJ1xuICBoID0gaCAlIDEyIHx8IDEyXG4gIGNvbnN0IGhoID0gU3RyaW5nKGgpLnBhZFN0YXJ0KDIsICcwJylcblxuICBpZiAoZm10KSB7XG4gICAgcmV0dXJuIGZtdC5yZXBsYWNlKCd5eXl5JywgU3RyaW5nKHkpKS5yZXBsYWNlKCdNTScsIE0pLnJlcGxhY2UoJ2RkJywgZCkucmVwbGFjZSgnaGgnLCBoaCkucmVwbGFjZSgnbW0nLCBtKS5yZXBsYWNlKCdhYScsIGEpXG4gIH1cblxuICBzd2l0Y2ggKG1vZGUpIHtcbiAgICBjYXNlICd0aW1lJzogICAgIHJldHVybiBgJHtoaH06JHttfSAke2F9YFxuICAgIGNhc2UgJ2RhdGV0aW1lJzogcmV0dXJuIGAke3l9LSR7TX0tJHtkfSAke2hofToke219ICR7YX1gXG4gICAgZGVmYXVsdDogICAgICAgICByZXR1cm4gYCR7eX0tJHtNfS0ke2R9YFxuICB9XG59XG5cbi8qKlxuICogQnVpbGQgYSBzeW50aGV0aWMgZXZlbnQgb2JqZWN0IGxpa2UgYSBuYXRpdmUgaW5wdXQncyBvbkNoYW5nZS5cbiAqL1xuY29uc3QgbWFrZUV2ZW50ID0gKHZhbHVlOiBzdHJpbmcgfCBudWxsLCBpbnB1dE5hbWU6IHN0cmluZywgdHlwZTogc3RyaW5nID0gJ2RhdGUnKTogRGF0ZVBpY2tlckNoYW5nZUV2ZW50ID0+ICh7XG4gIHRhcmdldDoge1xuICAgIHZhbHVlLFxuICAgIG5hbWU6IGlucHV0TmFtZSxcbiAgICB0eXBlLFxuICB9LFxuICBwcmV2ZW50RGVmYXVsdDogKCkgPT4ge30sXG4gIHN0b3BQcm9wYWdhdGlvbjogKCkgPT4ge30sXG4gIG5hdGl2ZUV2ZW50OiBudWxsLFxufSlcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAgUG9wb3ZlciBwb3NpdGlvbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKiogQXBwcm94aW1hdGUgaGVpZ2h0cyDigJQgdXNlZCBhcyBhIGZpcnN0IGd1ZXNzIGJlZm9yZSB0aGUgcmVhbCBET00gaGVpZ2h0IGlzIG1lYXN1cmVkLiAqL1xuY29uc3QgUE9QT1ZFUl9HVUVTUzogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHsgZGF0ZTogMzAwLCB0aW1lOiAzMDAsIGRhdGV0aW1lOiA0MDAsIHllYXI6IDI1MCB9XG5cbi8qKiBBcHByb3hpbWF0ZSB3aWR0aHMg4oCUIHVzZWQgYXMgYSBmaXJzdCBndWVzcyBiZWZvcmUgdGhlIHJlYWwgRE9NIHdpZHRoIGlzIG1lYXN1cmVkLiAqL1xuY29uc3QgUE9QT1ZFUl9XSURUSF9HVUVTUzogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHsgZGF0ZTogMjgwLCB0aW1lOiAyMjAsIGRhdGV0aW1lOiA0NDAsIHllYXI6IDI4MCB9XG5cbi8qKlxuICogRmluZCB0aGUgbmVhcmVzdCBzY3JvbGxhYmxlIGFuY2VzdG9yIChmb3IgY2FwdHVyaW5nIHNjcm9sbCBldmVudHMgaW5zaWRlXG4gKiBtb2RhbHMgLyBzaWRlIHBhbmVscyAvIGN1c3RvbSBjb250YWluZXJzKS5cbiAqL1xuY29uc3QgZ2V0U2Nyb2xsUGFyZW50ID0gKGVsOiBIVE1MRWxlbWVudCB8IG51bGwpOiBIVE1MRWxlbWVudCA9PiB7XG4gIGlmICghZWwpIHJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRcbiAgbGV0IHBhcmVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gZWwucGFyZW50RWxlbWVudFxuICB3aGlsZSAocGFyZW50KSB7XG4gICAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShwYXJlbnQpXG4gICAgY29uc3Qgb3ZlcmZsb3dZID0gc3R5bGUub3ZlcmZsb3dZIHx8IHN0eWxlLm92ZXJmbG93XG4gICAgaWYgKG92ZXJmbG93WSA9PT0gJ2F1dG8nIHx8IG92ZXJmbG93WSA9PT0gJ3Njcm9sbCcpIHJldHVybiBwYXJlbnRcbiAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50RWxlbWVudFxuICB9XG4gIHJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRcbn1cblxuY29uc3QgY2FsY1BvcG92ZXJTdHlsZSA9IChpbnB1dEVsOiBIVE1MRWxlbWVudCB8IG51bGwsIHBvcG92ZXJIZWlnaHQ6IG51bWJlciwgcG9wb3ZlcldpZHRoOiBudW1iZXIpOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0+IHtcbiAgaWYgKCFpbnB1dEVsKSByZXR1cm4ge31cbiAgY29uc3QgcmVjdCA9IGlucHV0RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgY29uc3QgaCA9IHBvcG92ZXJIZWlnaHQgfHwgMzAwXG5cbiAgY29uc3Qgc3BhY2VCZWxvdyA9IHdpbmRvdy5pbm5lckhlaWdodCAtIHJlY3QuYm90dG9tXG4gIGNvbnN0IHNwYWNlQWJvdmUgPSByZWN0LnRvcFxuXG4gIC8qIE9ubHkgZmxpcCBhYm92ZSB3aGVuIGJlbG93IGlzIHRydWx5IHRvbyB0aWdodCBBTkQgYWJvdmUgb2ZmZXJzIG1vcmUgcm9vbSAqL1xuICBjb25zdCBwbGFjZUFib3ZlID0gc3BhY2VCZWxvdyA8IGggJiYgc3BhY2VBYm92ZSA+IHNwYWNlQmVsb3dcblxuICAvKiBSZXNwb25zaXZlOiB1c2Ugc21hbGxlciBtaW4td2lkdGggb24gbW9iaWxlIHRvIHByZXZlbnQgb3ZlcmZsb3cuXG4gICAgIFRoZSBwb3BvdmVyIHNpemVzIHRvIGl0cyBjb250ZW50IOKAlCBpdCBtdXN0IE5PVCBzdHJldGNoIHdpdGggYSB3aWRlIGlucHV0LFxuICAgICBzbyByZWN0LndpZHRoIGlzIGludGVudGlvbmFsbHkgaWdub3JlZCBmb3Igc2l6aW5nLiAqL1xuICBjb25zdCBtaW5XID0gd2luZG93LmlubmVyV2lkdGggPCA1NzYgPyAyMjAgOiAyNjBcbiAgY29uc3QgdyA9IHBvcG92ZXJXaWR0aCB8fCBtaW5XXG5cbiAgcmV0dXJuIHtcbiAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICB0b3A6IHBsYWNlQWJvdmUgPyBNYXRoLm1heCg0LCByZWN0LnRvcCAtIGggLSA0KSA6IHJlY3QuYm90dG9tICsgNCxcbiAgICBsZWZ0OiBNYXRoLm1heCg0LCBNYXRoLm1pbihyZWN0LmxlZnQsIHdpbmRvdy5pbm5lcldpZHRoIC0gdyAtIDQpKSxcbiAgICBtaW5XaWR0aDogbWluVyxcbiAgICB3aWR0aDogJ21heC1jb250ZW50JyxcbiAgICBtYXhXaWR0aDogd2luZG93LmlubmVyV2lkdGggLSA4LFxuICAgIHpJbmRleDogMTA3MCxcbiAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qICBEYXRlUGlja2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogQ3VzdG9tIEJvb3RzdHJhcC1zdHlsZWQgZGF0ZSAvIHRpbWUgLyBkYXRldGltZSBwaWNrZXIuIFplcm8gZGVwZW5kZW5jaWVzLlxuICpcbiAqICoqSW1wb3J0YW50OioqIFRoZSBhY2NvbXBhbnlpbmcgQ1NTICoqbXVzdCoqIGJlIGltcG9ydGVkIGZvciB0aGUgcGlja2VyIHRvIHJlbmRlciBjb3JyZWN0bHk6XG4gKiBgYGBqc1xuICogaW1wb3J0ICdyZWFjdC1ib290c3RyYXAtcGx1Z2lucy9jc3MvcGx1Z2lucy5jc3MnXG4gKiBgYGBcbiAqL1xuY29uc3QgRGF0ZVBpY2tlciA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTElucHV0RWxlbWVudCwgRGF0ZVBpY2tlclByb3BzPigoe1xuICBjbGFzc05hbWUsXG4gIG1vZGUgPSAnZGF0ZScsXG4gIHNlbGVjdGVkLFxuICB2YWx1ZSxcbiAgb25DaGFuZ2UsXG4gIGRhdGVGb3JtYXQsXG4gIHBsYWNlaG9sZGVyVGV4dCxcbiAgc2l6ZSxcbiAgaXNDbGVhcmFibGUgPSBmYWxzZSxcbiAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgbWluRGF0ZSxcbiAgbWF4RGF0ZSxcbiAgdGltZUludGVydmFscyA9IDUsXG4gIHRpbWV6b25lID0gJ0thbXBhbGEnLFxuICBpZCxcbiAgbmFtZSxcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICAvKiAtLS0tIGRlcml2ZWQgLS0tLSAqL1xuICBjb25zdCByZXNvbHZlVmFsdWUgPSAodjogRGF0ZSB8IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpOiBEYXRlIHwgbnVsbCA9PiB7XG4gICAgaWYgKCF2KSByZXR1cm4gbnVsbFxuICAgIGlmICh2IGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIGlzTmFOKHYuZ2V0VGltZSgpKSA/IG51bGwgOiB2XG4gICAgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdiA9PT0gJ251bWJlcicpIHtcbiAgICAgIC8vIFN0YW5kYXJkIERhdGUgcGFyc2luZyAod29ya3MgZm9yIElTTyA4NjAxLCBcIllZWVktTU0tRERcIiwgZXRjLilcbiAgICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSh2KVxuICAgICAgaWYgKCFpc05hTihkLmdldFRpbWUoKSkpIHJldHVybiBkXG5cbiAgICAgIC8vIEhhbmRsZSB0aW1lLW9ubHkgc3RyaW5ncyBmcm9tIGZvcm1hdFZhbHVlOiBcImhoOm1tIEFBXCJcbiAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3QgdGltZU1hdGNoID0gdi5tYXRjaCgvXihcXGR7MSwyfSk6KFxcZHsyfSlcXHMqKEFNfFBNKSQvaSlcbiAgICAgICAgaWYgKHRpbWVNYXRjaCkge1xuICAgICAgICAgIGxldCBoID0gcGFyc2VJbnQodGltZU1hdGNoWzFdLCAxMClcbiAgICAgICAgICBjb25zdCBtID0gcGFyc2VJbnQodGltZU1hdGNoWzJdLCAxMClcbiAgICAgICAgICBjb25zdCBhcCA9IHRpbWVNYXRjaFszXS50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgaWYgKGggPT09IDEyICYmIGFwID09PSAnQU0nKSBoID0gMFxuICAgICAgICAgIGlmIChoICE9PSAxMiAmJiBhcCA9PT0gJ1BNJykgaCArPSAxMlxuICAgICAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKClcbiAgICAgICAgICByZXR1cm4gbmV3IERhdGUobm93LmdldEZ1bGxZZWFyKCksIG5vdy5nZXRNb250aCgpLCBub3cuZ2V0RGF0ZSgpLCBoLCBtLCAwLCAwKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGFuZGxlIGRhdGV0aW1lIHN0cmluZ3MgZnJvbSBmb3JtYXRWYWx1ZTogXCJZWVlZLU1NLUREIGhoOm1tIEFBXCJcbiAgICAgICAgY29uc3QgZHRNYXRjaCA9IHYubWF0Y2goL14oXFxkezR9KS0oXFxkezJ9KS0oXFxkezJ9KVxccysoXFxkezEsMn0pOihcXGR7Mn0pXFxzKihBTXxQTSkkL2kpXG4gICAgICAgIGlmIChkdE1hdGNoKSB7XG4gICAgICAgICAgbGV0IGggPSBwYXJzZUludChkdE1hdGNoWzRdLCAxMClcbiAgICAgICAgICBjb25zdCBtID0gcGFyc2VJbnQoZHRNYXRjaFs1XSwgMTApXG4gICAgICAgICAgY29uc3QgYXAgPSBkdE1hdGNoWzZdLnRvVXBwZXJDYXNlKClcbiAgICAgICAgICBpZiAoaCA9PT0gMTIgJiYgYXAgPT09ICdBTScpIGggPSAwXG4gICAgICAgICAgaWYgKGggIT09IDEyICYmIGFwID09PSAnUE0nKSBoICs9IDEyXG4gICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHBhcnNlSW50KGR0TWF0Y2hbMV0pLCBwYXJzZUludChkdE1hdGNoWzJdKSAtIDEsIHBhcnNlSW50KGR0TWF0Y2hbM10pLCBoLCBtLCAwLCAwKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IHJlc29sdmVkVmFsdWUgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IHJlc29sdmVWYWx1ZShzZWxlY3RlZCA/PyB2YWx1ZSksXG4gICAgW1xuICAgICAgc2VsZWN0ZWQgaW5zdGFuY2VvZiBEYXRlID8gc2VsZWN0ZWQuZ2V0VGltZSgpIDogc2VsZWN0ZWQsXG4gICAgICB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZS5nZXRUaW1lKCkgOiB2YWx1ZSxcbiAgICBdLFxuICApXG4gIGNvbnN0IHNob3dDYWxlbmRhciA9IG1vZGUgPT09ICdkYXRlJyB8fCBtb2RlID09PSAnZGF0ZXRpbWUnXG4gIGNvbnN0IHNob3dUaW1lID0gbW9kZSA9PT0gJ3RpbWUnIHx8IG1vZGUgPT09ICdkYXRldGltZSdcblxuICAvKiAtLS0tIGludGVybmFsIHN0YXRlIC0tLS0gKi9cbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbdmlld1llYXIsIHNldFZpZXdZZWFyXSA9IFJlYWN0LnVzZVN0YXRlKCgpID0+XG4gICAgcmVzb2x2ZWRWYWx1ZSA/IHJlc29sdmVkVmFsdWUuZ2V0RnVsbFllYXIoKSA6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSlcbiAgY29uc3QgW3ZpZXdNb250aCwgc2V0Vmlld01vbnRoXSA9IFJlYWN0LnVzZVN0YXRlKCgpID0+XG4gICAgcmVzb2x2ZWRWYWx1ZSA/IHJlc29sdmVkVmFsdWUuZ2V0TW9udGgoKSA6IG5ldyBEYXRlKCkuZ2V0TW9udGgoKSlcbiAgY29uc3QgW3RlbXBEYXRlLCBzZXRUZW1wRGF0ZV0gPSBSZWFjdC51c2VTdGF0ZTxEYXRlIHwgbnVsbD4ocmVzb2x2ZWRWYWx1ZSlcbiAgY29uc3QgW3RlbXBIb3Vycywgc2V0VGVtcEhvdXJzXSA9IFJlYWN0LnVzZVN0YXRlKCgpID0+XG4gICAgcmVzb2x2ZWRWYWx1ZSA/IChyZXNvbHZlZFZhbHVlLmdldEhvdXJzKCkgJSAxMiB8fCAxMikgOiAxMilcbiAgY29uc3QgW3RlbXBNaW5zLCBzZXRUZW1wTWluc10gPSBSZWFjdC51c2VTdGF0ZSgoKSA9PlxuICAgIHJlc29sdmVkVmFsdWUgPyByZXNvbHZlZFZhbHVlLmdldE1pbnV0ZXMoKSA6IDApXG4gIGNvbnN0IFt0ZW1wQW1QbSwgc2V0VGVtcEFtUG1dID0gUmVhY3QudXNlU3RhdGUoKCkgPT5cbiAgICByZXNvbHZlZFZhbHVlID8gKHJlc29sdmVkVmFsdWUuZ2V0SG91cnMoKSA+PSAxMiA/ICdQTScgOiAnQU0nKSA6ICdBTScpXG4gIGNvbnN0IFtzaG93WWVhclBpY2tlciwgc2V0U2hvd1llYXJQaWNrZXJdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFt5ZWFyUGFnZSwgc2V0WWVhclBhZ2VdID0gUmVhY3QudXNlU3RhdGUoKCkgPT5cbiAgICBNYXRoLmZsb29yKChyZXNvbHZlZFZhbHVlID8gcmVzb2x2ZWRWYWx1ZS5nZXRGdWxsWWVhcigpIDogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpKSAvIFlFQVJTX1BFUl9QQUdFKSAqIFlFQVJTX1BFUl9QQUdFXG4gIClcbiAgY29uc3QgW3BvcG92ZXJTdHlsZSwgc2V0UG9wb3ZlclN0eWxlXSA9IFJlYWN0LnVzZVN0YXRlPFJlYWN0LkNTU1Byb3BlcnRpZXM+KHt9KVxuXG4gIGNvbnN0IGlucHV0UmVmID0gUmVhY3QudXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHBvcG92ZXJSZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHBvcnRhbFJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpXG5cbiAgLyogLS0tLSBwb3J0YWwgY29udGFpbmVyIC0tLS0gKi9cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgZWwuY2xhc3NOYW1lID0gJ2RhdGVwaWNrZXItcG9ydGFsLXJvb3QnXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbClcbiAgICBwb3J0YWxSZWYuY3VycmVudCA9IGVsXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChlbC5wYXJlbnROb2RlKSBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsKVxuICAgICAgcG9ydGFsUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgfVxuICB9LCBbXSlcblxuICAvKiAtLS0tIHN5bmMgdGVtcCBzdGF0ZSB3aGVuIHZhbHVlIGNoYW5nZXMgZXh0ZXJuYWxseSAtLS0tICovXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlc29sdmVkVmFsdWUgJiYgIWlzTmFOKHJlc29sdmVkVmFsdWUuZ2V0VGltZSgpKSkge1xuICAgICAgc2V0VGVtcERhdGUocmVzb2x2ZWRWYWx1ZSlcbiAgICAgIHNldFZpZXdZZWFyKHJlc29sdmVkVmFsdWUuZ2V0RnVsbFllYXIoKSlcbiAgICAgIHNldFZpZXdNb250aChyZXNvbHZlZFZhbHVlLmdldE1vbnRoKCkpXG4gICAgICBzZXRUZW1wSG91cnMocmVzb2x2ZWRWYWx1ZS5nZXRIb3VycygpICUgMTIgfHwgMTIpXG4gICAgICBzZXRUZW1wTWlucyhyZXNvbHZlZFZhbHVlLmdldE1pbnV0ZXMoKSlcbiAgICAgIHNldFRlbXBBbVBtKHJlc29sdmVkVmFsdWUuZ2V0SG91cnMoKSA+PSAxMiA/ICdQTScgOiAnQU0nKVxuICAgICAgc2V0WWVhclBhZ2UoTWF0aC5mbG9vcihyZXNvbHZlZFZhbHVlLmdldEZ1bGxZZWFyKCkgLyBZRUFSU19QRVJfUEFHRSkgKiBZRUFSU19QRVJfUEFHRSlcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VGVtcERhdGUobnVsbClcbiAgICB9XG4gIH0sIFtyZXNvbHZlZFZhbHVlXSlcblxuICAvKiAtLS0tIHJlcG9zaXRpb24gcG9wb3ZlciBvbiBvcGVuIC8gc2Nyb2xsIC8gcmVzaXplIC0tLS0gKi9cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzT3BlbikgcmV0dXJuXG5cbiAgICAvKiBNZWFzdXJlIGFjdHVhbCBwb3BvdmVyIHNpemUgc28gd2UgcG9zaXRpb24gd2l0aCBubyB3YXN0ZWQgc3BhY2UgKi9cbiAgICBjb25zdCBnZXRIZWlnaHQgPSAoKTogbnVtYmVyID0+IHtcbiAgICAgIGlmIChwb3BvdmVyUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuIHBvcG92ZXJSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHRcbiAgICAgIH1cbiAgICAgIHJldHVybiBQT1BPVkVSX0dVRVNTW3Nob3dZZWFyUGlja2VyID8gJ3llYXInIDogbW9kZV0gfHwgMzAwXG4gICAgfVxuICAgIGNvbnN0IGdldFdpZHRoID0gKCk6IG51bWJlciA9PiB7XG4gICAgICBpZiAocG9wb3ZlclJlZi5jdXJyZW50KSB7XG4gICAgICAgIHJldHVybiBwb3BvdmVyUmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGhcbiAgICAgIH1cbiAgICAgIHJldHVybiBQT1BPVkVSX1dJRFRIX0dVRVNTW3Nob3dZZWFyUGlja2VyID8gJ3llYXInIDogbW9kZV0gfHwgMjgwXG4gICAgfVxuXG4gICAgY29uc3Qgc2Nyb2xsUGFyZW50ID0gZ2V0U2Nyb2xsUGFyZW50KGlucHV0UmVmLmN1cnJlbnQpXG5cbiAgICBjb25zdCB1cGRhdGUgPSAoKSA9PiB7XG4gICAgICAvKiBGb3JjZSBhIHBhaW50IGZyYW1lIHNvIHRoZSBwb3BvdmVyIGhhcyBpdHMgcmVhbCBzaXplICovXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBzZXRQb3BvdmVyU3R5bGUoY2FsY1BvcG92ZXJTdHlsZShpbnB1dFJlZi5jdXJyZW50LCBnZXRIZWlnaHQoKSwgZ2V0V2lkdGgoKSkpXG4gICAgICB9KVxuICAgIH1cbiAgICB1cGRhdGUoKVxuXG4gICAgLyogTGlzdGVuIG9uIHRoZSBuZWFyZXN0IHNjcm9sbGFibGUgYW5jZXN0b3IgKGUuZy4gbW9kYWwgYm9keSkgQU5EIHRoZSB3aW5kb3cgKi9cbiAgICBzY3JvbGxQYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlLCB7IHBhc3NpdmU6IHRydWUgfSlcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBzY3JvbGxQYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlKVxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZSlcbiAgICB9XG4gIH0sIFtpc09wZW4sIG1vZGUsIHNob3dZZWFyUGlja2VyXSlcblxuICAvKiAtLS0tIGNsaWNrIG91dHNpZGUgdG8gY2xvc2UgLS0tLSAqL1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNPcGVuKSByZXR1cm5cbiAgICBjb25zdCBoYW5kbGVyID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmIChwb3BvdmVyUmVmLmN1cnJlbnQgJiYgIXBvcG92ZXJSZWYuY3VycmVudC5jb250YWlucyhlLnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgIGlucHV0UmVmLmN1cnJlbnQgJiYgIWlucHV0UmVmLmN1cnJlbnQuY29udGFpbnMoZS50YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgICAgc2V0SXNPcGVuKGZhbHNlKVxuICAgICAgICBzZXRTaG93WWVhclBpY2tlcihmYWxzZSlcbiAgICAgIH1cbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlcilcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlcilcbiAgfSwgW2lzT3Blbl0pXG5cbiAgLyogLS0tLSBjb21taXQgaGVscGVycyAtLS0tICovXG4gIGNvbnN0IGJ1aWxkRGF0ZSA9IChiYXNlOiBEYXRlLCBoMTI6IG51bWJlciwgbWluczogbnVtYmVyLCBhbXBtOiBzdHJpbmcpOiBEYXRlID0+IHtcbiAgICBjb25zdCBkID0gbmV3IERhdGUoYmFzZSlcbiAgICBsZXQgaCA9IGgxMiAlIDEyXG4gICAgaWYgKGFtcG0gPT09ICdQTScpIGggKz0gMTJcbiAgICBpZiAoaCA9PT0gMTIgJiYgYW1wbSA9PT0gJ0FNJykgaCA9IDBcbiAgICBkLnNldEhvdXJzKGgsIG1pbnMsIDAsIDApXG4gICAgcmV0dXJuIGRcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlIG9uQ2hhbmdlIHdpdGggYSBwcmUtYnVpbHQgZGF0ZSB3aXRob3V0IGNsb3NpbmcgdGhlIHBvcG92ZXIuXG4gICAqIENhbGxlcnMgbXVzdCBidWlsZCB0aGUgY29tcGxldGUgZGF0ZSAoaW5jbHVkaW5nIHRpbWUpIGJlZm9yZSBwYXNzaW5nIGl0IGluLlxuICAgKi9cbiAgY29uc3QgZmlyZUNoYW5nZSA9IChkYXRlOiBEYXRlIHwgbnVsbCk6IHZvaWQgPT4ge1xuICAgIGlmICghZGF0ZSB8fCBpc05hTihkYXRlLmdldFRpbWUoKSkpIHJldHVyblxuICAgIGNvbnN0IGZvcm1hdHRlZCA9IGZvcm1hdFZhbHVlKGRhdGUsIG1vZGUsIGRhdGVGb3JtYXQpXG4gICAgb25DaGFuZ2U/LihtYWtlRXZlbnQoZm9ybWF0dGVkLCBuYW1lIHx8ICcnLCBtb2RlKSlcbiAgfVxuXG4gIGNvbnN0IGNvbW1pdCA9IChkYXRlOiBEYXRlIHwgbnVsbCk6IHZvaWQgPT4ge1xuICAgIGlmICghZGF0ZSkge1xuICAgICAgb25DaGFuZ2U/LihtYWtlRXZlbnQobnVsbCwgbmFtZSB8fCAnJywgbW9kZSkpXG4gICAgICBzZXRJc09wZW4oZmFsc2UpXG4gICAgICBzZXRTaG93WWVhclBpY2tlcihmYWxzZSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBmaXJlQ2hhbmdlKGRhdGUpXG4gICAgaWYgKG1vZGUgPT09ICdkYXRlJykgeyBzZXRJc09wZW4oZmFsc2UpOyBzZXRTaG93WWVhclBpY2tlcihmYWxzZSkgfVxuICB9XG5cbiAgY29uc3QgY29tbWl0RGF0ZU9ubHkgPSAoZGF0ZTogRGF0ZSk6IHZvaWQgPT4ge1xuICAgIHNldFRlbXBEYXRlKGRhdGUpXG4gICAgaWYgKG1vZGUgPT09ICdkYXRlJykge1xuICAgICAgY29tbWl0KGRhdGUpXG4gICAgfSBlbHNlIGlmIChtb2RlID09PSAnZGF0ZXRpbWUnKSB7XG4gICAgICAvLyBCdWlsZCBmdWxsIGRhdGV0aW1lIChkYXRlICsgY3VycmVudCB0aW1lIHNlbGVjdGlvbikgYW5kIGZpcmVcbiAgICAgIGNvbnN0IGQgPSBidWlsZERhdGUoZGF0ZSwgdGVtcEhvdXJzLCB0ZW1wTWlucywgdGVtcEFtUG0pXG4gICAgICBmaXJlQ2hhbmdlKGQpXG4gICAgfVxuICB9XG5cbiAgLyogLS0tLSBjYWxlbmRhciBncmlkIC0tLS0gKi9cbiAgY29uc3QgZ3JpZCA9IGJ1aWxkQ2FsZW5kYXJHcmlkKHZpZXdZZWFyLCB2aWV3TW9udGgpXG5cbiAgY29uc3QgaGFuZGxlUHJldk1vbnRoID0gKCkgPT4ge1xuICAgIGxldCBuZXdZID0gdmlld1llYXIsIG5ld00gPSB2aWV3TW9udGhcbiAgICBpZiAodmlld01vbnRoID09PSAwKSB7IG5ld1kgPSB2aWV3WWVhciAtIDE7IG5ld00gPSAxMSB9XG4gICAgZWxzZSBuZXdNID0gdmlld01vbnRoIC0gMVxuICAgIHNldFZpZXdZZWFyKG5ld1kpOyBzZXRWaWV3TW9udGgobmV3TSlcbiAgICBjb25zdCBiYXNlID0gdGVtcERhdGUgfHwgbmV3IERhdGUoKVxuICAgIGNvbnN0IG1heEQgPSBkYXlzSW5Nb250aChuZXdZLCBuZXdNKVxuICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZShuZXdZLCBuZXdNLCBNYXRoLm1pbihiYXNlLmdldERhdGUoKSwgbWF4RCkpXG4gICAgc2V0VGVtcERhdGUobmV3RGF0ZSlcbiAgICBmaXJlQ2hhbmdlKHNob3dUaW1lID8gYnVpbGREYXRlKG5ld0RhdGUsIHRlbXBIb3VycywgdGVtcE1pbnMsIHRlbXBBbVBtKSA6IG5ld0RhdGUpXG4gIH1cbiAgY29uc3QgaGFuZGxlTmV4dE1vbnRoID0gKCkgPT4ge1xuICAgIGxldCBuZXdZID0gdmlld1llYXIsIG5ld00gPSB2aWV3TW9udGhcbiAgICBpZiAodmlld01vbnRoID09PSAxMSkgeyBuZXdZID0gdmlld1llYXIgKyAxOyBuZXdNID0gMCB9XG4gICAgZWxzZSBuZXdNID0gdmlld01vbnRoICsgMVxuICAgIHNldFZpZXdZZWFyKG5ld1kpOyBzZXRWaWV3TW9udGgobmV3TSlcbiAgICBjb25zdCBiYXNlID0gdGVtcERhdGUgfHwgbmV3IERhdGUoKVxuICAgIGNvbnN0IG1heEQgPSBkYXlzSW5Nb250aChuZXdZLCBuZXdNKVxuICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZShuZXdZLCBuZXdNLCBNYXRoLm1pbihiYXNlLmdldERhdGUoKSwgbWF4RCkpXG4gICAgc2V0VGVtcERhdGUobmV3RGF0ZSlcbiAgICBmaXJlQ2hhbmdlKHNob3dUaW1lID8gYnVpbGREYXRlKG5ld0RhdGUsIHRlbXBIb3VycywgdGVtcE1pbnMsIHRlbXBBbVBtKSA6IG5ld0RhdGUpXG4gIH1cblxuICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKClcbiAgY29uc3QgbWluRHQgPSBtaW5EYXRlID8gbmV3IERhdGUobWluRGF0ZS5nZXRGdWxsWWVhcigpLCBtaW5EYXRlLmdldE1vbnRoKCksIG1pbkRhdGUuZ2V0RGF0ZSgpKSA6IG51bGxcbiAgY29uc3QgbWF4RHQgPSBtYXhEYXRlID8gbmV3IERhdGUobWF4RGF0ZS5nZXRGdWxsWWVhcigpLCBtYXhEYXRlLmdldE1vbnRoKCksIG1heERhdGUuZ2V0RGF0ZSgpKSA6IG51bGxcblxuICAvKiAtLS0tIHRpbWUgY2hhbmdlIGhhbmRsZXJzIC0tLS0gKi9cbiAgY29uc3QgaGFuZGxlSG91ckNoYW5nZSA9IChoOiBudW1iZXIpID0+IHtcbiAgICBzZXRUZW1wSG91cnMoaClcbiAgICBpZiAoc2hvd1RpbWUpIHtcbiAgICAgIGNvbnN0IGQgPSBidWlsZERhdGUodGVtcERhdGUgfHwgbmV3IERhdGUoKSwgaCwgdGVtcE1pbnMsIHRlbXBBbVBtKVxuICAgICAgb25DaGFuZ2U/LihtYWtlRXZlbnQoZm9ybWF0VmFsdWUoZCwgbW9kZSwgZGF0ZUZvcm1hdCksIG5hbWUgfHwgJycsIG1vZGUpKVxuICAgIH1cbiAgfVxuICBjb25zdCBoYW5kbGVNaW5DaGFuZ2UgPSAobTogbnVtYmVyKSA9PiB7XG4gICAgc2V0VGVtcE1pbnMobSlcbiAgICBpZiAoc2hvd1RpbWUpIHtcbiAgICAgIGNvbnN0IGQgPSBidWlsZERhdGUodGVtcERhdGUgfHwgbmV3IERhdGUoKSwgdGVtcEhvdXJzLCBtLCB0ZW1wQW1QbSlcbiAgICAgIG9uQ2hhbmdlPy4obWFrZUV2ZW50KGZvcm1hdFZhbHVlKGQsIG1vZGUsIGRhdGVGb3JtYXQpLCBuYW1lIHx8ICcnLCBtb2RlKSlcbiAgICB9XG4gIH1cbiAgY29uc3QgaGFuZGxlQW1QbUNoYW5nZSA9IChhcDogc3RyaW5nKSA9PiB7XG4gICAgc2V0VGVtcEFtUG0oYXApXG4gICAgaWYgKHNob3dUaW1lKSB7XG4gICAgICBjb25zdCBkID0gYnVpbGREYXRlKHRlbXBEYXRlIHx8IG5ldyBEYXRlKCksIHRlbXBIb3VycywgdGVtcE1pbnMsIGFwKVxuICAgICAgb25DaGFuZ2U/LihtYWtlRXZlbnQoZm9ybWF0VmFsdWUoZCwgbW9kZSwgZGF0ZUZvcm1hdCksIG5hbWUgfHwgJycsIG1vZGUpKVxuICAgIH1cbiAgfVxuXG4gIC8qIC0tLS0geWVhciBwaWNrZXIgLS0tLSAqL1xuICBjb25zdCBvcGVuWWVhclBpY2tlciA9ICgpID0+IHtcbiAgICBzZXRZZWFyUGFnZShNYXRoLmZsb29yKHZpZXdZZWFyIC8gWUVBUlNfUEVSX1BBR0UpICogWUVBUlNfUEVSX1BBR0UpXG4gICAgc2V0U2hvd1llYXJQaWNrZXIodHJ1ZSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVllYXJTZWxlY3QgPSAoeTogbnVtYmVyKSA9PiB7XG4gICAgc2V0Vmlld1llYXIoeSlcbiAgICBzZXRTaG93WWVhclBpY2tlcihmYWxzZSlcbiAgICBjb25zdCBiYXNlID0gdGVtcERhdGUgfHwgbmV3IERhdGUoKVxuICAgIGNvbnN0IG1heEQgPSBkYXlzSW5Nb250aCh5LCB2aWV3TW9udGgpXG4gICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKHksIHZpZXdNb250aCwgTWF0aC5taW4oYmFzZS5nZXREYXRlKCksIG1heEQpKVxuICAgIHNldFRlbXBEYXRlKG5ld0RhdGUpXG4gICAgZmlyZUNoYW5nZShzaG93VGltZSA/IGJ1aWxkRGF0ZShuZXdEYXRlLCB0ZW1wSG91cnMsIHRlbXBNaW5zLCB0ZW1wQW1QbSkgOiBuZXdEYXRlKVxuICB9XG5cbiAgY29uc3QgeWVhclBhZ2VTdGFydCA9IE1hdGguZmxvb3IoeWVhclBhZ2UgLyBZRUFSU19QRVJfUEFHRSkgKiBZRUFSU19QRVJfUEFHRVxuICBjb25zdCB5ZWFycyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IFlFQVJTX1BFUl9QQUdFIH0sIChfLCBpKSA9PiB5ZWFyUGFnZVN0YXJ0ICsgaSlcblxuICAvKiAtLS0tIGNsZWFyIC0tLS0gKi9cbiAgY29uc3QgaGFuZGxlQ2xlYXIgPSAoZTogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBzZXRUZW1wRGF0ZShudWxsKVxuICAgIG9uQ2hhbmdlPy4obWFrZUV2ZW50KG51bGwsIG5hbWUgfHwgJycpKVxuICB9XG5cbiAgLyogLS0tLSBrZXlib2FyZCAtLS0tICovXG4gIGNvbnN0IGhhbmRsZUlucHV0S2V5RG93biA9IChlOiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykgeyBzZXRJc09wZW4oZmFsc2UpOyBzZXRTaG93WWVhclBpY2tlcihmYWxzZSk7IGlucHV0UmVmLmN1cnJlbnQ/LmJsdXIoKSB9XG4gICAgaWYgKGUua2V5ID09PSAnQXJyb3dEb3duJyB8fCBlLmtleSA9PT0gJ0VudGVyJyB8fCBlLmtleSA9PT0gJyAnKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgIHNldElzT3Blbih0cnVlKVxuICAgIH1cbiAgfVxuXG4gIC8qIC0tLS0gbWVyZ2VkIHJlZiAtLS0tICovXG4gIGNvbnN0IG1lcmdlSW5wdXRSZWYgPSBSZWFjdC51c2VDYWxsYmFjaygobm9kZTogSFRNTElucHV0RWxlbWVudCB8IG51bGwpID0+IHtcbiAgICBpbnB1dFJlZi5jdXJyZW50ID0gbm9kZVxuICAgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSByZWYobm9kZSlcbiAgICBlbHNlIGlmIChyZWYpIHJlZi5jdXJyZW50ID0gbm9kZVxuICB9LCBbcmVmXSlcblxuICAvKiAtLS0tIHJlbmRlciAtLS0tICovXG4gIGNvbnN0IHBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXJUZXh0XG4gICAgPz8gKG1vZGUgPT09ICd0aW1lJyA/ICdTZWxlY3QgdGltZScgOiBtb2RlID09PSAnZGF0ZXRpbWUnID8gJ1NlbGVjdCBkYXRlICYgdGltZScgOiAnU2VsZWN0IGRhdGUnKVxuXG4gIGNvbnN0IHBvcG92ZXIgPSAoXG4gICAgPGRpdlxuICAgICAgcmVmPXtwb3BvdmVyUmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ2RhdGVwaWNrZXItcG9wb3ZlciBjYXJkIGJvcmRlciBzaGFkb3ctc20nLFxuICAgICAgICBtb2RlID09PSAnZGF0ZXRpbWUnICYmICdkYXRlcGlja2VyLXBvcG92ZXItLXdpZGUnXG4gICAgICApfVxuICAgICAgc3R5bGU9e3BvcG92ZXJTdHlsZX1cbiAgICA+XG4gICAgICB7LyogPT09PT09PT09PT09PT0gWUVBUiBQSUNLRVIgPT09PT09PT09PT09PT0gKi99XG4gICAgICB7c2hvd1llYXJQaWNrZXIgJiYgc2hvd0NhbGVuZGFyICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXllYXItcGlja2VyIHAtM1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0yXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBib3JkZXItMCBweC0xXCIgb25DbGljaz17KCkgPT4gc2V0WWVhclBhZ2UoeWVhclBhZ2UgLSBZRUFSU19QRVJfUEFHRSl9IGFyaWEtbGFiZWw9XCJQcmV2aW91cyB5ZWFyc1wiPiZsc2FxdW87PC9idXR0b24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmdy1zZW1pYm9sZCBzbWFsbFwiPnt5ZWFyUGFnZVN0YXJ0fSDigJMge3llYXJQYWdlU3RhcnQgKyBZRUFSU19QRVJfUEFHRSAtIDF9PC9zcGFuPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3NOYW1lPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1zZWNvbmRhcnkgYm9yZGVyLTAgcHgtMVwiIG9uQ2xpY2s9eygpID0+IHNldFllYXJQYWdlKHllYXJQYWdlICsgWUVBUlNfUEVSX1BBR0UpfSBhcmlhLWxhYmVsPVwiTmV4dCB5ZWFyc1wiPiZyc2FxdW87PC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXllYXItZ3JpZFwiPlxuICAgICAgICAgICAge3llYXJzLm1hcCgoeSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBpc0N1cnJlbnRZZWFyID0geSA9PT0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpXG4gICAgICAgICAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0ZW1wRGF0ZSAmJiB5ID09PSB0ZW1wRGF0ZS5nZXRGdWxsWWVhcigpXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAga2V5PXt5fVxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAnZGF0ZXBpY2tlci15ZWFyLWNlbGwgYnRuIGJ0bi1zbScsXG4gICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQgJiYgJ2J0bi1wcmltYXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgIWlzU2VsZWN0ZWQgJiYgaXNDdXJyZW50WWVhciAmJiAnYnRuLW91dGxpbmUtcHJpbWFyeScsXG4gICAgICAgICAgICAgICAgICAgICFpc1NlbGVjdGVkICYmICFpc0N1cnJlbnRZZWFyICYmICdidG4tbGlnaHQgYm9yZGVyJ1xuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVllYXJTZWxlY3QoeSl9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3l9XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIHsvKiA9PT09PT09PT09PT09PSBDQUxFTkRBUiArIFRJTUUgPT09PT09PT09PT09PT0gKi99XG4gICAgICB7IXNob3dZZWFyUGlja2VyICYmIChcbiAgICAgICAgPD5cblxuICAgICAgICAgIHsvKiAtLS0tIENBTEVOREFSICsgVElNRSBDT05UQUlORVIgLS0tLSAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y24oJ2QtZmxleCcsIG1vZGUgPT09ICdkYXRldGltZScgPyAnZmxleC1yb3cnIDogJ2ZsZXgtY29sdW1uJyl9PlxuXG4gICAgICAgICAgey8qIC0tLS0gQ0FMRU5EQVIgLS0tLSAqL31cbiAgICAgICAgICB7c2hvd0NhbGVuZGFyICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci1jYWxlbmRhciBwLTJcIj5cbiAgICAgICAgICAgICAgey8qIE1vbnRoIC8gWWVhciBoZWFkZXIgKi99XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3NOYW1lPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1zZWNvbmRhcnkgYm9yZGVyLTAgcHgtMVwiIG9uQ2xpY2s9e2hhbmRsZVByZXZNb250aH0gYXJpYS1sYWJlbD1cIlByZXZpb3VzIG1vbnRoXCI+JmxzYXF1bzs8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZ3LXNlbWlib2xkIHNtYWxsXCI+e01PTlRIU1t2aWV3TW9udGhdfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ0biBidG4tc20gYnRuLWxpbmsgdGV4dC1kZWNvcmF0aW9uLW5vbmUgdGV4dC1wcmltYXJ5IGZ3LXNlbWlib2xkIHNtYWxsIHAtMFwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29wZW5ZZWFyUGlja2VyfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2hvb3NlIHllYXJcIlxuICAgICAgICAgICAgICAgICAgPnt2aWV3WWVhcn08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBib3JkZXItMCBweC0xXCIgb25DbGljaz17aGFuZGxlTmV4dE1vbnRofSBhcmlhLWxhYmVsPVwiTmV4dCBtb250aFwiPiZyc2FxdW87PC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIHsvKiBEYXktb2Ytd2VlayBoZWFkZXJzICovfVxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItZGF5cy1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICB7REFZU19PRl9XRUVLLm1hcChkID0+IChcbiAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtkfSBjbGFzc05hbWU9XCJkYXRlcGlja2VyLWRheS1sYWJlbFwiPntkfTwvZGl2PlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICB7LyogRGF5IGdyaWQgKi99XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci1kYXlzLWdyaWRcIj5cbiAgICAgICAgICAgICAgICB7Z3JpZC5tYXAoKGNlbGwsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGlzVG9kYXkgPSBpc1NhbWVEYXkoY2VsbC5kYXRlLCB0b2RheSlcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0ZW1wRGF0ZSAmJiBpc1NhbWVEYXkoY2VsbC5kYXRlLCB0ZW1wRGF0ZSlcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGluUmFuZ2UgPSBpc0RhdGVJblJhbmdlKGNlbGwuZGF0ZSwgbWluRHQsIG1heER0KVxuICAgICAgICAgICAgICAgICAgY29uc3QgaXNEaXNhYmxlZERheSA9IGNlbGwuaXNPdXRzaWRlIHx8ICFpblJhbmdlXG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e2l9XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWREYXl9XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICdkYXRlcGlja2VyLWRheScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RvZGF5ICYmICdkYXRlcGlja2VyLWRheS0tdG9kYXknLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZCAmJiAnZGF0ZXBpY2tlci1kYXktLXNlbGVjdGVkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuaXNPdXRzaWRlICYmICdkYXRlcGlja2VyLWRheS0tb3V0c2lkZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAhaW5SYW5nZSAmJiAnZGF0ZXBpY2tlci1kYXktLWRpc2FibGVkJ1xuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gY29tbWl0RGF0ZU9ubHkoY2VsbC5kYXRlKX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17Y2VsbC5pc091dHNpZGUgPyAtMSA6IDB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7Y2VsbC5kYXl9XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICB7LyogLS0tLSBESVZJREVSIChkYXRldGltZSBtb2RlKSAtLS0tICovfVxuICAgICAgICAgIHttb2RlID09PSAnZGF0ZXRpbWUnICYmIDxkaXYgY2xhc3NOYW1lPVwidnIgbXgtMSBteS0yXCIgLz59XG5cbiAgICAgICAgICB7LyogLS0tLSBUSU1FIC0tLS0gKi99XG4gICAgICAgICAge3Nob3dUaW1lICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci10aW1lIHAtMiBkLWZsZXggZmxleC1jb2x1bW5cIiBzdHlsZT17eyBtaW5XaWR0aDogMTgwIH19PlxuICAgICAgICAgICAgICB7bW9kZSA9PT0gJ2RhdGV0aW1lJyAmJiA8ZGl2IGNsYXNzTmFtZT1cInNtYWxsIGZ3LXNlbWlib2xkIHRleHQtbXV0ZWQgdGV4dC1jZW50ZXIgbWItMVwiPlRpbWU8L2Rpdj59XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICB7LyogSG91ciBjb2x1bW4gKi99XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXRpbWUtY29sXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItdGltZS1jb2wtbGFiZWxcIj5Ib3VyPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItdGltZS1jb2wtc2Nyb2xsXCI+XG4gICAgICAgICAgICAgICAgICAgIHtBcnJheS5mcm9tKHsgbGVuZ3RoOiAxMiB9LCAoXywgaSkgPT4gaSArIDEpLm1hcChoID0+IChcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2h9XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oJ2RhdGVwaWNrZXItdGltZS1pdGVtJywgaCA9PT0gdGVtcEhvdXJzICYmICdhY3RpdmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUhvdXJDaGFuZ2UoaCl9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge1N0cmluZyhoKS5wYWRTdGFydCgyLCAnMCcpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImRhdGVwaWNrZXItdGltZS1zZXBhcmF0b3JcIj46PC9zcGFuPlxuICAgICAgICAgICAgICAgIHsvKiBNaW51dGUgY29sdW1uICovfVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci10aW1lLWNvbFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXRpbWUtY29sLWxhYmVsXCI+TWluPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItdGltZS1jb2wtc2Nyb2xsXCI+XG4gICAgICAgICAgICAgICAgICAgIHtNSU5VVEVTLm1hcChtID0+IChcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e219XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oJ2RhdGVwaWNrZXItdGltZS1pdGVtJywgbSA9PT0gdGVtcE1pbnMgJiYgJ2FjdGl2ZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlTWluQ2hhbmdlKG0pfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtTdHJpbmcobSkucGFkU3RhcnQoMiwgJzAnKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB7LyogQU0vUE0gY29sdW1uICovfVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci10aW1lLWNvbFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXRpbWUtY29sLWxhYmVsXCI+Jm5ic3A7PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMSBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIHtbJ0FNJywgJ1BNJ10ubWFwKGFwID0+IChcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2FwfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKCdkYXRlcGlja2VyLXRpbWUtaXRlbScsICdkYXRlcGlja2VyLXRpbWUtaXRlbS0tYW1wbScsIHRlbXBBbVBtID09PSBhcCAmJiAnYWN0aXZlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVBbVBtQ2hhbmdlKGFwKX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7YXB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXdyYXBwZXIgcG9zaXRpb24tcmVsYXRpdmUgZC1pbmxpbmUtYmxvY2sgdy0xMDBcIiBzdHlsZT17eyBtaW5XaWR0aDogMCB9fT5cbiAgICAgIHsvKiAtLS0tIElucHV0IC0tLS0gKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHJlZj17bWVyZ2VJbnB1dFJlZn1cbiAgICAgICAgICBpZD17aWR9XG4gICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgcmVhZE9ubHlcbiAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICdmb3JtLWNvbnRyb2wnLFxuICAgICAgICAgICAgc2l6ZSA9PT0gJ3NtJyAmJiAnZm9ybS1jb250cm9sLXNtJyxcbiAgICAgICAgICAgIHNpemUgPT09ICdsZycgJiYgJ2Zvcm0tY29udHJvbC1sZycsXG4gICAgICAgICAgICAncGUtNScsXG4gICAgICAgICAgICBjbGFzc05hbWVcbiAgICAgICAgICApfVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICB2YWx1ZT17Zm9ybWF0VmFsdWUocmVzb2x2ZWRWYWx1ZSwgbW9kZSwgZGF0ZUZvcm1hdCl9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gIWRpc2FibGVkICYmIHNldElzT3BlbighaXNPcGVuKX1cbiAgICAgICAgICBvbktleURvd249e2hhbmRsZUlucHV0S2V5RG93bn1cbiAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwiZGlhbG9nXCJcbiAgICAgICAgICBhcmlhLWV4cGFuZGVkPXtpc09wZW59XG4gICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIC8+XG4gICAgICAgIHsvKiBjbGVhciBidXR0b24gKi99XG4gICAgICAgIHtpc0NsZWFyYWJsZSAmJiByZXNvbHZlZFZhbHVlICYmICFkaXNhYmxlZCAmJiAoXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJidG4gYnRuLXNtIGJ0bi1saW5rIHBvc2l0aW9uLWFic29sdXRlIHRvcC01MCBlbmQtMCB0cmFuc2xhdGUtbWlkZGxlLXkgcGUtMiB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICBzdHlsZT17eyB6SW5kZXg6IDIgfX1cbiAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsZWFyfVxuICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICAmdGltZXM7XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIC0tLS0gUG9ydGFsIHRoZSBwb3BvdmVyIHRvIGRvY3VtZW50LmJvZHkgLS0tLSAqL31cbiAgICAgIHtpc09wZW4gJiYgIWRpc2FibGVkICYmIHBvcnRhbFJlZi5jdXJyZW50ICYmIGNyZWF0ZVBvcnRhbChwb3BvdmVyLCBwb3J0YWxSZWYuY3VycmVudCl9XG4gICAgPC9kaXY+XG4gIClcbn0pXG5cbkRhdGVQaWNrZXIuZGlzcGxheU5hbWUgPSAnRGF0ZVBpY2tlcidcblxuZXhwb3J0IHsgRGF0ZVBpY2tlciB9XG5leHBvcnQgZGVmYXVsdCBEYXRlUGlja2VyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ import {a}from'./chunk-RR7TBRGI.js';import*as i from'react';import {createPortal}from'react-dom';import {jsxs,jsx,Fragment}from'react/jsx-runtime';var xe=["Su","Mo","Tu","We","Th","Fr","Sa"],Te=["January","February","March","April","May","June","July","August","September","October","November","December"],Ye=Array.from({length:60},(a,t)=>t),b=12,z=(a,t)=>new Date(a,t+1,0).getDate(),ae=(a,t)=>a!==null&&t!==null&&a.getFullYear()===t.getFullYear()&&a.getMonth()===t.getMonth()&&a.getDate()===t.getDate(),Ae=(a,t,u)=>!(t&&a<new Date(t.getFullYear(),t.getMonth(),t.getDate())||u&&a>new Date(u.getFullYear(),u.getMonth(),u.getDate())),He=(a,t)=>{let u=new Date(a,t,1).getDay(),m=z(a,t),p=[],g=z(a,t-1);for(let c=u-1;c>=0;c--){let v=g-c;p.push({day:v,date:new Date(a,t-1,v),isOutside:true});}for(let c=1;c<=m;c++)p.push({day:c,date:new Date(a,t,c),isOutside:false});let D=42-p.length;for(let c=1;c<=D;c++)p.push({day:c,date:new Date(a,t+1,c),isOutside:true});return p},V=(a,t,u)=>{if(!a||isNaN(a.getTime()))return "";let m=a.getFullYear(),p=String(a.getMonth()+1).padStart(2,"0"),g=String(a.getDate()).padStart(2,"0"),D=a.getHours(),c=String(a.getMinutes()).padStart(2,"0"),v=D>=12?"PM":"AM";D=D%12||12;let y=String(D).padStart(2,"0");if(u)return u.replace("yyyy",String(m)).replace("MM",p).replace("dd",g).replace("hh",y).replace("mm",c).replace("aa",v);switch(t){case "time":return `${y}:${c} ${v}`;case "datetime":return `${m}-${p}-${g} ${y}:${c} ${v}`;default:return `${m}-${p}-${g}`}},F=(a,t,u="date")=>({target:{value:a,name:t,type:u},preventDefault:()=>{},stopPropagation:()=>{},nativeEvent:null}),Ie={date:300,time:300,datetime:400,year:250},Oe={date:280,time:220,datetime:440,year:280},Fe=a=>{if(!a)return document.documentElement;let t=a.parentElement;for(;t;){let u=window.getComputedStyle(t),m=u.overflowY||u.overflow;if(m==="auto"||m==="scroll")return t;t=t.parentElement;}return document.documentElement},Le=(a,t,u)=>{if(!a)return {};let m=a.getBoundingClientRect(),p=t||300,g=window.innerHeight-m.bottom,D=m.top,c=g<p&&D>g,v=window.innerWidth<576?220:260,y=u||v;return {position:"fixed",top:c?Math.max(4,m.top-p-4):m.bottom+4,left:Math.max(4,Math.min(m.left,window.innerWidth-y-4)),minWidth:v,width:"max-content",maxWidth:window.innerWidth-8,zIndex:1070}},re=i.forwardRef(({className:a$1,mode:t="date",selected:u,value:m,onChange:p,dateFormat:g,placeholderText:D,size:c,isClearable:v=false,disabled:y=false,minDate:q,maxDate:K,timeIntervals:We=5,timezone:_e="Kampala",id:se,name:N,...ie},L)=>{let le=e=>{if(!e)return null;if(e instanceof Date)return isNaN(e.getTime())?null:e;if(typeof e=="string"||typeof e=="number"){let n=new Date(e);if(!isNaN(n.getTime()))return n;if(typeof e=="string"){let d=e.match(/^(\d{1,2}):(\d{2})\s*(AM|PM)$/i);if(d){let o=parseInt(d[1],10),M=parseInt(d[2],10),_=d[3].toUpperCase();o===12&&_==="AM"&&(o=0),o!==12&&_==="PM"&&(o+=12);let X=new Date;return new Date(X.getFullYear(),X.getMonth(),X.getDate(),o,M,0,0)}let s=e.match(/^(\d{4})-(\d{2})-(\d{2})\s+(\d{1,2}):(\d{2})\s*(AM|PM)$/i);if(s){let o=parseInt(s[4],10),M=parseInt(s[5],10),_=s[6].toUpperCase();return o===12&&_==="AM"&&(o=0),o!==12&&_==="PM"&&(o+=12),new Date(parseInt(s[1]),parseInt(s[2])-1,parseInt(s[3]),o,M,0,0)}}return null}return null},l=i.useMemo(()=>le(u??m),[u instanceof Date?u.getTime():u,m instanceof Date?m.getTime():m]),Z=t==="date"||t==="datetime",S=t==="time"||t==="datetime",[P,H]=i.useState(false),[E,U]=i.useState(()=>l?l.getFullYear():new Date().getFullYear()),[w,J]=i.useState(()=>l?l.getMonth():new Date().getMonth()),[h,R]=i.useState(l),[C,ee]=i.useState(()=>l&&l.getHours()%12||12),[x,te]=i.useState(()=>l?l.getMinutes():0),[T,ne]=i.useState(()=>l&&l.getHours()>=12?"PM":"AM"),[$,I]=i.useState(false),[j,B]=i.useState(()=>Math.floor((l?l.getFullYear():new Date().getFullYear())/b)*b),[oe,ce]=i.useState({}),O=i.useRef(null),Y=i.useRef(null),G=i.useRef(null);i.useEffect(()=>{let e=document.createElement("div");return e.className="datepicker-portal-root",document.body.appendChild(e),G.current=e,()=>{e.parentNode&&document.body.removeChild(e),G.current=null;}},[]),i.useEffect(()=>{l&&!isNaN(l.getTime())?(R(l),U(l.getFullYear()),J(l.getMonth()),ee(l.getHours()%12||12),te(l.getMinutes()),ne(l.getHours()>=12?"PM":"AM"),B(Math.floor(l.getFullYear()/b)*b)):R(null);},[l]),i.useEffect(()=>{if(!P)return;let e=()=>Y.current?Y.current.getBoundingClientRect().height:Ie[$?"year":t]||300,n=()=>Y.current?Y.current.getBoundingClientRect().width:Oe[$?"year":t]||280,d=Fe(O.current),s=()=>{requestAnimationFrame(()=>{ce(Le(O.current,e(),n()));});};return s(),d.addEventListener("scroll",s,{passive:true}),window.addEventListener("resize",s),()=>{d.removeEventListener("scroll",s),window.removeEventListener("resize",s);}},[P,t,$]),i.useEffect(()=>{if(!P)return;let e=n=>{Y.current&&!Y.current.contains(n.target)&&O.current&&!O.current.contains(n.target)&&(H(false),I(false));};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[P]);let A=(e,n,d,s)=>{let o=new Date(e),M=n%12;return s==="PM"&&(M+=12),M===12&&s==="AM"&&(M=0),o.setHours(M,d,0,0),o},W=e=>{if(!e||isNaN(e.getTime()))return;let n=V(e,t,g);p?.(F(n,N||"",t));},ue=e=>{if(!e){p?.(F(null,N||"",t)),H(false),I(false);return}W(e),t==="date"&&(H(false),I(false));},de=e=>{if(R(e),t==="date")ue(e);else if(t==="datetime"){let n=A(e,C,x,T);W(n);}},me=He(E,w),pe=()=>{let e=E,n=w;w===0?(e=E-1,n=11):n=w-1,U(e),J(n);let d=h||new Date,s=z(e,n),o=new Date(e,n,Math.min(d.getDate(),s));R(o),W(S?A(o,C,x,T):o);},fe=()=>{let e=E,n=w;w===11?(e=E+1,n=0):n=w+1,U(e),J(n);let d=h||new Date,s=z(e,n),o=new Date(e,n,Math.min(d.getDate(),s));R(o),W(S?A(o,C,x,T):o);},ge=new Date,be=q?new Date(q.getFullYear(),q.getMonth(),q.getDate()):null,ve=K?new Date(K.getFullYear(),K.getMonth(),K.getDate()):null,De=e=>{if(ee(e),S){let n=A(h||new Date,e,x,T);p?.(F(V(n,t,g),N||"",t));}},ye=e=>{if(te(e),S){let n=A(h||new Date,C,e,T);p?.(F(V(n,t,g),N||"",t));}},we=e=>{if(ne(e),S){let n=A(h||new Date,C,x,e);p?.(F(V(n,t,g),N||"",t));}},he=()=>{B(Math.floor(E/b)*b),I(true);},Me=e=>{U(e),I(false);let n=h||new Date,d=z(e,w),s=new Date(e,w,Math.min(n.getDate(),d));R(s),W(S?A(s,C,x,T):s);},Q=Math.floor(j/b)*b,ke=Array.from({length:b},(e,n)=>Q+n),Ne=e=>{e.stopPropagation(),R(null),p?.(F(null,N||""));},Se=e=>{e.key==="Escape"&&(H(false),I(false),O.current?.blur()),(e.key==="ArrowDown"||e.key==="Enter"||e.key===" ")&&(e.preventDefault(),H(true));},Pe=i.useCallback(e=>{O.current=e,typeof L=="function"?L(e):L&&(L.current=e);},[L]),Ee=D??(t==="time"?"Select time":t==="datetime"?"Select date & time":"Select date"),Re=jsxs("div",{ref:Y,className:a("datepicker-popover card border shadow-sm",t==="datetime"&&"datepicker-popover--wide"),style:oe,children:[$&&Z&&jsxs("div",{className:"datepicker-year-picker p-3",children:[jsxs("div",{className:"d-flex align-items-center justify-content-between mb-2",children:[jsx("button",{type:"button",className:"btn btn-sm btn-outline-secondary border-0 px-1",onClick:()=>B(j-b),"aria-label":"Previous years",children:"\u2039"}),jsxs("span",{className:"fw-semibold small",children:[Q," \u2013 ",Q+b-1]}),jsx("button",{type:"button",className:"btn btn-sm btn-outline-secondary border-0 px-1",onClick:()=>B(j+b),"aria-label":"Next years",children:"\u203A"})]}),jsx("div",{className:"datepicker-year-grid",children:ke.map(e=>{let n=e===new Date().getFullYear(),d=h&&e===h.getFullYear();return jsx("button",{type:"button",className:a("datepicker-year-cell btn btn-sm",d&&"btn-primary",!d&&n&&"btn-outline-primary",!d&&!n&&"btn-light border"),onClick:()=>Me(e),children:e},e)})})]}),!$&&jsx(Fragment,{children:jsxs("div",{className:a("d-flex",t==="datetime"?"flex-row":"flex-column"),children:[Z&&jsxs("div",{className:"datepicker-calendar p-2",children:[jsxs("div",{className:"d-flex align-items-center justify-content-between mb-2",children:[jsx("button",{type:"button",className:"btn btn-sm btn-outline-secondary border-0 px-1",onClick:pe,"aria-label":"Previous month",children:"\u2039"}),jsxs("div",{className:"d-flex align-items-center gap-1",children:[jsx("span",{className:"fw-semibold small",children:Te[w]}),jsx("button",{type:"button",className:"btn btn-sm btn-link text-decoration-none text-primary fw-semibold small p-0",onClick:he,"aria-label":"Choose year",children:E})]}),jsx("button",{type:"button",className:"btn btn-sm btn-outline-secondary border-0 px-1",onClick:fe,"aria-label":"Next month",children:"\u203A"})]}),jsx("div",{className:"datepicker-days-header",children:xe.map(e=>jsx("div",{className:"datepicker-day-label",children:e},e))}),jsx("div",{className:"datepicker-days-grid",children:me.map((e,n)=>{let d=ae(e.date,ge),s=h&&ae(e.date,h),o=Ae(e.date,be,ve),M=e.isOutside||!o;return jsx("button",{type:"button",disabled:M,className:a("datepicker-day",d&&"datepicker-day--today",s&&"datepicker-day--selected",e.isOutside&&"datepicker-day--outside",!o&&"datepicker-day--disabled"),onClick:()=>de(e.date),tabIndex:e.isOutside?-1:0,children:e.day},n)})})]}),t==="datetime"&&jsx("div",{className:"vr mx-1 my-2"}),S&&jsxs("div",{className:"datepicker-time p-2 d-flex flex-column",style:{minWidth:180},children:[t==="datetime"&&jsx("div",{className:"small fw-semibold text-muted text-center mb-1",children:"Time"}),jsxs("div",{className:"d-flex justify-content-center gap-2",children:[jsxs("div",{className:"datepicker-time-col",children:[jsx("div",{className:"datepicker-time-col-label",children:"Hour"}),jsx("div",{className:"datepicker-time-col-scroll",children:Array.from({length:12},(e,n)=>n+1).map(e=>jsx("button",{type:"button",className:a("datepicker-time-item",e===C&&"active"),onClick:()=>De(e),children:String(e).padStart(2,"0")},e))})]}),jsx("span",{className:"datepicker-time-separator",children:":"}),jsxs("div",{className:"datepicker-time-col",children:[jsx("div",{className:"datepicker-time-col-label",children:"Min"}),jsx("div",{className:"datepicker-time-col-scroll",children:Ye.map(e=>jsx("button",{type:"button",className:a("datepicker-time-item",e===x&&"active"),onClick:()=>ye(e),children:String(e).padStart(2,"0")},e))})]}),jsxs("div",{className:"datepicker-time-col",children:[jsx("div",{className:"datepicker-time-col-label",children:"\xA0"}),jsx("div",{className:"d-flex flex-column gap-1 mt-1",children:["AM","PM"].map(e=>jsx("button",{type:"button",className:a("datepicker-time-item","datepicker-time-item--ampm",T===e&&"active"),onClick:()=>we(e),children:e},e))})]})]})]})]})})]});return jsxs("div",{className:"datepicker-wrapper position-relative d-inline-block w-100",style:{minWidth:0},children:[jsxs("div",{className:"position-relative",children:[jsx("input",{ref:Pe,id:se,name:N,type:"text",readOnly:true,disabled:y,className:a("form-control",c==="sm"&&"form-control-sm",c==="lg"&&"form-control-lg","pe-5",a$1),placeholder:Ee,value:V(l,t,g),onClick:()=>!y&&H(!P),onKeyDown:Se,"aria-haspopup":"dialog","aria-expanded":P,autoComplete:"off",...ie}),v&&l&&!y&&jsx("button",{type:"button",className:"btn btn-sm btn-link position-absolute top-50 end-0 translate-middle-y pe-2 text-secondary",style:{zIndex:2},onClick:Ne,tabIndex:-1,"aria-label":"Clear",children:"\xD7"})]}),P&&!y&&G.current&&createPortal(Re,G.current)]})});re.displayName="DatePicker";var qe=re;export{re as a,qe as b};//# sourceMappingURL=chunk-WLMCWTO6.js.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb25lbnRzL0RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbIkRBWVNfT0ZfV0VFSyIsIk1PTlRIUyIsIk1JTlVURVMiLCJfIiwiaSIsIllFQVJTX1BFUl9QQUdFIiwiZGF5c0luTW9udGgiLCJ5ZWFyIiwibW9udGgiLCJpc1NhbWVEYXkiLCJiIiwiaXNEYXRlSW5SYW5nZSIsImRhdGUiLCJtaW4iLCJtYXgiLCJidWlsZENhbGVuZGFyR3JpZCIsImZpcnN0RGF5IiwidG90YWxEYXlzIiwiY2VsbHMiLCJwcmV2TW9udGhEYXlzIiwiZGF5IiwiZCIsInJlbWFpbmluZyIsImZvcm1hdFZhbHVlIiwibW9kZSIsImZtdCIsInkiLCJNIiwiaCIsIm0iLCJhIiwiaGgiLCJtYWtlRXZlbnQiLCJ2YWx1ZSIsImlucHV0TmFtZSIsInR5cGUiLCJQT1BPVkVSX0dVRVNTIiwiUE9QT1ZFUl9XSURUSF9HVUVTUyIsImdldFNjcm9sbFBhcmVudCIsImVsIiwicGFyZW50Iiwic3R5bGUiLCJvdmVyZmxvd1kiLCJjYWxjUG9wb3ZlclN0eWxlIiwiaW5wdXRFbCIsInBvcG92ZXJIZWlnaHQiLCJwb3BvdmVyV2lkdGgiLCJyZWN0Iiwic3BhY2VCZWxvdyIsInNwYWNlQWJvdmUiLCJwbGFjZUFib3ZlIiwibWluVyIsInciLCJEYXRlUGlja2VyIiwiY2xhc3NOYW1lIiwic2VsZWN0ZWQiLCJvbkNoYW5nZSIsImRhdGVGb3JtYXQiLCJwbGFjZWhvbGRlclRleHQiLCJzaXplIiwiaXNDbGVhcmFibGUiLCJkaXNhYmxlZCIsIm1pbkRhdGUiLCJtYXhEYXRlIiwidGltZUludGVydmFscyIsInRpbWV6b25lIiwiaWQiLCJuYW1lIiwicHJvcHMiLCJyZWYiLCJyZXNvbHZlVmFsdWUiLCJ2IiwidGltZU1hdGNoIiwiYXAiLCJub3ciLCJkdE1hdGNoIiwicmVzb2x2ZWRWYWx1ZSIsInNob3dDYWxlbmRhciIsInNob3dUaW1lIiwiaXNPcGVuIiwic2V0SXNPcGVuIiwidmlld1llYXIiLCJzZXRWaWV3WWVhciIsInZpZXdNb250aCIsInNldFZpZXdNb250aCIsInRlbXBEYXRlIiwic2V0VGVtcERhdGUiLCJ0ZW1wSG91cnMiLCJzZXRUZW1wSG91cnMiLCJ0ZW1wTWlucyIsInNldFRlbXBNaW5zIiwidGVtcEFtUG0iLCJzZXRUZW1wQW1QbSIsInNob3dZZWFyUGlja2VyIiwic2V0U2hvd1llYXJQaWNrZXIiLCJ5ZWFyUGFnZSIsInNldFllYXJQYWdlIiwicG9wb3ZlclN0eWxlIiwic2V0UG9wb3ZlclN0eWxlIiwiaW5wdXRSZWYiLCJwb3BvdmVyUmVmIiwicG9ydGFsUmVmIiwiZ2V0SGVpZ2h0IiwiZ2V0V2lkdGgiLCJzY3JvbGxQYXJlbnQiLCJ1cGRhdGUiLCJoYW5kbGVyIiwiZSIsImJ1aWxkRGF0ZSIsImJhc2UiLCJoMTIiLCJtaW5zIiwiYW1wbSIsImZpcmVDaGFuZ2UiLCJmb3JtYXR0ZWQiLCJjb21taXQiLCJjb21taXREYXRlT25seSIsImdyaWQiLCJoYW5kbGVQcmV2TW9udGgiLCJuZXdZIiwibmV3TSIsIm1heEQiLCJuZXdEYXRlIiwiaGFuZGxlTmV4dE1vbnRoIiwidG9kYXkiLCJtaW5EdCIsIm1heER0IiwiaGFuZGxlSG91ckNoYW5nZSIsImhhbmRsZU1pbkNoYW5nZSIsImhhbmRsZUFtUG1DaGFuZ2UiLCJvcGVuWWVhclBpY2tlciIsImhhbmRsZVllYXJTZWxlY3QiLCJ5ZWFyUGFnZVN0YXJ0IiwieWVhcnMiLCJoYW5kbGVDbGVhciIsImhhbmRsZUlucHV0S2V5RG93biIsIm1lcmdlSW5wdXRSZWYiLCJub2RlIiwicGxhY2Vob2xkZXIiLCJwb3BvdmVyIiwianN4cyIsImNuIiwianN4IiwiaXNDdXJyZW50WWVhciIsImlzU2VsZWN0ZWQiLCJGcmFnbWVudCIsImNlbGwiLCJpc1RvZGF5IiwiaW5SYW5nZSIsImlzRGlzYWJsZWREYXkiLCJjcmVhdGVQb3J0YWwiLCJEYXRlUGlja2VyX2RlZmF1bHQiXSwibWFwcGluZ3MiOiJtSkEwREEsSUFBTUEsRUFBQUEsQ0FBZSxD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LFlBQUEsQ0FBYSxLQUFBLENBQ1osR0FBR1gsR0FDTixDQUFBLENBRUNSLENBQUFBLEVBQWVnQixDQUFBQSxFQUFpQixDQUFDZixHQUNoQ2lGLEdBQUFBLENBQUMsUUFBQSxDQUFBLENBQ0MsSUFBQSxDQUFLLFFBQUEsQ0FDTCxTQUFBLENBQVUsMkZBQUEsQ0FDVixLQUFBLENBQU8sQ0FBRSxPQUFRLENBQUUsQ0FBQSxDQUNuQixPQUFBLENBQVNSLEVBQUFBLENBQ1QsUUFBQSxDQUFVLEVBQUEsQ0FDVixZQUFBLENBQVcsT0FBQSxDQUNaLGdCQUVELENBQUEsQ0FBQSxDQUVKLENBQUEsQ0FHQ3ZELENBQUFBLEVBQVUsQ0FBQ2xCLENBQUFBLEVBQVl3QyxDQUFBQSxDQUFVLE9BQUEsRUFBV2lELFlBQUFBLENBQWFYLEdBQVN0QyxDQUFBQSxDQUFVLE9BQU8sQ0FBQSxDQUFBLENBQ3RGLENBRUosQ0FBQyxFQUVEaEQsRUFBQUEsQ0FBVyxXQUFBLENBQWMsWUFBQSxLQUdsQmtHLEVBQUFBLENBQVFsRyIsImZpbGUiOiJjaHVuay1XTE1DV1RPNi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHsgY24gfSBmcm9tICcuLi9saWIvY24uanMnXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogIFR5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVBpY2tlckNoYW5nZUV2ZW50IHtcbiAgdGFyZ2V0OiB7XG4gICAgdmFsdWU6IHN0cmluZyB8IG51bGxcbiAgICBuYW1lOiBzdHJpbmdcbiAgICB0eXBlOiBzdHJpbmdcbiAgfVxuICBwcmV2ZW50RGVmYXVsdDogKCkgPT4gdm9pZFxuICBzdG9wUHJvcGFnYXRpb246ICgpID0+IHZvaWRcbiAgbmF0aXZlRXZlbnQ6IG51bGxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRlUGlja2VyUHJvcHMge1xuICAvKiogUGlja2VyIG1vZGUgKGRlZmF1bHQgJ2RhdGUnKSAqL1xuICBtb2RlPzogJ2RhdGUnIHwgJ3RpbWUnIHwgJ2RhdGV0aW1lJ1xuICAvKiogQ3VycmVudGx5IHNlbGVjdGVkIERhdGUgKGFsaWFzIGZvciB2YWx1ZSkgKi9cbiAgc2VsZWN0ZWQ/OiBEYXRlIHwgbnVsbFxuICAvKiogQ3VycmVudGx5IHNlbGVjdGVkIERhdGUsIElTTyBzdHJpbmcsIFwiaGg6bW0gQUFcIiB0aW1lIHN0cmluZywgXCJZWVlZLU1NLUREIGhoOm1tIEFBXCIgZGF0ZXRpbWUgc3RyaW5nLCBvciB0aW1lc3RhbXAgKi9cbiAgdmFsdWU/OiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICAvKiogU3ludGhldGljIGV2ZW50IGhhbmRsZXIg4oCUIGUudGFyZ2V0LnZhbHVlIGlzIGEgcHJlLWZvcm1hdHRlZCBzdHJpbmcgKi9cbiAgb25DaGFuZ2U/OiAoZTogRGF0ZVBpY2tlckNoYW5nZUV2ZW50KSA9PiB2b2lkXG4gIC8qKiBEaXNwbGF5IGZvcm1hdCB3aXRoIHRva2VuczogeXl5eSwgTU0sIGRkLCBoaCwgbW0sIGFhICovXG4gIGRhdGVGb3JtYXQ/OiBzdHJpbmdcbiAgLyoqIFBsYWNlaG9sZGVyIHRleHQgd2hlbiBlbXB0eSAqL1xuICBwbGFjZWhvbGRlclRleHQ/OiBzdHJpbmdcbiAgLyoqIEJvb3RzdHJhcCBzaXplIHZhcmlhbnQgKi9cbiAgc2l6ZT86ICdzbScgfCAnbGcnXG4gIC8qKiBTaG93IGEgY2xlYXIgYnV0dG9uIG9uIHRoZSBpbnB1dCAqL1xuICBpc0NsZWFyYWJsZT86IGJvb2xlYW5cbiAgLyoqIERpc2FibGUgdGhlIGlucHV0ICovXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICAvKiogRWFybGllc3Qgc2VsZWN0YWJsZSBkYXRlICovXG4gIG1pbkRhdGU/OiBEYXRlXG4gIC8qKiBMYXRlc3Qgc2VsZWN0YWJsZSBkYXRlICovXG4gIG1heERhdGU/OiBEYXRlXG4gIC8qKiBNaW51dGUgc3RlcCBpbiB0aGUgdGltZSBsaXN0IChkZWZhdWx0IDUpICovXG4gIHRpbWVJbnRlcnZhbHM/OiBudW1iZXJcbiAgLyoqIFRpbWV6b25lIGlkZW50aWZpZXIgKGRlZmF1bHQgJ0thbXBhbGEnKSAqL1xuICB0aW1lem9uZT86IHN0cmluZ1xuICAvKiogQWRkaXRpb25hbCBDU1MgY2xhc3NlcyBvbiB0aGUgaW5wdXQgKi9cbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIC8qKiBJbnB1dCBlbGVtZW50IElEICovXG4gIGlkPzogc3RyaW5nXG4gIC8qKiBJbnB1dCBuYW1lIGF0dHJpYnV0ZSDigJQgc3VyZmFjZXMgYXMgZS50YXJnZXQubmFtZSBpbiBvbkNoYW5nZSAqL1xuICBuYW1lPzogc3RyaW5nXG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogIENvbnN0YW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuY29uc3QgREFZU19PRl9XRUVLID0gWydTdScsICdNbycsICdUdScsICdXZScsICdUaCcsICdGcicsICdTYSddXG5jb25zdCBNT05USFMgPSBbXG4gICdKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJyxcbiAgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJyxcbl1cbmNvbnN0IE1JTlVURVMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiA2MCB9LCAoXywgaSkgPT4gaSlcbmNvbnN0IFlFQVJTX1BFUl9QQUdFID0gMTJcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAgSGVscGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5jb25zdCBkYXlzSW5Nb250aCA9ICh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIpOiBudW1iZXIgPT5cbiAgbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCAwKS5nZXREYXRlKClcblxuY29uc3QgaXNTYW1lRGF5ID0gKGE6IERhdGUgfCBudWxsLCBiOiBEYXRlIHwgbnVsbCk6IGJvb2xlYW4gPT5cbiAgYSAhPT0gbnVsbCAmJiBiICE9PSBudWxsICYmXG4gIGEuZ2V0RnVsbFllYXIoKSA9PT0gYi5nZXRGdWxsWWVhcigpICYmXG4gIGEuZ2V0TW9udGgoKSA9PT0gYi5nZXRNb250aCgpICYmXG4gIGEuZ2V0RGF0ZSgpID09PSBiLmdldERhdGUoKVxuXG5jb25zdCBpc0RhdGVJblJhbmdlID0gKGRhdGU6IERhdGUsIG1pbjogRGF0ZSB8IG51bGwsIG1heDogRGF0ZSB8IG51bGwpOiBib29sZWFuID0+IHtcbiAgaWYgKG1pbiAmJiBkYXRlIDwgbmV3IERhdGUobWluLmdldEZ1bGxZZWFyKCksIG1pbi5nZXRNb250aCgpLCBtaW4uZ2V0RGF0ZSgpKSkgcmV0dXJuIGZhbHNlXG4gIGlmIChtYXggJiYgZGF0ZSA+IG5ldyBEYXRlKG1heC5nZXRGdWxsWWVhcigpLCBtYXguZ2V0TW9udGgoKSwgbWF4LmdldERhdGUoKSkpIHJldHVybiBmYWxzZVxuICByZXR1cm4gdHJ1ZVxufVxuXG5pbnRlcmZhY2UgQ2FsZW5kYXJDZWxsIHtcbiAgZGF5OiBudW1iZXJcbiAgZGF0ZTogRGF0ZVxuICBpc091dHNpZGU6IGJvb2xlYW5cbn1cblxuY29uc3QgYnVpbGRDYWxlbmRhckdyaWQgPSAoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyKTogQ2FsZW5kYXJDZWxsW10gPT4ge1xuICBjb25zdCBmaXJzdERheSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCAxKS5nZXREYXkoKVxuICBjb25zdCB0b3RhbERheXMgPSBkYXlzSW5Nb250aCh5ZWFyLCBtb250aClcbiAgY29uc3QgY2VsbHM6IENhbGVuZGFyQ2VsbFtdID0gW11cblxuICBjb25zdCBwcmV2TW9udGhEYXlzID0gZGF5c0luTW9udGgoeWVhciwgbW9udGggLSAxKVxuICBmb3IgKGxldCBpID0gZmlyc3REYXkgLSAxOyBpID49IDA7IGktLSkge1xuICAgIGNvbnN0IGRheSA9IHByZXZNb250aERheXMgLSBpXG4gICAgY2VsbHMucHVzaCh7IGRheSwgZGF0ZTogbmV3IERhdGUoeWVhciwgbW9udGggLSAxLCBkYXkpLCBpc091dHNpZGU6IHRydWUgfSlcbiAgfVxuXG4gIGZvciAobGV0IGQgPSAxOyBkIDw9IHRvdGFsRGF5czsgZCsrKSB7XG4gICAgY2VsbHMucHVzaCh7IGRheTogZCwgZGF0ZTogbmV3IERhdGUoeWVhciwgbW9udGgsIGQpLCBpc091dHNpZGU6IGZhbHNlIH0pXG4gIH1cblxuICBjb25zdCByZW1haW5pbmcgPSA0MiAtIGNlbGxzLmxlbmd0aFxuICBmb3IgKGxldCBkID0gMTsgZCA8PSByZW1haW5pbmc7IGQrKykge1xuICAgIGNlbGxzLnB1c2goeyBkYXk6IGQsIGRhdGU6IG5ldyBEYXRlKHllYXIsIG1vbnRoICsgMSwgZCksIGlzT3V0c2lkZTogdHJ1ZSB9KVxuICB9XG5cbiAgcmV0dXJuIGNlbGxzXG59XG5cbmNvbnN0IGZvcm1hdFZhbHVlID0gKGRhdGU6IERhdGUgfCBudWxsLCBtb2RlOiBzdHJpbmcsIGZtdD86IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGlmICghZGF0ZSB8fCBpc05hTihkYXRlLmdldFRpbWUoKSkpIHJldHVybiAnJ1xuXG4gIGNvbnN0IHkgPSBkYXRlLmdldEZ1bGxZZWFyKClcbiAgY29uc3QgTSA9IFN0cmluZyhkYXRlLmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpXG4gIGNvbnN0IGQgPSBTdHJpbmcoZGF0ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJylcbiAgbGV0IGggPSBkYXRlLmdldEhvdXJzKClcbiAgY29uc3QgbSA9IFN0cmluZyhkYXRlLmdldE1pbnV0ZXMoKSkucGFkU3RhcnQoMiwgJzAnKVxuICBjb25zdCBhID0gaCA+PSAxMiA/ICdQTScgOiAnQU0nXG4gIGggPSBoICUgMTIgfHwgMTJcbiAgY29uc3QgaGggPSBTdHJpbmcoaCkucGFkU3RhcnQoMiwgJzAnKVxuXG4gIGlmIChmbXQpIHtcbiAgICByZXR1cm4gZm10LnJlcGxhY2UoJ3l5eXknLCBTdHJpbmcoeSkpLnJlcGxhY2UoJ01NJywgTSkucmVwbGFjZSgnZGQnLCBkKS5yZXBsYWNlKCdoaCcsIGhoKS5yZXBsYWNlKCdtbScsIG0pLnJlcGxhY2UoJ2FhJywgYSlcbiAgfVxuXG4gIHN3aXRjaCAobW9kZSkge1xuICAgIGNhc2UgJ3RpbWUnOiAgICAgcmV0dXJuIGAke2hofToke219ICR7YX1gXG4gICAgY2FzZSAnZGF0ZXRpbWUnOiByZXR1cm4gYCR7eX0tJHtNfS0ke2R9ICR7aGh9OiR7bX0gJHthfWBcbiAgICBkZWZhdWx0OiAgICAgICAgIHJldHVybiBgJHt5fS0ke019LSR7ZH1gXG4gIH1cbn1cblxuLyoqXG4gKiBCdWlsZCBhIHN5bnRoZXRpYyBldmVudCBvYmplY3QgbGlrZSBhIG5hdGl2ZSBpbnB1dCdzIG9uQ2hhbmdlLlxuICovXG5jb25zdCBtYWtlRXZlbnQgPSAodmFsdWU6IHN0cmluZyB8IG51bGwsIGlucHV0TmFtZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcgPSAnZGF0ZScpOiBEYXRlUGlja2VyQ2hhbmdlRXZlbnQgPT4gKHtcbiAgdGFyZ2V0OiB7XG4gICAgdmFsdWUsXG4gICAgbmFtZTogaW5wdXROYW1lLFxuICAgIHR5cGUsXG4gIH0sXG4gIHByZXZlbnREZWZhdWx0OiAoKSA9PiB7fSxcbiAgc3RvcFByb3BhZ2F0aW9uOiAoKSA9PiB7fSxcbiAgbmF0aXZlRXZlbnQ6IG51bGwsXG59KVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qICBQb3BvdmVyIHBvc2l0aW9uaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKiBBcHByb3hpbWF0ZSBoZWlnaHRzIOKAlCB1c2VkIGFzIGEgZmlyc3QgZ3Vlc3MgYmVmb3JlIHRoZSByZWFsIERPTSBoZWlnaHQgaXMgbWVhc3VyZWQuICovXG5jb25zdCBQT1BPVkVSX0dVRVNTOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0geyBkYXRlOiAzMDAsIHRpbWU6IDMwMCwgZGF0ZXRpbWU6IDQwMCwgeWVhcjogMjUwIH1cblxuLyoqIEFwcHJveGltYXRlIHdpZHRocyDigJQgdXNlZCBhcyBhIGZpcnN0IGd1ZXNzIGJlZm9yZSB0aGUgcmVhbCBET00gd2lkdGggaXMgbWVhc3VyZWQuICovXG5jb25zdCBQT1BPVkVSX1dJRFRIX0dVRVNTOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0geyBkYXRlOiAyODAsIHRpbWU6IDIyMCwgZGF0ZXRpbWU6IDQ0MCwgeWVhcjogMjgwIH1cblxuLyoqXG4gKiBGaW5kIHRoZSBuZWFyZXN0IHNjcm9sbGFibGUgYW5jZXN0b3IgKGZvciBjYXB0dXJpbmcgc2Nyb2xsIGV2ZW50cyBpbnNpZGVcbiAqIG1vZGFscyAvIHNpZGUgcGFuZWxzIC8gY3VzdG9tIGNvbnRhaW5lcnMpLlxuICovXG5jb25zdCBnZXRTY3JvbGxQYXJlbnQgPSAoZWw6IEhUTUxFbGVtZW50IHwgbnVsbCk6IEhUTUxFbGVtZW50ID0+IHtcbiAgaWYgKCFlbCkgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudFxuICBsZXQgcGFyZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBlbC5wYXJlbnRFbGVtZW50XG4gIHdoaWxlIChwYXJlbnQpIHtcbiAgICBjb25zdCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHBhcmVudClcbiAgICBjb25zdCBvdmVyZmxvd1kgPSBzdHlsZS5vdmVyZmxvd1kgfHwgc3R5bGUub3ZlcmZsb3dcbiAgICBpZiAob3ZlcmZsb3dZID09PSAnYXV0bycgfHwgb3ZlcmZsb3dZID09PSAnc2Nyb2xsJykgcmV0dXJuIHBhcmVudFxuICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnRFbGVtZW50XG4gIH1cbiAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudFxufVxuXG5jb25zdCBjYWxjUG9wb3ZlclN0eWxlID0gKGlucHV0RWw6IEhUTUxFbGVtZW50IHwgbnVsbCwgcG9wb3ZlckhlaWdodDogbnVtYmVyLCBwb3BvdmVyV2lkdGg6IG51bWJlcik6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPT4ge1xuICBpZiAoIWlucHV0RWwpIHJldHVybiB7fVxuICBjb25zdCByZWN0ID0gaW5wdXRFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICBjb25zdCBoID0gcG9wb3ZlckhlaWdodCB8fCAzMDBcblxuICBjb25zdCBzcGFjZUJlbG93ID0gd2luZG93LmlubmVySGVpZ2h0IC0gcmVjdC5ib3R0b21cbiAgY29uc3Qgc3BhY2VBYm92ZSA9IHJlY3QudG9wXG5cbiAgLyogT25seSBmbGlwIGFib3ZlIHdoZW4gYmVsb3cgaXMgdHJ1bHkgdG9vIHRpZ2h0IEFORCBhYm92ZSBvZmZlcnMgbW9yZSByb29tICovXG4gIGNvbnN0IHBsYWNlQWJvdmUgPSBzcGFjZUJlbG93IDwgaCAmJiBzcGFjZUFib3ZlID4gc3BhY2VCZWxvd1xuXG4gIC8qIFJlc3BvbnNpdmU6IHVzZSBzbWFsbGVyIG1pbi13aWR0aCBvbiBtb2JpbGUgdG8gcHJldmVudCBvdmVyZmxvdy5cbiAgICAgVGhlIHBvcG92ZXIgc2l6ZXMgdG8gaXRzIGNvbnRlbnQg4oCUIGl0IG11c3QgTk9UIHN0cmV0Y2ggd2l0aCBhIHdpZGUgaW5wdXQsXG4gICAgIHNvIHJlY3Qud2lkdGggaXMgaW50ZW50aW9uYWxseSBpZ25vcmVkIGZvciBzaXppbmcuICovXG4gIGNvbnN0IG1pblcgPSB3aW5kb3cuaW5uZXJXaWR0aCA8IDU3NiA/IDIyMCA6IDI2MFxuICBjb25zdCB3ID0gcG9wb3ZlcldpZHRoIHx8IG1pbldcblxuICByZXR1cm4ge1xuICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgIHRvcDogcGxhY2VBYm92ZSA/IE1hdGgubWF4KDQsIHJlY3QudG9wIC0gaCAtIDQpIDogcmVjdC5ib3R0b20gKyA0LFxuICAgIGxlZnQ6IE1hdGgubWF4KDQsIE1hdGgubWluKHJlY3QubGVmdCwgd2luZG93LmlubmVyV2lkdGggLSB3IC0gNCkpLFxuICAgIG1pbldpZHRoOiBtaW5XLFxuICAgIHdpZHRoOiAnbWF4LWNvbnRlbnQnLFxuICAgIG1heFdpZHRoOiB3aW5kb3cuaW5uZXJXaWR0aCAtIDgsXG4gICAgekluZGV4OiAxMDcwLFxuICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogIERhdGVQaWNrZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBDdXN0b20gQm9vdHN0cmFwLXN0eWxlZCBkYXRlIC8gdGltZSAvIGRhdGV0aW1lIHBpY2tlci4gWmVybyBkZXBlbmRlbmNpZXMuXG4gKlxuICogKipJbXBvcnRhbnQ6KiogVGhlIGFjY29tcGFueWluZyBDU1MgKiptdXN0KiogYmUgaW1wb3J0ZWQgZm9yIHRoZSBwaWNrZXIgdG8gcmVuZGVyIGNvcnJlY3RseTpcbiAqIGBgYGpzXG4gKiBpbXBvcnQgJ3JlYWN0LWJvb3RzdHJhcC1wbHVnaW5zL2Nzcy9wbHVnaW5zLmNzcydcbiAqIGBgYFxuICovXG5jb25zdCBEYXRlUGlja2VyID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MSW5wdXRFbGVtZW50LCBEYXRlUGlja2VyUHJvcHM+KCh7XG4gIGNsYXNzTmFtZSxcbiAgbW9kZSA9ICdkYXRlJyxcbiAgc2VsZWN0ZWQsXG4gIHZhbHVlLFxuICBvbkNoYW5nZSxcbiAgZGF0ZUZvcm1hdCxcbiAgcGxhY2Vob2xkZXJUZXh0LFxuICBzaXplLFxuICBpc0NsZWFyYWJsZSA9IGZhbHNlLFxuICBkaXNhYmxlZCA9IGZhbHNlLFxuICBtaW5EYXRlLFxuICBtYXhEYXRlLFxuICB0aW1lSW50ZXJ2YWxzID0gNSxcbiAgdGltZXpvbmUgPSAnS2FtcGFsYScsXG4gIGlkLFxuICBuYW1lLFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIC8qIC0tLS0gZGVyaXZlZCAtLS0tICovXG4gIGNvbnN0IHJlc29sdmVWYWx1ZSA9ICh2OiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCk6IERhdGUgfCBudWxsID0+IHtcbiAgICBpZiAoIXYpIHJldHVybiBudWxsXG4gICAgaWYgKHYgaW5zdGFuY2VvZiBEYXRlKSByZXR1cm4gaXNOYU4odi5nZXRUaW1lKCkpID8gbnVsbCA6IHZcbiAgICBpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2ID09PSAnbnVtYmVyJykge1xuICAgICAgLy8gU3RhbmRhcmQgRGF0ZSBwYXJzaW5nICh3b3JrcyBmb3IgSVNPIDg2MDEsIFwiWVlZWS1NTS1ERFwiLCBldGMuKVxuICAgICAgY29uc3QgZCA9IG5ldyBEYXRlKHYpXG4gICAgICBpZiAoIWlzTmFOKGQuZ2V0VGltZSgpKSkgcmV0dXJuIGRcblxuICAgICAgLy8gSGFuZGxlIHRpbWUtb25seSBzdHJpbmdzIGZyb20gZm9ybWF0VmFsdWU6IFwiaGg6bW0gQUFcIlxuICAgICAgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCB0aW1lTWF0Y2ggPSB2Lm1hdGNoKC9eKFxcZHsxLDJ9KTooXFxkezJ9KVxccyooQU18UE0pJC9pKVxuICAgICAgICBpZiAodGltZU1hdGNoKSB7XG4gICAgICAgICAgbGV0IGggPSBwYXJzZUludCh0aW1lTWF0Y2hbMV0sIDEwKVxuICAgICAgICAgIGNvbnN0IG0gPSBwYXJzZUludCh0aW1lTWF0Y2hbMl0sIDEwKVxuICAgICAgICAgIGNvbnN0IGFwID0gdGltZU1hdGNoWzNdLnRvVXBwZXJDYXNlKClcbiAgICAgICAgICBpZiAoaCA9PT0gMTIgJiYgYXAgPT09ICdBTScpIGggPSAwXG4gICAgICAgICAgaWYgKGggIT09IDEyICYmIGFwID09PSAnUE0nKSBoICs9IDEyXG4gICAgICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKVxuICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShub3cuZ2V0RnVsbFllYXIoKSwgbm93LmdldE1vbnRoKCksIG5vdy5nZXREYXRlKCksIGgsIG0sIDAsIDApXG4gICAgICAgIH1cblxuICAgICAgICAvLyBIYW5kbGUgZGF0ZXRpbWUgc3RyaW5ncyBmcm9tIGZvcm1hdFZhbHVlOiBcIllZWVktTU0tREQgaGg6bW0gQUFcIlxuICAgICAgICBjb25zdCBkdE1hdGNoID0gdi5tYXRjaCgvXihcXGR7NH0pLShcXGR7Mn0pLShcXGR7Mn0pXFxzKyhcXGR7MSwyfSk6KFxcZHsyfSlcXHMqKEFNfFBNKSQvaSlcbiAgICAgICAgaWYgKGR0TWF0Y2gpIHtcbiAgICAgICAgICBsZXQgaCA9IHBhcnNlSW50KGR0TWF0Y2hbNF0sIDEwKVxuICAgICAgICAgIGNvbnN0IG0gPSBwYXJzZUludChkdE1hdGNoWzVdLCAxMClcbiAgICAgICAgICBjb25zdCBhcCA9IGR0TWF0Y2hbNl0udG9VcHBlckNhc2UoKVxuICAgICAgICAgIGlmIChoID09PSAxMiAmJiBhcCA9PT0gJ0FNJykgaCA9IDBcbiAgICAgICAgICBpZiAoaCAhPT0gMTIgJiYgYXAgPT09ICdQTScpIGggKz0gMTJcbiAgICAgICAgICByZXR1cm4gbmV3IERhdGUocGFyc2VJbnQoZHRNYXRjaFsxXSksIHBhcnNlSW50KGR0TWF0Y2hbMl0pIC0gMSwgcGFyc2VJbnQoZHRNYXRjaFszXSksIGgsIG0sIDAsIDApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgcmVzb2x2ZWRWYWx1ZSA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gcmVzb2x2ZVZhbHVlKHNlbGVjdGVkID8/IHZhbHVlKSxcbiAgICBbXG4gICAgICBzZWxlY3RlZCBpbnN0YW5jZW9mIERhdGUgPyBzZWxlY3RlZC5nZXRUaW1lKCkgOiBzZWxlY3RlZCxcbiAgICAgIHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlLmdldFRpbWUoKSA6IHZhbHVlLFxuICAgIF0sXG4gIClcbiAgY29uc3Qgc2hvd0NhbGVuZGFyID0gbW9kZSA9PT0gJ2RhdGUnIHx8IG1vZGUgPT09ICdkYXRldGltZSdcbiAgY29uc3Qgc2hvd1RpbWUgPSBtb2RlID09PSAndGltZScgfHwgbW9kZSA9PT0gJ2RhdGV0aW1lJ1xuXG4gIC8qIC0tLS0gaW50ZXJuYWwgc3RhdGUgLS0tLSAqL1xuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFt2aWV3WWVhciwgc2V0Vmlld1llYXJdID0gUmVhY3QudXNlU3RhdGUoKCkgPT5cbiAgICByZXNvbHZlZFZhbHVlID8gcmVzb2x2ZWRWYWx1ZS5nZXRGdWxsWWVhcigpIDogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpKVxuICBjb25zdCBbdmlld01vbnRoLCBzZXRWaWV3TW9udGhdID0gUmVhY3QudXNlU3RhdGUoKCkgPT5cbiAgICByZXNvbHZlZFZhbHVlID8gcmVzb2x2ZWRWYWx1ZS5nZXRNb250aCgpIDogbmV3IERhdGUoKS5nZXRNb250aCgpKVxuICBjb25zdCBbdGVtcERhdGUsIHNldFRlbXBEYXRlXSA9IFJlYWN0LnVzZVN0YXRlPERhdGUgfCBudWxsPihyZXNvbHZlZFZhbHVlKVxuICBjb25zdCBbdGVtcEhvdXJzLCBzZXRUZW1wSG91cnNdID0gUmVhY3QudXNlU3RhdGUoKCkgPT5cbiAgICByZXNvbHZlZFZhbHVlID8gKHJlc29sdmVkVmFsdWUuZ2V0SG91cnMoKSAlIDEyIHx8IDEyKSA6IDEyKVxuICBjb25zdCBbdGVtcE1pbnMsIHNldFRlbXBNaW5zXSA9IFJlYWN0LnVzZVN0YXRlKCgpID0+XG4gICAgcmVzb2x2ZWRWYWx1ZSA/IHJlc29sdmVkVmFsdWUuZ2V0TWludXRlcygpIDogMClcbiAgY29uc3QgW3RlbXBBbVBtLCBzZXRUZW1wQW1QbV0gPSBSZWFjdC51c2VTdGF0ZSgoKSA9PlxuICAgIHJlc29sdmVkVmFsdWUgPyAocmVzb2x2ZWRWYWx1ZS5nZXRIb3VycygpID49IDEyID8gJ1BNJyA6ICdBTScpIDogJ0FNJylcbiAgY29uc3QgW3Nob3dZZWFyUGlja2VyLCBzZXRTaG93WWVhclBpY2tlcl0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3llYXJQYWdlLCBzZXRZZWFyUGFnZV0gPSBSZWFjdC51c2VTdGF0ZSgoKSA9PlxuICAgIE1hdGguZmxvb3IoKHJlc29sdmVkVmFsdWUgPyByZXNvbHZlZFZhbHVlLmdldEZ1bGxZZWFyKCkgOiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkpIC8gWUVBUlNfUEVSX1BBR0UpICogWUVBUlNfUEVSX1BBR0VcbiAgKVxuICBjb25zdCBbcG9wb3ZlclN0eWxlLCBzZXRQb3BvdmVyU3R5bGVdID0gUmVhY3QudXNlU3RhdGU8UmVhY3QuQ1NTUHJvcGVydGllcz4oe30pXG5cbiAgY29uc3QgaW5wdXRSZWYgPSBSZWFjdC51c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbClcbiAgY29uc3QgcG9wb3ZlclJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgcG9ydGFsUmVmID0gUmVhY3QudXNlUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbClcblxuICAvKiAtLS0tIHBvcnRhbCBjb250YWluZXIgLS0tLSAqL1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICBlbC5jbGFzc05hbWUgPSAnZGF0ZXBpY2tlci1wb3J0YWwtcm9vdCdcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsKVxuICAgIHBvcnRhbFJlZi5jdXJyZW50ID0gZWxcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGVsLnBhcmVudE5vZGUpIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWwpXG4gICAgICBwb3J0YWxSZWYuY3VycmVudCA9IG51bGxcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8qIC0tLS0gc3luYyB0ZW1wIHN0YXRlIHdoZW4gdmFsdWUgY2hhbmdlcyBleHRlcm5hbGx5IC0tLS0gKi9cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVzb2x2ZWRWYWx1ZSAmJiAhaXNOYU4ocmVzb2x2ZWRWYWx1ZS5nZXRUaW1lKCkpKSB7XG4gICAgICBzZXRUZW1wRGF0ZShyZXNvbHZlZFZhbHVlKVxuICAgICAgc2V0Vmlld1llYXIocmVzb2x2ZWRWYWx1ZS5nZXRGdWxsWWVhcigpKVxuICAgICAgc2V0Vmlld01vbnRoKHJlc29sdmVkVmFsdWUuZ2V0TW9udGgoKSlcbiAgICAgIHNldFRlbXBIb3VycyhyZXNvbHZlZFZhbHVlLmdldEhvdXJzKCkgJSAxMiB8fCAxMilcbiAgICAgIHNldFRlbXBNaW5zKHJlc29sdmVkVmFsdWUuZ2V0TWludXRlcygpKVxuICAgICAgc2V0VGVtcEFtUG0ocmVzb2x2ZWRWYWx1ZS5nZXRIb3VycygpID49IDEyID8gJ1BNJyA6ICdBTScpXG4gICAgICBzZXRZZWFyUGFnZShNYXRoLmZsb29yKHJlc29sdmVkVmFsdWUuZ2V0RnVsbFllYXIoKSAvIFlFQVJTX1BFUl9QQUdFKSAqIFlFQVJTX1BFUl9QQUdFKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRUZW1wRGF0ZShudWxsKVxuICAgIH1cbiAgfSwgW3Jlc29sdmVkVmFsdWVdKVxuXG4gIC8qIC0tLS0gcmVwb3NpdGlvbiBwb3BvdmVyIG9uIG9wZW4gLyBzY3JvbGwgLyByZXNpemUgLS0tLSAqL1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNPcGVuKSByZXR1cm5cblxuICAgIC8qIE1lYXN1cmUgYWN0dWFsIHBvcG92ZXIgc2l6ZSBzbyB3ZSBwb3NpdGlvbiB3aXRoIG5vIHdhc3RlZCBzcGFjZSAqL1xuICAgIGNvbnN0IGdldEhlaWdodCA9ICgpOiBudW1iZXIgPT4ge1xuICAgICAgaWYgKHBvcG92ZXJSZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm4gcG9wb3ZlclJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodFxuICAgICAgfVxuICAgICAgcmV0dXJuIFBPUE9WRVJfR1VFU1Nbc2hvd1llYXJQaWNrZXIgPyAneWVhcicgOiBtb2RlXSB8fCAzMDBcbiAgICB9XG4gICAgY29uc3QgZ2V0V2lkdGggPSAoKTogbnVtYmVyID0+IHtcbiAgICAgIGlmIChwb3BvdmVyUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuIHBvcG92ZXJSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aFxuICAgICAgfVxuICAgICAgcmV0dXJuIFBPUE9WRVJfV0lEVEhfR1VFU1Nbc2hvd1llYXJQaWNrZXIgPyAneWVhcicgOiBtb2RlXSB8fCAyODBcbiAgICB9XG5cbiAgICBjb25zdCBzY3JvbGxQYXJlbnQgPSBnZXRTY3JvbGxQYXJlbnQoaW5wdXRSZWYuY3VycmVudClcblxuICAgIGNvbnN0IHVwZGF0ZSA9ICgpID0+IHtcbiAgICAgIC8qIEZvcmNlIGEgcGFpbnQgZnJhbWUgc28gdGhlIHBvcG92ZXIgaGFzIGl0cyByZWFsIHNpemUgKi9cbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHNldFBvcG92ZXJTdHlsZShjYWxjUG9wb3ZlclN0eWxlKGlucHV0UmVmLmN1cnJlbnQsIGdldEhlaWdodCgpLCBnZXRXaWR0aCgpKSlcbiAgICAgIH0pXG4gICAgfVxuICAgIHVwZGF0ZSgpXG5cbiAgICAvKiBMaXN0ZW4gb24gdGhlIG5lYXJlc3Qgc2Nyb2xsYWJsZSBhbmNlc3RvciAoZS5nLiBtb2RhbCBib2R5KSBBTkQgdGhlIHdpbmRvdyAqL1xuICAgIHNjcm9sbFBhcmVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUsIHsgcGFzc2l2ZTogdHJ1ZSB9KVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHNjcm9sbFBhcmVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUpXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKVxuICAgIH1cbiAgfSwgW2lzT3BlbiwgbW9kZSwgc2hvd1llYXJQaWNrZXJdKVxuXG4gIC8qIC0tLS0gY2xpY2sgb3V0c2lkZSB0byBjbG9zZSAtLS0tICovXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc09wZW4pIHJldHVyblxuICAgIGNvbnN0IGhhbmRsZXIgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKHBvcG92ZXJSZWYuY3VycmVudCAmJiAhcG9wb3ZlclJlZi5jdXJyZW50LmNvbnRhaW5zKGUudGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgICAgICAgaW5wdXRSZWYuY3VycmVudCAmJiAhaW5wdXRSZWYuY3VycmVudC5jb250YWlucyhlLnRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgICBzZXRJc09wZW4oZmFsc2UpXG4gICAgICAgIHNldFNob3dZZWFyUGlja2VyKGZhbHNlKVxuICAgICAgfVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVyKVxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVyKVxuICB9LCBbaXNPcGVuXSlcblxuICAvKiAtLS0tIGNvbW1pdCBoZWxwZXJzIC0tLS0gKi9cbiAgY29uc3QgYnVpbGREYXRlID0gKGJhc2U6IERhdGUsIGgxMjogbnVtYmVyLCBtaW5zOiBudW1iZXIsIGFtcG06IHN0cmluZyk6IERhdGUgPT4ge1xuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShiYXNlKVxuICAgIGxldCBoID0gaDEyICUgMTJcbiAgICBpZiAoYW1wbSA9PT0gJ1BNJykgaCArPSAxMlxuICAgIGlmIChoID09PSAxMiAmJiBhbXBtID09PSAnQU0nKSBoID0gMFxuICAgIGQuc2V0SG91cnMoaCwgbWlucywgMCwgMClcbiAgICByZXR1cm4gZFxuICB9XG5cbiAgLyoqXG4gICAqIEZpcmUgb25DaGFuZ2Ugd2l0aCBhIHByZS1idWlsdCBkYXRlIHdpdGhvdXQgY2xvc2luZyB0aGUgcG9wb3Zlci5cbiAgICogQ2FsbGVycyBtdXN0IGJ1aWxkIHRoZSBjb21wbGV0ZSBkYXRlIChpbmNsdWRpbmcgdGltZSkgYmVmb3JlIHBhc3NpbmcgaXQgaW4uXG4gICAqL1xuICBjb25zdCBmaXJlQ2hhbmdlID0gKGRhdGU6IERhdGUgfCBudWxsKTogdm9pZCA9PiB7XG4gICAgaWYgKCFkYXRlIHx8IGlzTmFOKGRhdGUuZ2V0VGltZSgpKSkgcmV0dXJuXG4gICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0VmFsdWUoZGF0ZSwgbW9kZSwgZGF0ZUZvcm1hdClcbiAgICBvbkNoYW5nZT8uKG1ha2VFdmVudChmb3JtYXR0ZWQsIG5hbWUgfHwgJycsIG1vZGUpKVxuICB9XG5cbiAgY29uc3QgY29tbWl0ID0gKGRhdGU6IERhdGUgfCBudWxsKTogdm9pZCA9PiB7XG4gICAgaWYgKCFkYXRlKSB7XG4gICAgICBvbkNoYW5nZT8uKG1ha2VFdmVudChudWxsLCBuYW1lIHx8ICcnLCBtb2RlKSlcbiAgICAgIHNldElzT3BlbihmYWxzZSlcbiAgICAgIHNldFNob3dZZWFyUGlja2VyKGZhbHNlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGZpcmVDaGFuZ2UoZGF0ZSlcbiAgICBpZiAobW9kZSA9PT0gJ2RhdGUnKSB7IHNldElzT3BlbihmYWxzZSk7IHNldFNob3dZZWFyUGlja2VyKGZhbHNlKSB9XG4gIH1cblxuICBjb25zdCBjb21taXREYXRlT25seSA9IChkYXRlOiBEYXRlKTogdm9pZCA9PiB7XG4gICAgc2V0VGVtcERhdGUoZGF0ZSlcbiAgICBpZiAobW9kZSA9PT0gJ2RhdGUnKSB7XG4gICAgICBjb21taXQoZGF0ZSlcbiAgICB9IGVsc2UgaWYgKG1vZGUgPT09ICdkYXRldGltZScpIHtcbiAgICAgIC8vIEJ1aWxkIGZ1bGwgZGF0ZXRpbWUgKGRhdGUgKyBjdXJyZW50IHRpbWUgc2VsZWN0aW9uKSBhbmQgZmlyZVxuICAgICAgY29uc3QgZCA9IGJ1aWxkRGF0ZShkYXRlLCB0ZW1wSG91cnMsIHRlbXBNaW5zLCB0ZW1wQW1QbSlcbiAgICAgIGZpcmVDaGFuZ2UoZClcbiAgICB9XG4gIH1cblxuICAvKiAtLS0tIGNhbGVuZGFyIGdyaWQgLS0tLSAqL1xuICBjb25zdCBncmlkID0gYnVpbGRDYWxlbmRhckdyaWQodmlld1llYXIsIHZpZXdNb250aClcblxuICBjb25zdCBoYW5kbGVQcmV2TW9udGggPSAoKSA9PiB7XG4gICAgbGV0IG5ld1kgPSB2aWV3WWVhciwgbmV3TSA9IHZpZXdNb250aFxuICAgIGlmICh2aWV3TW9udGggPT09IDApIHsgbmV3WSA9IHZpZXdZZWFyIC0gMTsgbmV3TSA9IDExIH1cbiAgICBlbHNlIG5ld00gPSB2aWV3TW9udGggLSAxXG4gICAgc2V0Vmlld1llYXIobmV3WSk7IHNldFZpZXdNb250aChuZXdNKVxuICAgIGNvbnN0IGJhc2UgPSB0ZW1wRGF0ZSB8fCBuZXcgRGF0ZSgpXG4gICAgY29uc3QgbWF4RCA9IGRheXNJbk1vbnRoKG5ld1ksIG5ld00pXG4gICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKG5ld1ksIG5ld00sIE1hdGgubWluKGJhc2UuZ2V0RGF0ZSgpLCBtYXhEKSlcbiAgICBzZXRUZW1wRGF0ZShuZXdEYXRlKVxuICAgIGZpcmVDaGFuZ2Uoc2hvd1RpbWUgPyBidWlsZERhdGUobmV3RGF0ZSwgdGVtcEhvdXJzLCB0ZW1wTWlucywgdGVtcEFtUG0pIDogbmV3RGF0ZSlcbiAgfVxuICBjb25zdCBoYW5kbGVOZXh0TW9udGggPSAoKSA9PiB7XG4gICAgbGV0IG5ld1kgPSB2aWV3WWVhciwgbmV3TSA9IHZpZXdNb250aFxuICAgIGlmICh2aWV3TW9udGggPT09IDExKSB7IG5ld1kgPSB2aWV3WWVhciArIDE7IG5ld00gPSAwIH1cbiAgICBlbHNlIG5ld00gPSB2aWV3TW9udGggKyAxXG4gICAgc2V0Vmlld1llYXIobmV3WSk7IHNldFZpZXdNb250aChuZXdNKVxuICAgIGNvbnN0IGJhc2UgPSB0ZW1wRGF0ZSB8fCBuZXcgRGF0ZSgpXG4gICAgY29uc3QgbWF4RCA9IGRheXNJbk1vbnRoKG5ld1ksIG5ld00pXG4gICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKG5ld1ksIG5ld00sIE1hdGgubWluKGJhc2UuZ2V0RGF0ZSgpLCBtYXhEKSlcbiAgICBzZXRUZW1wRGF0ZShuZXdEYXRlKVxuICAgIGZpcmVDaGFuZ2Uoc2hvd1RpbWUgPyBidWlsZERhdGUobmV3RGF0ZSwgdGVtcEhvdXJzLCB0ZW1wTWlucywgdGVtcEFtUG0pIDogbmV3RGF0ZSlcbiAgfVxuXG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKVxuICBjb25zdCBtaW5EdCA9IG1pbkRhdGUgPyBuZXcgRGF0ZShtaW5EYXRlLmdldEZ1bGxZZWFyKCksIG1pbkRhdGUuZ2V0TW9udGgoKSwgbWluRGF0ZS5nZXREYXRlKCkpIDogbnVsbFxuICBjb25zdCBtYXhEdCA9IG1heERhdGUgPyBuZXcgRGF0ZShtYXhEYXRlLmdldEZ1bGxZZWFyKCksIG1heERhdGUuZ2V0TW9udGgoKSwgbWF4RGF0ZS5nZXREYXRlKCkpIDogbnVsbFxuXG4gIC8qIC0tLS0gdGltZSBjaGFuZ2UgaGFuZGxlcnMgLS0tLSAqL1xuICBjb25zdCBoYW5kbGVIb3VyQ2hhbmdlID0gKGg6IG51bWJlcikgPT4ge1xuICAgIHNldFRlbXBIb3VycyhoKVxuICAgIGlmIChzaG93VGltZSkge1xuICAgICAgY29uc3QgZCA9IGJ1aWxkRGF0ZSh0ZW1wRGF0ZSB8fCBuZXcgRGF0ZSgpLCBoLCB0ZW1wTWlucywgdGVtcEFtUG0pXG4gICAgICBvbkNoYW5nZT8uKG1ha2VFdmVudChmb3JtYXRWYWx1ZShkLCBtb2RlLCBkYXRlRm9ybWF0KSwgbmFtZSB8fCAnJywgbW9kZSkpXG4gICAgfVxuICB9XG4gIGNvbnN0IGhhbmRsZU1pbkNoYW5nZSA9IChtOiBudW1iZXIpID0+IHtcbiAgICBzZXRUZW1wTWlucyhtKVxuICAgIGlmIChzaG93VGltZSkge1xuICAgICAgY29uc3QgZCA9IGJ1aWxkRGF0ZSh0ZW1wRGF0ZSB8fCBuZXcgRGF0ZSgpLCB0ZW1wSG91cnMsIG0sIHRlbXBBbVBtKVxuICAgICAgb25DaGFuZ2U/LihtYWtlRXZlbnQoZm9ybWF0VmFsdWUoZCwgbW9kZSwgZGF0ZUZvcm1hdCksIG5hbWUgfHwgJycsIG1vZGUpKVxuICAgIH1cbiAgfVxuICBjb25zdCBoYW5kbGVBbVBtQ2hhbmdlID0gKGFwOiBzdHJpbmcpID0+IHtcbiAgICBzZXRUZW1wQW1QbShhcClcbiAgICBpZiAoc2hvd1RpbWUpIHtcbiAgICAgIGNvbnN0IGQgPSBidWlsZERhdGUodGVtcERhdGUgfHwgbmV3IERhdGUoKSwgdGVtcEhvdXJzLCB0ZW1wTWlucywgYXApXG4gICAgICBvbkNoYW5nZT8uKG1ha2VFdmVudChmb3JtYXRWYWx1ZShkLCBtb2RlLCBkYXRlRm9ybWF0KSwgbmFtZSB8fCAnJywgbW9kZSkpXG4gICAgfVxuICB9XG5cbiAgLyogLS0tLSB5ZWFyIHBpY2tlciAtLS0tICovXG4gIGNvbnN0IG9wZW5ZZWFyUGlja2VyID0gKCkgPT4ge1xuICAgIHNldFllYXJQYWdlKE1hdGguZmxvb3Iodmlld1llYXIgLyBZRUFSU19QRVJfUEFHRSkgKiBZRUFSU19QRVJfUEFHRSlcbiAgICBzZXRTaG93WWVhclBpY2tlcih0cnVlKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlWWVhclNlbGVjdCA9ICh5OiBudW1iZXIpID0+IHtcbiAgICBzZXRWaWV3WWVhcih5KVxuICAgIHNldFNob3dZZWFyUGlja2VyKGZhbHNlKVxuICAgIGNvbnN0IGJhc2UgPSB0ZW1wRGF0ZSB8fCBuZXcgRGF0ZSgpXG4gICAgY29uc3QgbWF4RCA9IGRheXNJbk1vbnRoKHksIHZpZXdNb250aClcbiAgICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUoeSwgdmlld01vbnRoLCBNYXRoLm1pbihiYXNlLmdldERhdGUoKSwgbWF4RCkpXG4gICAgc2V0VGVtcERhdGUobmV3RGF0ZSlcbiAgICBmaXJlQ2hhbmdlKHNob3dUaW1lID8gYnVpbGREYXRlKG5ld0RhdGUsIHRlbXBIb3VycywgdGVtcE1pbnMsIHRlbXBBbVBtKSA6IG5ld0RhdGUpXG4gIH1cblxuICBjb25zdCB5ZWFyUGFnZVN0YXJ0ID0gTWF0aC5mbG9vcih5ZWFyUGFnZSAvIFlFQVJTX1BFUl9QQUdFKSAqIFlFQVJTX1BFUl9QQUdFXG4gIGNvbnN0IHllYXJzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogWUVBUlNfUEVSX1BBR0UgfSwgKF8sIGkpID0+IHllYXJQYWdlU3RhcnQgKyBpKVxuXG4gIC8qIC0tLS0gY2xlYXIgLS0tLSAqL1xuICBjb25zdCBoYW5kbGVDbGVhciA9IChlOiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIHNldFRlbXBEYXRlKG51bGwpXG4gICAgb25DaGFuZ2U/LihtYWtlRXZlbnQobnVsbCwgbmFtZSB8fCAnJykpXG4gIH1cblxuICAvKiAtLS0tIGtleWJvYXJkIC0tLS0gKi9cbiAgY29uc3QgaGFuZGxlSW5wdXRLZXlEb3duID0gKGU6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSB7IHNldElzT3BlbihmYWxzZSk7IHNldFNob3dZZWFyUGlja2VyKGZhbHNlKTsgaW5wdXRSZWYuY3VycmVudD8uYmx1cigpIH1cbiAgICBpZiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGUua2V5ID09PSAnRW50ZXInIHx8IGUua2V5ID09PSAnICcpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgc2V0SXNPcGVuKHRydWUpXG4gICAgfVxuICB9XG5cbiAgLyogLS0tLSBtZXJnZWQgcmVmIC0tLS0gKi9cbiAgY29uc3QgbWVyZ2VJbnB1dFJlZiA9IFJlYWN0LnVzZUNhbGxiYWNrKChub2RlOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgIGlucHV0UmVmLmN1cnJlbnQgPSBub2RlXG4gICAgaWYgKHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicpIHJlZihub2RlKVxuICAgIGVsc2UgaWYgKHJlZikgcmVmLmN1cnJlbnQgPSBub2RlXG4gIH0sIFtyZWZdKVxuXG4gIC8qIC0tLS0gcmVuZGVyIC0tLS0gKi9cbiAgY29uc3QgcGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlclRleHRcbiAgICA/PyAobW9kZSA9PT0gJ3RpbWUnID8gJ1NlbGVjdCB0aW1lJyA6IG1vZGUgPT09ICdkYXRldGltZScgPyAnU2VsZWN0IGRhdGUgJiB0aW1lJyA6ICdTZWxlY3QgZGF0ZScpXG5cbiAgY29uc3QgcG9wb3ZlciA9IChcbiAgICA8ZGl2XG4gICAgICByZWY9e3BvcG92ZXJSZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAnZGF0ZXBpY2tlci1wb3BvdmVyIGNhcmQgYm9yZGVyIHNoYWRvdy1zbScsXG4gICAgICAgIG1vZGUgPT09ICdkYXRldGltZScgJiYgJ2RhdGVwaWNrZXItcG9wb3Zlci0td2lkZSdcbiAgICAgICl9XG4gICAgICBzdHlsZT17cG9wb3ZlclN0eWxlfVxuICAgID5cbiAgICAgIHsvKiA9PT09PT09PT09PT09PSBZRUFSIFBJQ0tFUiA9PT09PT09PT09PT09PSAqL31cbiAgICAgIHtzaG93WWVhclBpY2tlciAmJiBzaG93Q2FsZW5kYXIgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXIteWVhci1waWNrZXIgcC0zXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTJcIj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJvcmRlci0wIHB4LTFcIiBvbkNsaWNrPXsoKSA9PiBzZXRZZWFyUGFnZSh5ZWFyUGFnZSAtIFlFQVJTX1BFUl9QQUdFKX0gYXJpYS1sYWJlbD1cIlByZXZpb3VzIHllYXJzXCI+JmxzYXF1bzs8L2J1dHRvbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZ3LXNlbWlib2xkIHNtYWxsXCI+e3llYXJQYWdlU3RhcnR9IOKAkyB7eWVhclBhZ2VTdGFydCArIFlFQVJTX1BFUl9QQUdFIC0gMX08L3NwYW4+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBib3JkZXItMCBweC0xXCIgb25DbGljaz17KCkgPT4gc2V0WWVhclBhZ2UoeWVhclBhZ2UgKyBZRUFSU19QRVJfUEFHRSl9IGFyaWEtbGFiZWw9XCJOZXh0IHllYXJzXCI+JnJzYXF1bzs8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXIteWVhci1ncmlkXCI+XG4gICAgICAgICAgICB7eWVhcnMubWFwKCh5KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGlzQ3VycmVudFllYXIgPSB5ID09PSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKClcbiAgICAgICAgICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IHRlbXBEYXRlICYmIHkgPT09IHRlbXBEYXRlLmdldEZ1bGxZZWFyKClcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBrZXk9e3l9XG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICdkYXRlcGlja2VyLXllYXItY2VsbCBidG4gYnRuLXNtJyxcbiAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZCAmJiAnYnRuLXByaW1hcnknLFxuICAgICAgICAgICAgICAgICAgICAhaXNTZWxlY3RlZCAmJiBpc0N1cnJlbnRZZWFyICYmICdidG4tb3V0bGluZS1wcmltYXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgIWlzU2VsZWN0ZWQgJiYgIWlzQ3VycmVudFllYXIgJiYgJ2J0bi1saWdodCBib3JkZXInXG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlWWVhclNlbGVjdCh5KX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cblxuICAgICAgey8qID09PT09PT09PT09PT09IENBTEVOREFSICsgVElNRSA9PT09PT09PT09PT09PSAqL31cbiAgICAgIHshc2hvd1llYXJQaWNrZXIgJiYgKFxuICAgICAgICA8PlxuXG4gICAgICAgICAgey8qIC0tLS0gQ0FMRU5EQVIgKyBUSU1FIENPTlRBSU5FUiAtLS0tICovfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbignZC1mbGV4JywgbW9kZSA9PT0gJ2RhdGV0aW1lJyA/ICdmbGV4LXJvdycgOiAnZmxleC1jb2x1bW4nKX0+XG5cbiAgICAgICAgICB7LyogLS0tLSBDQUxFTkRBUiAtLS0tICovfVxuICAgICAgICAgIHtzaG93Q2FsZW5kYXIgJiYgKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLWNhbGVuZGFyIHAtMlwiPlxuICAgICAgICAgICAgICB7LyogTW9udGggLyBZZWFyIGhlYWRlciAqL31cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTJcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBib3JkZXItMCBweC0xXCIgb25DbGljaz17aGFuZGxlUHJldk1vbnRofSBhcmlhLWxhYmVsPVwiUHJldmlvdXMgbW9udGhcIj4mbHNhcXVvOzwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZnctc2VtaWJvbGQgc21hbGxcIj57TU9OVEhTW3ZpZXdNb250aF19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYnRuIGJ0bi1zbSBidG4tbGluayB0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LXByaW1hcnkgZnctc2VtaWJvbGQgc21hbGwgcC0wXCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17b3BlblllYXJQaWNrZXJ9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDaG9vc2UgeWVhclwiXG4gICAgICAgICAgICAgICAgICA+e3ZpZXdZZWFyfTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJvcmRlci0wIHB4LTFcIiBvbkNsaWNrPXtoYW5kbGVOZXh0TW9udGh9IGFyaWEtbGFiZWw9XCJOZXh0IG1vbnRoXCI+JnJzYXF1bzs8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgey8qIERheS1vZi13ZWVrIGhlYWRlcnMgKi99XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci1kYXlzLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIHtEQVlTX09GX1dFRUsubWFwKGQgPT4gKFxuICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2R9IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItZGF5LWxhYmVsXCI+e2R9PC9kaXY+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIHsvKiBEYXkgZ3JpZCAqL31cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLWRheXMtZ3JpZFwiPlxuICAgICAgICAgICAgICAgIHtncmlkLm1hcCgoY2VsbCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgaXNUb2RheSA9IGlzU2FtZURheShjZWxsLmRhdGUsIHRvZGF5KVxuICAgICAgICAgICAgICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IHRlbXBEYXRlICYmIGlzU2FtZURheShjZWxsLmRhdGUsIHRlbXBEYXRlKVxuICAgICAgICAgICAgICAgICAgY29uc3QgaW5SYW5nZSA9IGlzRGF0ZUluUmFuZ2UoY2VsbC5kYXRlLCBtaW5EdCwgbWF4RHQpXG4gICAgICAgICAgICAgICAgICBjb25zdCBpc0Rpc2FibGVkRGF5ID0gY2VsbC5pc091dHNpZGUgfHwgIWluUmFuZ2VcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGtleT17aX1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZERheX1cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGVwaWNrZXItZGF5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG9kYXkgJiYgJ2RhdGVwaWNrZXItZGF5LS10b2RheScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkICYmICdkYXRlcGlja2VyLWRheS0tc2VsZWN0ZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5pc091dHNpZGUgJiYgJ2RhdGVwaWNrZXItZGF5LS1vdXRzaWRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICFpblJhbmdlICYmICdkYXRlcGlja2VyLWRheS0tZGlzYWJsZWQnXG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjb21taXREYXRlT25seShjZWxsLmRhdGUpfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXtjZWxsLmlzT3V0c2lkZSA/IC0xIDogMH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtjZWxsLmRheX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHsvKiAtLS0tIERJVklERVIgKGRhdGV0aW1lIG1vZGUpIC0tLS0gKi99XG4gICAgICAgICAge21vZGUgPT09ICdkYXRldGltZScgJiYgPGRpdiBjbGFzc05hbWU9XCJ2ciBteC0xIG15LTJcIiAvPn1cblxuICAgICAgICAgIHsvKiAtLS0tIFRJTUUgLS0tLSAqL31cbiAgICAgICAgICB7c2hvd1RpbWUgJiYgKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXRpbWUgcC0yIGQtZmxleCBmbGV4LWNvbHVtblwiIHN0eWxlPXt7IG1pbldpZHRoOiAxODAgfX0+XG4gICAgICAgICAgICAgIHttb2RlID09PSAnZGF0ZXRpbWUnICYmIDxkaXYgY2xhc3NOYW1lPVwic21hbGwgZnctc2VtaWJvbGQgdGV4dC1tdXRlZCB0ZXh0LWNlbnRlciBtYi0xXCI+VGltZTwvZGl2Pn1cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgIHsvKiBIb3VyIGNvbHVtbiAqL31cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItdGltZS1jb2xcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci10aW1lLWNvbC1sYWJlbFwiPkhvdXI8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci10aW1lLWNvbC1zY3JvbGxcIj5cbiAgICAgICAgICAgICAgICAgICAge0FycmF5LmZyb20oeyBsZW5ndGg6IDEyIH0sIChfLCBpKSA9PiBpICsgMSkubWFwKGggPT4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbignZGF0ZXBpY2tlci10aW1lLWl0ZW0nLCBoID09PSB0ZW1wSG91cnMgJiYgJ2FjdGl2ZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlSG91ckNoYW5nZShoKX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7U3RyaW5nKGgpLnBhZFN0YXJ0KDIsICcwJyl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci10aW1lLXNlcGFyYXRvclwiPjo8L3NwYW4+XG4gICAgICAgICAgICAgICAgey8qIE1pbnV0ZSBjb2x1bW4gKi99XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXRpbWUtY29sXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItdGltZS1jb2wtbGFiZWxcIj5NaW48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci10aW1lLWNvbC1zY3JvbGxcIj5cbiAgICAgICAgICAgICAgICAgICAge01JTlVURVMubWFwKG0gPT4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17bX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbignZGF0ZXBpY2tlci10aW1lLWl0ZW0nLCBtID09PSB0ZW1wTWlucyAmJiAnYWN0aXZlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVNaW5DaGFuZ2UobSl9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge1N0cmluZyhtKS5wYWRTdGFydCgyLCAnMCcpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIHsvKiBBTS9QTSBjb2x1bW4gKi99XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXRpbWUtY29sXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItdGltZS1jb2wtbGFiZWxcIj4mbmJzcDs8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0xIG10LTFcIj5cbiAgICAgICAgICAgICAgICAgICAge1snQU0nLCAnUE0nXS5tYXAoYXAgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YXB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oJ2RhdGVwaWNrZXItdGltZS1pdGVtJywgJ2RhdGVwaWNrZXItdGltZS1pdGVtLS1hbXBtJywgdGVtcEFtUG0gPT09IGFwICYmICdhY3RpdmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUFtUG1DaGFuZ2UoYXApfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHthcH1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItd3JhcHBlciBwb3NpdGlvbi1yZWxhdGl2ZSBkLWlubGluZS1ibG9jayB3LTEwMFwiIHN0eWxlPXt7IG1pbldpZHRoOiAwIH19PlxuICAgICAgey8qIC0tLS0gSW5wdXQgLS0tLSAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgcmVmPXttZXJnZUlucHV0UmVmfVxuICAgICAgICAgIGlkPXtpZH1cbiAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICByZWFkT25seVxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgJ2Zvcm0tY29udHJvbCcsXG4gICAgICAgICAgICBzaXplID09PSAnc20nICYmICdmb3JtLWNvbnRyb2wtc20nLFxuICAgICAgICAgICAgc2l6ZSA9PT0gJ2xnJyAmJiAnZm9ybS1jb250cm9sLWxnJyxcbiAgICAgICAgICAgICdwZS01JyxcbiAgICAgICAgICAgIGNsYXNzTmFtZVxuICAgICAgICAgICl9XG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAgIHZhbHVlPXtmb3JtYXRWYWx1ZShyZXNvbHZlZFZhbHVlLCBtb2RlLCBkYXRlRm9ybWF0KX1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiAhZGlzYWJsZWQgJiYgc2V0SXNPcGVuKCFpc09wZW4pfVxuICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlSW5wdXRLZXlEb3dufVxuICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJkaWFsb2dcIlxuICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9e2lzT3Blbn1cbiAgICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgLz5cbiAgICAgICAgey8qIGNsZWFyIGJ1dHRvbiAqL31cbiAgICAgICAge2lzQ2xlYXJhYmxlICYmIHJlc29sdmVkVmFsdWUgJiYgIWRpc2FibGVkICYmIChcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ0biBidG4tc20gYnRuLWxpbmsgcG9zaXRpb24tYWJzb2x1dGUgdG9wLTUwIGVuZC0wIHRyYW5zbGF0ZS1taWRkbGUteSBwZS0yIHRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgIHN0eWxlPXt7IHpJbmRleDogMiB9fVxuICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQ2xlYXJ9XG4gICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgICZ0aW1lcztcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogLS0tLSBQb3J0YWwgdGhlIHBvcG92ZXIgdG8gZG9jdW1lbnQuYm9keSAtLS0tICovfVxuICAgICAge2lzT3BlbiAmJiAhZGlzYWJsZWQgJiYgcG9ydGFsUmVmLmN1cnJlbnQgJiYgY3JlYXRlUG9ydGFsKHBvcG92ZXIsIHBvcnRhbFJlZi5jdXJyZW50KX1cbiAgICA8L2Rpdj5cbiAgKVxufSlcblxuRGF0ZVBpY2tlci5kaXNwbGF5TmFtZSA9ICdEYXRlUGlja2VyJ1xuXG5leHBvcnQgeyBEYXRlUGlja2VyIH1cbmV4cG9ydCBkZWZhdWx0IERhdGVQaWNrZXJcbiJdfQ==
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkGZ2D7HTS_cjs=require('./chunk-GZ2D7HTS.cjs'),chunkAWU5XGMI_cjs=require('./chunk-AWU5XGMI.cjs');require('./chunk-NPQQDBFB.cjs');var chunk2Q4NZKMX_cjs=require('./chunk-2Q4NZKMX.cjs'),chunk5IOLZUVD_cjs=require('./chunk-5IOLZUVD.cjs');Object.defineProperty(exports,"DatePicker",{enumerable:true,get:function(){return chunkGZ2D7HTS_cjs.a}});Object.defineProperty(exports,"SearchSelect",{enumerable:true,get:function(){return chunkAWU5XGMI_cjs.a}});Object.defineProperty(exports,"Label",{enumerable:true,get:function(){return chunk2Q4NZKMX_cjs.a}});Object.defineProperty(exports,"TableLoading",{enumerable:true,get:function(){return chunk5IOLZUVD_cjs.a}});//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var chunkOEFG7PNW_cjs=require('./chunk-OEFG7PNW.cjs'),chunkAWU5XGMI_cjs=require('./chunk-AWU5XGMI.cjs'),chunk2Q4NZKMX_cjs=require('./chunk-2Q4NZKMX.cjs'),chunk5IOLZUVD_cjs=require('./chunk-5IOLZUVD.cjs'),chunkM3OUUXZG_cjs=require('./chunk-M3OUUXZG.cjs');require('./chunk-NPQQDBFB.cjs');Object.defineProperty(exports,"DatePicker",{enumerable:true,get:function(){return chunkOEFG7PNW_cjs.a}});Object.defineProperty(exports,"SearchSelect",{enumerable:true,get:function(){return chunkAWU5XGMI_cjs.a}});Object.defineProperty(exports,"Label",{enumerable:true,get:function(){return chunk2Q4NZKMX_cjs.a}});Object.defineProperty(exports,"TableLoading",{enumerable:true,get:function(){return chunk5IOLZUVD_cjs.a}});Object.defineProperty(exports,"AutoTextarea",{enumerable:true,get:function(){return chunkM3OUUXZG_cjs.a}});//# sourceMappingURL=index.cjs.map
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJpbmRleC5janMifQ==
package/dist/index.d.cts CHANGED
@@ -2,4 +2,5 @@ export { DatePicker, DatePickerChangeEvent, DatePickerProps } from './DatePicker
2
2
  export { SearchSelect, SearchSelectProps } from './SearchSelect.cjs';
3
3
  export { Label, LabelProps } from './Label.cjs';
4
4
  export { TableLoading, TableLoadingProps } from './TableLoading.cjs';
5
+ export { AutoTextarea, AutoTextareaProps } from './AutoTextarea.cjs';
5
6
  import 'react';
package/dist/index.d.ts CHANGED
@@ -2,4 +2,5 @@ export { DatePicker, DatePickerChangeEvent, DatePickerProps } from './DatePicker
2
2
  export { SearchSelect, SearchSelectProps } from './SearchSelect.js';
3
3
  export { Label, LabelProps } from './Label.js';
4
4
  export { TableLoading, TableLoadingProps } from './TableLoading.js';
5
+ export { AutoTextarea, AutoTextareaProps } from './AutoTextarea.js';
5
6
  import 'react';
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export{a as DatePicker}from'./chunk-ES5ABK5L.js';export{a as SearchSelect}from'./chunk-ZCAQ7S2A.js';import'./chunk-RR7TBRGI.js';export{a as Label}from'./chunk-HYB5IGJK.js';export{a as TableLoading}from'./chunk-7LXLWNUR.js';//# sourceMappingURL=index.js.map
1
+ export{a as DatePicker}from'./chunk-WLMCWTO6.js';export{a as SearchSelect}from'./chunk-ZCAQ7S2A.js';export{a as Label}from'./chunk-HYB5IGJK.js';export{a as TableLoading}from'./chunk-7LXLWNUR.js';export{a as AutoTextarea}from'./chunk-KKWFIJKN.js';import'./chunk-RR7TBRGI.js';//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJpbmRleC5qcyJ9
@@ -0,0 +1,106 @@
1
+ # AutoTextarea
2
+
3
+ > Bootstrap 5 textarea that automatically grows and shrinks to fit its content. Grows up to `maxRows` (or a pixel `maxHeight` cap), then becomes scrollable. Zero dependencies.
4
+
5
+ ---
6
+
7
+ ## Import
8
+
9
+ ```js
10
+ // Default import (recommended for single-component tree-shaking)
11
+ import AutoTextarea from 'react-bootstrap-plugins/AutoTextarea'
12
+
13
+ // Named import from individual entry point
14
+ import { AutoTextarea } from 'react-bootstrap-plugins/AutoTextarea'
15
+
16
+ // Barrel import
17
+ import { AutoTextarea } from 'react-bootstrap-plugins'
18
+ ```
19
+
20
+ ---
21
+
22
+ ## Basic Usage
23
+
24
+ ```jsx
25
+ import { useState } from 'react'
26
+ import { AutoTextarea } from 'react-bootstrap-plugins'
27
+
28
+ function CommentForm() {
29
+ const [comment, setComment] = useState('')
30
+
31
+ return (
32
+ <AutoTextarea
33
+ name="comment"
34
+ value={comment}
35
+ onChange={e => setComment(e.target.value)}
36
+ placeholder="Write a comment…"
37
+ minRows={2}
38
+ maxRows={8}
39
+ />
40
+ )
41
+ }
42
+ ```
43
+
44
+ The textarea starts at `minRows` tall, grows line-by-line as the user types, and shows a scrollbar once content exceeds `maxRows`. It shrinks back down when content is removed.
45
+
46
+ ---
47
+
48
+ ## Capping Height in Pixels
49
+
50
+ When you need a hard pixel limit instead of a row count (e.g. fitting a fixed panel), pass `maxHeight`. It overrides the `maxRows`-derived limit — the textarea grows up to `maxHeight` pixels and becomes scrollable beyond it:
51
+
52
+ ```jsx
53
+ <AutoTextarea
54
+ value={notes}
55
+ onChange={e => setNotes(e.target.value)}
56
+ maxHeight={240} // grow to 240px, then scroll
57
+ />
58
+ ```
59
+
60
+ ---
61
+
62
+ ## Props
63
+
64
+ Accepts all standard `<textarea>` props (except `rows`, which is managed internally), plus:
65
+
66
+ | Prop | Type | Default | Description |
67
+ |---|---|---|---|
68
+ | `minRows` | `number` | `2` | Minimum number of visible rows |
69
+ | `maxRows` | `number` | `8` | Maximum number of rows before scrolling |
70
+ | `maxHeight` | `number` | — | Hard cap on height in **pixels**. Overrides `maxRows` when provided; content beyond it scrolls |
71
+ | `value` | `string` | — | Controlled value |
72
+ | `onChange` | `function` | — | Change handler (`e.target.value`) |
73
+ | `className` | `string` | — | Additional classes merged with `form-control` |
74
+ | `style` | `object` | — | Inline styles merged onto the textarea |
75
+
76
+ A `ref` is forwarded to the underlying `<textarea>` element.
77
+
78
+ ---
79
+
80
+ ## Behavior Notes
81
+
82
+ - Height recalculates on every value change, on user input (works uncontrolled too), and on window resize (line wrapping changes with width).
83
+ - `resize` is disabled — the component owns its height. Override via `style={{ resize: 'vertical' }}` if you must.
84
+ - Row limits are computed from the element's real `line-height`, padding, and border, so they stay correct across font sizes and Bootstrap size utilities.
85
+
86
+ ---
87
+
88
+ ## Dark Mode
89
+
90
+ Uses Bootstrap's `form-control` class, which adapts automatically. Set `data-bs-theme="dark"` on any parent element.
91
+
92
+ ---
93
+
94
+ ## Bundle Size
95
+
96
+ ~0.4 KB (min+gzip).
97
+
98
+ ---
99
+
100
+ ## See Also
101
+
102
+ - [DatePicker](./DATEPICKER.md) — Date, time, and datetime picker
103
+ - [SearchSelect](./SEARCHSELECT.md) — Filterable, searchable select dropdown
104
+ - [Label](./LABEL.md) — Bootstrap-styled form label with required indicator
105
+ - [TableLoading](./TABLELOADING.md) — Placeholder loading skeleton for tables
106
+ - [Main README](../README.md) — Package overview, installation, and general info
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-bootstrap-plugins",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "description": "Production-grade Bootstrap 5 UI plugins for React — DatePicker, SearchSelect, Label, TableLoading, and more. Zero runtime dependencies beyond React.",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -62,6 +62,16 @@
62
62
  "default": "./dist/TableLoading.cjs"
63
63
  }
64
64
  },
65
+ "./AutoTextarea": {
66
+ "import": {
67
+ "types": "./dist/AutoTextarea.d.ts",
68
+ "default": "./dist/AutoTextarea.js"
69
+ },
70
+ "require": {
71
+ "types": "./dist/AutoTextarea.d.ts",
72
+ "default": "./dist/AutoTextarea.cjs"
73
+ }
74
+ },
65
75
  "./css/plugins.css": "./dist/css/plugins.css",
66
76
  "./css/datepicker.css": "./dist/css/datepicker.css"
67
77
  },
@@ -102,6 +112,9 @@
102
112
  "table-loading",
103
113
  "placeholder",
104
114
  "skeleton",
115
+ "textarea",
116
+ "auto-resize",
117
+ "autosize",
105
118
  "ui-components",
106
119
  "react-bootstrap",
107
120
  "form-controls",
@@ -1,2 +0,0 @@
1
- import {a}from'./chunk-RR7TBRGI.js';import*as i from'react';import {createPortal}from'react-dom';import {jsxs,jsx,Fragment}from'react/jsx-runtime';var xe=["Su","Mo","Tu","We","Th","Fr","Sa"],Ye=["January","February","March","April","May","June","July","August","September","October","November","December"],Te=Array.from({length:60},(a,t)=>t),b=12,z=(a,t)=>new Date(a,t+1,0).getDate(),ae=(a,t)=>a!==null&&t!==null&&a.getFullYear()===t.getFullYear()&&a.getMonth()===t.getMonth()&&a.getDate()===t.getDate(),Ae=(a,t,s)=>!(t&&a<new Date(t.getFullYear(),t.getMonth(),t.getDate())||s&&a>new Date(s.getFullYear(),s.getMonth(),s.getDate())),He=(a,t)=>{let s=new Date(a,t,1).getDay(),p=z(a,t),m=[],g=z(a,t-1);for(let u=s-1;u>=0;u--){let M=g-u;m.push({day:M,date:new Date(a,t-1,M),isOutside:true});}for(let u=1;u<=p;u++)m.push({day:u,date:new Date(a,t,u),isOutside:false});let v=42-m.length;for(let u=1;u<=v;u++)m.push({day:u,date:new Date(a,t+1,u),isOutside:true});return m},_=(a,t,s)=>{if(!a||isNaN(a.getTime()))return "";let p=a.getFullYear(),m=String(a.getMonth()+1).padStart(2,"0"),g=String(a.getDate()).padStart(2,"0"),v=a.getHours(),u=String(a.getMinutes()).padStart(2,"0"),M=v>=12?"PM":"AM";v=v%12||12;let k=String(v).padStart(2,"0");if(s)return s.replace("yyyy",String(p)).replace("MM",m).replace("dd",g).replace("hh",k).replace("mm",u).replace("aa",M);switch(t){case "time":return `${k}:${u} ${M}`;case "datetime":return `${p}-${m}-${g} ${k}:${u} ${M}`;default:return `${p}-${m}-${g}`}},F=(a,t,s="date")=>({target:{value:a,name:t,type:s},preventDefault:()=>{},stopPropagation:()=>{},nativeEvent:null}),Ie={date:300,time:300,datetime:400,year:250},Fe=a=>{if(!a)return document.documentElement;let t=a.parentElement;for(;t;){let s=window.getComputedStyle(t),p=s.overflowY||s.overflow;if(p==="auto"||p==="scroll")return t;t=t.parentElement;}return document.documentElement},Le=(a,t)=>{if(!a)return {};let s=a.getBoundingClientRect(),p=t||300,m=window.innerHeight-s.bottom,g=s.top,v=m<p&&g>m,u=Math.max(s.width,window.innerWidth<576?220:260);return {position:"fixed",top:v?Math.max(4,s.top-p-4):s.bottom+4,left:Math.max(4,Math.min(s.left,window.innerWidth-u-4)),minWidth:u,maxWidth:window.innerWidth-8,zIndex:1070}},re=i.forwardRef(({className:a$1,mode:t="date",selected:s,value:p,onChange:m,dateFormat:g,placeholderText:v,size:u,isClearable:M=false,disabled:k=false,minDate:V,maxDate:q,timeIntervals:$e=5,timezone:We="Kampala",id:se,name:N,...ie},L)=>{let le=e=>{if(!e)return null;if(e instanceof Date)return isNaN(e.getTime())?null:e;if(typeof e=="string"||typeof e=="number"){let n=new Date(e);if(!isNaN(n.getTime()))return n;if(typeof e=="string"){let c=e.match(/^(\d{1,2}):(\d{2})\s*(AM|PM)$/i);if(c){let o=parseInt(c[1],10),h=parseInt(c[2],10),W=c[3].toUpperCase();o===12&&W==="AM"&&(o=0),o!==12&&W==="PM"&&(o+=12);let X=new Date;return new Date(X.getFullYear(),X.getMonth(),X.getDate(),o,h,0,0)}let d=e.match(/^(\d{4})-(\d{2})-(\d{2})\s+(\d{1,2}):(\d{2})\s*(AM|PM)$/i);if(d){let o=parseInt(d[4],10),h=parseInt(d[5],10),W=d[6].toUpperCase();return o===12&&W==="AM"&&(o=0),o!==12&&W==="PM"&&(o+=12),new Date(parseInt(d[1]),parseInt(d[2])-1,parseInt(d[3]),o,h,0,0)}}return null}return null},l=i.useMemo(()=>le(s??p),[s instanceof Date?s.getTime():s,p instanceof Date?p.getTime():p]),Z=t==="date"||t==="datetime",S=t==="time"||t==="datetime",[P,A]=i.useState(false),[E,K]=i.useState(()=>l?l.getFullYear():new Date().getFullYear()),[D,J]=i.useState(()=>l?l.getMonth():new Date().getMonth()),[y,R]=i.useState(l),[C,ee]=i.useState(()=>l&&l.getHours()%12||12),[x,te]=i.useState(()=>l?l.getMinutes():0),[Y,ne]=i.useState(()=>l&&l.getHours()>=12?"PM":"AM"),[U,H]=i.useState(false),[j,B]=i.useState(()=>Math.floor((l?l.getFullYear():new Date().getFullYear())/b)*b),[oe,ce]=i.useState({}),I=i.useRef(null),O=i.useRef(null),G=i.useRef(null);i.useEffect(()=>{let e=document.createElement("div");return e.className="datepicker-portal-root",document.body.appendChild(e),G.current=e,()=>{e.parentNode&&document.body.removeChild(e),G.current=null;}},[]),i.useEffect(()=>{l&&!isNaN(l.getTime())?(R(l),K(l.getFullYear()),J(l.getMonth()),ee(l.getHours()%12||12),te(l.getMinutes()),ne(l.getHours()>=12?"PM":"AM"),B(Math.floor(l.getFullYear()/b)*b)):R(null);},[l]),i.useEffect(()=>{if(!P)return;let e=()=>O.current?O.current.getBoundingClientRect().height:Ie[U?"year":t]||300,n=Fe(I.current),c=()=>{requestAnimationFrame(()=>{ce(Le(I.current,e()));});};return c(),n.addEventListener("scroll",c,{passive:true}),window.addEventListener("resize",c),()=>{n.removeEventListener("scroll",c),window.removeEventListener("resize",c);}},[P,t,U]),i.useEffect(()=>{if(!P)return;let e=n=>{O.current&&!O.current.contains(n.target)&&I.current&&!I.current.contains(n.target)&&(A(false),H(false));};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[P]);let T=(e,n,c,d)=>{let o=new Date(e),h=n%12;return d==="PM"&&(h+=12),h===12&&d==="AM"&&(h=0),o.setHours(h,c,0,0),o},$=e=>{if(!e||isNaN(e.getTime()))return;let n=_(e,t,g);m?.(F(n,N||"",t));},ue=e=>{if(!e){m?.(F(null,N||"",t)),A(false),H(false);return}$(e),t==="date"&&(A(false),H(false));},de=e=>{if(R(e),t==="date")ue(e);else if(t==="datetime"){let n=T(e,C,x,Y);$(n);}},me=He(E,D),pe=()=>{let e=E,n=D;D===0?(e=E-1,n=11):n=D-1,K(e),J(n);let c=y||new Date,d=z(e,n),o=new Date(e,n,Math.min(c.getDate(),d));R(o),$(S?T(o,C,x,Y):o);},fe=()=>{let e=E,n=D;D===11?(e=E+1,n=0):n=D+1,K(e),J(n);let c=y||new Date,d=z(e,n),o=new Date(e,n,Math.min(c.getDate(),d));R(o),$(S?T(o,C,x,Y):o);},ge=new Date,be=V?new Date(V.getFullYear(),V.getMonth(),V.getDate()):null,ve=q?new Date(q.getFullYear(),q.getMonth(),q.getDate()):null,De=e=>{if(ee(e),S){let n=T(y||new Date,e,x,Y);m?.(F(_(n,t,g),N||"",t));}},ye=e=>{if(te(e),S){let n=T(y||new Date,C,e,Y);m?.(F(_(n,t,g),N||"",t));}},he=e=>{if(ne(e),S){let n=T(y||new Date,C,x,e);m?.(F(_(n,t,g),N||"",t));}},we=()=>{B(Math.floor(E/b)*b),H(true);},Me=e=>{K(e),H(false);let n=y||new Date,c=z(e,D),d=new Date(e,D,Math.min(n.getDate(),c));R(d),$(S?T(d,C,x,Y):d);},Q=Math.floor(j/b)*b,ke=Array.from({length:b},(e,n)=>Q+n),Ne=e=>{e.stopPropagation(),R(null),m?.(F(null,N||""));},Se=e=>{e.key==="Escape"&&(A(false),H(false),I.current?.blur()),(e.key==="ArrowDown"||e.key==="Enter"||e.key===" ")&&(e.preventDefault(),A(true));},Pe=i.useCallback(e=>{I.current=e,typeof L=="function"?L(e):L&&(L.current=e);},[L]),Ee=v??(t==="time"?"Select time":t==="datetime"?"Select date & time":"Select date"),Re=jsxs("div",{ref:O,className:a("datepicker-popover card border shadow-sm",t==="datetime"&&"datepicker-popover--wide"),style:oe,children:[U&&Z&&jsxs("div",{className:"datepicker-year-picker p-3",children:[jsxs("div",{className:"d-flex align-items-center justify-content-between mb-2",children:[jsx("button",{type:"button",className:"btn btn-sm btn-outline-secondary border-0 px-1",onClick:()=>B(j-b),"aria-label":"Previous years",children:"\u2039"}),jsxs("span",{className:"fw-semibold small",children:[Q," \u2013 ",Q+b-1]}),jsx("button",{type:"button",className:"btn btn-sm btn-outline-secondary border-0 px-1",onClick:()=>B(j+b),"aria-label":"Next years",children:"\u203A"})]}),jsx("div",{className:"datepicker-year-grid",children:ke.map(e=>{let n=e===new Date().getFullYear(),c=y&&e===y.getFullYear();return jsx("button",{type:"button",className:a("datepicker-year-cell btn btn-sm",c&&"btn-primary",!c&&n&&"btn-outline-primary",!c&&!n&&"btn-light border"),onClick:()=>Me(e),children:e},e)})})]}),!U&&jsx(Fragment,{children:jsxs("div",{className:a("d-flex",t==="datetime"?"flex-row":"flex-column"),children:[Z&&jsxs("div",{className:"datepicker-calendar p-2",children:[jsxs("div",{className:"d-flex align-items-center justify-content-between mb-2",children:[jsx("button",{type:"button",className:"btn btn-sm btn-outline-secondary border-0 px-1",onClick:pe,"aria-label":"Previous month",children:"\u2039"}),jsxs("div",{className:"d-flex align-items-center gap-1",children:[jsx("span",{className:"fw-semibold small",children:Ye[D]}),jsx("button",{type:"button",className:"btn btn-sm btn-link text-decoration-none text-primary fw-semibold small p-0",onClick:we,"aria-label":"Choose year",children:E})]}),jsx("button",{type:"button",className:"btn btn-sm btn-outline-secondary border-0 px-1",onClick:fe,"aria-label":"Next month",children:"\u203A"})]}),jsx("div",{className:"datepicker-days-header",children:xe.map(e=>jsx("div",{className:"datepicker-day-label",children:e},e))}),jsx("div",{className:"datepicker-days-grid",children:me.map((e,n)=>{let c=ae(e.date,ge),d=y&&ae(e.date,y),o=Ae(e.date,be,ve),h=e.isOutside||!o;return jsx("button",{type:"button",disabled:h,className:a("datepicker-day",c&&"datepicker-day--today",d&&"datepicker-day--selected",e.isOutside&&"datepicker-day--outside",!o&&"datepicker-day--disabled"),onClick:()=>de(e.date),tabIndex:e.isOutside?-1:0,children:e.day},n)})})]}),t==="datetime"&&jsx("div",{className:"vr mx-1 my-2"}),S&&jsxs("div",{className:"datepicker-time p-2 d-flex flex-column",style:{minWidth:180},children:[t==="datetime"&&jsx("div",{className:"small fw-semibold text-muted text-center mb-1",children:"Time"}),jsxs("div",{className:"d-flex justify-content-center gap-2",children:[jsxs("div",{className:"datepicker-time-col",children:[jsx("div",{className:"datepicker-time-col-label",children:"Hour"}),jsx("div",{className:"datepicker-time-col-scroll",children:Array.from({length:12},(e,n)=>n+1).map(e=>jsx("button",{type:"button",className:a("datepicker-time-item",e===C&&"active"),onClick:()=>De(e),children:String(e).padStart(2,"0")},e))})]}),jsx("span",{className:"datepicker-time-separator",children:":"}),jsxs("div",{className:"datepicker-time-col",children:[jsx("div",{className:"datepicker-time-col-label",children:"Min"}),jsx("div",{className:"datepicker-time-col-scroll",children:Te.map(e=>jsx("button",{type:"button",className:a("datepicker-time-item",e===x&&"active"),onClick:()=>ye(e),children:String(e).padStart(2,"0")},e))})]}),jsxs("div",{className:"datepicker-time-col",children:[jsx("div",{className:"datepicker-time-col-label",children:"\xA0"}),jsx("div",{className:"d-flex flex-column gap-1 mt-1",children:["AM","PM"].map(e=>jsx("button",{type:"button",className:a("datepicker-time-item","datepicker-time-item--ampm",Y===e&&"active"),onClick:()=>he(e),children:e},e))})]})]})]})]})})]});return jsxs("div",{className:"datepicker-wrapper position-relative d-inline-block w-100",style:{minWidth:0},children:[jsxs("div",{className:"position-relative",children:[jsx("input",{ref:Pe,id:se,name:N,type:"text",readOnly:true,disabled:k,className:a("form-control",u==="sm"&&"form-control-sm",u==="lg"&&"form-control-lg","pe-5",a$1),placeholder:Ee,value:_(l,t,g),onClick:()=>!k&&A(!P),onKeyDown:Se,"aria-haspopup":"dialog","aria-expanded":P,autoComplete:"off",...ie}),M&&l&&!k&&jsx("button",{type:"button",className:"btn btn-sm btn-link position-absolute top-50 end-0 translate-middle-y pe-2 text-secondary",style:{zIndex:2},onClick:Ne,tabIndex:-1,"aria-label":"Clear",children:"\xD7"})]}),P&&!k&&G.current&&createPortal(Re,G.current)]})});re.displayName="DatePicker";var Ve=re;export{re as a,Ve as b};//# sourceMappingURL=chunk-ES5ABK5L.js.map
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb25lbnRzL0RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbIkRBWVNfT0ZfV0VFSyIsIk1PTlRIUyIsIk1JTlVURVMiLCJfIiwiaSIsIllFQVJTX1BFUl9QQUdFIiwiZGF5c0luTW9udGgiLCJ5ZWFyIiwibW9udGgiLCJpc1NhbWVEYXkiLCJiIiwiaXNEYXRlSW5SYW5nZSIsImRhdGUiLCJtaW4iLCJtYXgiLCJidWlsZENhbGVuZGFyR3JpZCIsImZpcnN0RGF5IiwidG90YWxEYXlzIiwiY2VsbHMiLCJwcmV2TW9udGhEYXlzIiwiZGF5IiwiZCIsInJlbWFpbmluZyIsImZvcm1hdFZhbHVlIiwibW9kZSIsImZtdCIsInkiLCJNIiwiaCIsIm0iLCJhIiwiaGgiLCJtYWtlRXZlbnQiLCJ2YWx1ZSIsImlucHV0TmFtZSIsInR5cGUiLCJQT1BPVkVSX0dVRVNTIiwiZ2V0U2Nyb2xsUGFyZW50IiwiZWwiLCJwYXJlbnQiLCJzdHlsZSIsIm92ZXJmbG93WSIsImNhbGNQb3BvdmVyU3R5bGUiLCJpbnB1dEVsIiwicG9wb3ZlckhlaWdodCIsInJlY3QiLCJzcGFjZUJlbG93Iiwic3BhY2VBYm92ZSIsInBsYWNlQWJvdmUiLCJtaW5XIiwiRGF0ZVBpY2tlciIsImNsYXNzTmFtZSIsInNlbGVjdGVkIiwib25DaGFuZ2UiLCJkYXRlRm9ybWF0IiwicGxhY2Vob2xkZXJUZXh0Iiwic2l6ZSIsImlzQ2xlYXJhYmxlIiwiZGlzYWJsZWQiLCJtaW5EYXRlIiwibWF4RGF0ZSIsInRpbWVJbnRlcnZhbHMiLCJ0aW1lem9uZSIsImlkIiwibmFtZSIsInByb3BzIiwicmVmIiwicmVzb2x2ZVZhbHVlIiwidiIsInRpbWVNYXRjaCIsImFwIiwibm93IiwiZHRNYXRjaCIsInJlc29sdmVkVmFsdWUiLCJzaG93Q2FsZW5kYXIiLCJzaG93VGltZSIsImlzT3BlbiIsInNldElzT3BlbiIsInZpZXdZZWFyIiwic2V0Vmlld1llYXIiLCJ2aWV3TW9udGgiLCJzZXRWaWV3TW9udGgiLCJ0ZW1wRGF0ZSIsInNldFRlbXBEYXRlIiwidGVtcEhvdXJzIiwic2V0VGVtcEhvdXJzIiwidGVtcE1pbnMiLCJzZXRUZW1wTWlucyIsInRlbXBBbVBtIiwic2V0VGVtcEFtUG0iLCJzaG93WWVhclBpY2tlciIsInNldFNob3dZZWFyUGlja2VyIiwieWVhclBhZ2UiLCJzZXRZZWFyUGFnZSIsInBvcG92ZXJTdHlsZSIsInNldFBvcG92ZXJTdHlsZSIsImlucHV0UmVmIiwicG9wb3ZlclJlZiIsInBvcnRhbFJlZiIsImdldEhlaWdodCIsInNjcm9sbFBhcmVudCIsInVwZGF0ZSIsImhhbmRsZXIiLCJlIiwiYnVpbGREYXRlIiwiYmFzZSIsImgxMiIsIm1pbnMiLCJhbXBtIiwiZmlyZUNoYW5nZSIsImZvcm1hdHRlZCIsImNvbW1pdCIsImNvbW1pdERhdGVPbmx5IiwiZ3JpZCIsImhhbmRsZVByZXZNb250aCIsIm5ld1kiLCJuZXdNIiwibWF4RCIsIm5ld0RhdGUiLCJoYW5kbGVOZXh0TW9udGgiLCJ0b2RheSIsIm1pbkR0IiwibWF4RHQiLCJoYW5kbGVIb3VyQ2hhbmdlIiwiaGFuZGxlTWluQ2hhbmdlIiwiaGFuZGxlQW1QbUNoYW5nZSIsIm9wZW5ZZWFyUGlja2VyIiwiaGFuZGxlWWVhclNlbGVjdCIsInllYXJQYWdlU3RhcnQiLCJ5ZWFycyIsImhhbmRsZUNsZWFyIiwiaGFuZGxlSW5wdXRLZXlEb3duIiwibWVyZ2VJbnB1dFJlZiIsIm5vZGUiLCJwbGFjZWhvbGRlciIsInBvcG92ZXIiLCJqc3hzIiwiY24iLCJqc3giLCJpc0N1cnJlbnRZZWFyIiwiaXNTZWxlY3RlZCIsIkZyYWdtZW50IiwiY2VsbCIsImlzVG9kYXkiLCJpblJhbmdlIiwiaXNEaXNhYmxlZERheSIsImNyZWF0ZVBvcnRhbCIsIkRhdGVQaWNrZXJfZGVmYXVsdCJdLCJtYXBwaW5ncyI6Im1KQTBEQSxJQUFNQSxFQUFBQSxDQUFlLENBQUMsSUFBQSxDQUFNLElBQUEsQ0FBTSxJQUFBLENBQU0sSUFBQSxDQUFNLElBQUEsQ0FB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QSxFQUFVLENBQUNsQixDQUFBQSxFQUFZd0MsQ0FBQUEsQ0FBVSxPQUFBLEVBQVdnRCxZQUFBQSxDQUFhWCxHQUFTckMsQ0FBQUEsQ0FBVSxPQUFPLENBQUEsQ0FBQSxDQUN0RixDQUVKLENBQUMsRUFFRGhELEVBQUFBLENBQVcsV0FBQSxDQUFjLFlBQUEsS0FHbEJpRyxFQUFBQSxDQUFRakciLCJmaWxlIjoiY2h1bmstRVM1QUJLNUwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi4vbGliL2NuLmpzJ1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qICBUeXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVQaWNrZXJDaGFuZ2VFdmVudCB7XG4gIHRhcmdldDoge1xuICAgIHZhbHVlOiBzdHJpbmcgfCBudWxsXG4gICAgbmFtZTogc3RyaW5nXG4gICAgdHlwZTogc3RyaW5nXG4gIH1cbiAgcHJldmVudERlZmF1bHQ6ICgpID0+IHZvaWRcbiAgc3RvcFByb3BhZ2F0aW9uOiAoKSA9PiB2b2lkXG4gIG5hdGl2ZUV2ZW50OiBudWxsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVBpY2tlclByb3BzIHtcbiAgLyoqIFBpY2tlciBtb2RlIChkZWZhdWx0ICdkYXRlJykgKi9cbiAgbW9kZT86ICdkYXRlJyB8ICd0aW1lJyB8ICdkYXRldGltZSdcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBEYXRlIChhbGlhcyBmb3IgdmFsdWUpICovXG4gIHNlbGVjdGVkPzogRGF0ZSB8IG51bGxcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBEYXRlLCBJU08gc3RyaW5nLCBcImhoOm1tIEFBXCIgdGltZSBzdHJpbmcsIFwiWVlZWS1NTS1ERCBoaDptbSBBQVwiIGRhdGV0aW1lIHN0cmluZywgb3IgdGltZXN0YW1wICovXG4gIHZhbHVlPzogRGF0ZSB8IHN0cmluZyB8IG51bWJlciB8IG51bGxcbiAgLyoqIFN5bnRoZXRpYyBldmVudCBoYW5kbGVyIOKAlCBlLnRhcmdldC52YWx1ZSBpcyBhIHByZS1mb3JtYXR0ZWQgc3RyaW5nICovXG4gIG9uQ2hhbmdlPzogKGU6IERhdGVQaWNrZXJDaGFuZ2VFdmVudCkgPT4gdm9pZFxuICAvKiogRGlzcGxheSBmb3JtYXQgd2l0aCB0b2tlbnM6IHl5eXksIE1NLCBkZCwgaGgsIG1tLCBhYSAqL1xuICBkYXRlRm9ybWF0Pzogc3RyaW5nXG4gIC8qKiBQbGFjZWhvbGRlciB0ZXh0IHdoZW4gZW1wdHkgKi9cbiAgcGxhY2Vob2xkZXJUZXh0Pzogc3RyaW5nXG4gIC8qKiBCb290c3RyYXAgc2l6ZSB2YXJpYW50ICovXG4gIHNpemU/OiAnc20nIHwgJ2xnJ1xuICAvKiogU2hvdyBhIGNsZWFyIGJ1dHRvbiBvbiB0aGUgaW5wdXQgKi9cbiAgaXNDbGVhcmFibGU/OiBib29sZWFuXG4gIC8qKiBEaXNhYmxlIHRoZSBpbnB1dCAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgLyoqIEVhcmxpZXN0IHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtaW5EYXRlPzogRGF0ZVxuICAvKiogTGF0ZXN0IHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtYXhEYXRlPzogRGF0ZVxuICAvKiogTWludXRlIHN0ZXAgaW4gdGhlIHRpbWUgbGlzdCAoZGVmYXVsdCA1KSAqL1xuICB0aW1lSW50ZXJ2YWxzPzogbnVtYmVyXG4gIC8qKiBUaW1lem9uZSBpZGVudGlmaWVyIChkZWZhdWx0ICdLYW1wYWxhJykgKi9cbiAgdGltZXpvbmU/OiBzdHJpbmdcbiAgLyoqIEFkZGl0aW9uYWwgQ1NTIGNsYXNzZXMgb24gdGhlIGlucHV0ICovXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKiogSW5wdXQgZWxlbWVudCBJRCAqL1xuICBpZD86IHN0cmluZ1xuICAvKiogSW5wdXQgbmFtZSBhdHRyaWJ1dGUg4oCUIHN1cmZhY2VzIGFzIGUudGFyZ2V0Lm5hbWUgaW4gb25DaGFuZ2UgKi9cbiAgbmFtZT86IHN0cmluZ1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qICBDb25zdGFudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmNvbnN0IERBWVNfT0ZfV0VFSyA9IFsnU3UnLCAnTW8nLCAnVHUnLCAnV2UnLCAnVGgnLCAnRnInLCAnU2EnXVxuY29uc3QgTU9OVEhTID0gW1xuICAnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsXG4gICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlcicsXG5dXG5jb25zdCBNSU5VVEVTID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogNjAgfSwgKF8sIGkpID0+IGkpXG5jb25zdCBZRUFSU19QRVJfUEFHRSA9IDEyXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogIEhlbHBlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuY29uc3QgZGF5c0luTW9udGggPSAoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyKTogbnVtYmVyID0+XG4gIG5ldyBEYXRlKHllYXIsIG1vbnRoICsgMSwgMCkuZ2V0RGF0ZSgpXG5cbmNvbnN0IGlzU2FtZURheSA9IChhOiBEYXRlIHwgbnVsbCwgYjogRGF0ZSB8IG51bGwpOiBib29sZWFuID0+XG4gIGEgIT09IG51bGwgJiYgYiAhPT0gbnVsbCAmJlxuICBhLmdldEZ1bGxZZWFyKCkgPT09IGIuZ2V0RnVsbFllYXIoKSAmJlxuICBhLmdldE1vbnRoKCkgPT09IGIuZ2V0TW9udGgoKSAmJlxuICBhLmdldERhdGUoKSA9PT0gYi5nZXREYXRlKClcblxuY29uc3QgaXNEYXRlSW5SYW5nZSA9IChkYXRlOiBEYXRlLCBtaW46IERhdGUgfCBudWxsLCBtYXg6IERhdGUgfCBudWxsKTogYm9vbGVhbiA9PiB7XG4gIGlmIChtaW4gJiYgZGF0ZSA8IG5ldyBEYXRlKG1pbi5nZXRGdWxsWWVhcigpLCBtaW4uZ2V0TW9udGgoKSwgbWluLmdldERhdGUoKSkpIHJldHVybiBmYWxzZVxuICBpZiAobWF4ICYmIGRhdGUgPiBuZXcgRGF0ZShtYXguZ2V0RnVsbFllYXIoKSwgbWF4LmdldE1vbnRoKCksIG1heC5nZXREYXRlKCkpKSByZXR1cm4gZmFsc2VcbiAgcmV0dXJuIHRydWVcbn1cblxuaW50ZXJmYWNlIENhbGVuZGFyQ2VsbCB7XG4gIGRheTogbnVtYmVyXG4gIGRhdGU6IERhdGVcbiAgaXNPdXRzaWRlOiBib29sZWFuXG59XG5cbmNvbnN0IGJ1aWxkQ2FsZW5kYXJHcmlkID0gKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcik6IENhbGVuZGFyQ2VsbFtdID0+IHtcbiAgY29uc3QgZmlyc3REYXkgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSkuZ2V0RGF5KClcbiAgY29uc3QgdG90YWxEYXlzID0gZGF5c0luTW9udGgoeWVhciwgbW9udGgpXG4gIGNvbnN0IGNlbGxzOiBDYWxlbmRhckNlbGxbXSA9IFtdXG5cbiAgY29uc3QgcHJldk1vbnRoRGF5cyA9IGRheXNJbk1vbnRoKHllYXIsIG1vbnRoIC0gMSlcbiAgZm9yIChsZXQgaSA9IGZpcnN0RGF5IC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBjb25zdCBkYXkgPSBwcmV2TW9udGhEYXlzIC0gaVxuICAgIGNlbGxzLnB1c2goeyBkYXksIGRhdGU6IG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgZGF5KSwgaXNPdXRzaWRlOiB0cnVlIH0pXG4gIH1cblxuICBmb3IgKGxldCBkID0gMTsgZCA8PSB0b3RhbERheXM7IGQrKykge1xuICAgIGNlbGxzLnB1c2goeyBkYXk6IGQsIGRhdGU6IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkKSwgaXNPdXRzaWRlOiBmYWxzZSB9KVxuICB9XG5cbiAgY29uc3QgcmVtYWluaW5nID0gNDIgLSBjZWxscy5sZW5ndGhcbiAgZm9yIChsZXQgZCA9IDE7IGQgPD0gcmVtYWluaW5nOyBkKyspIHtcbiAgICBjZWxscy5wdXNoKHsgZGF5OiBkLCBkYXRlOiBuZXcgRGF0ZSh5ZWFyLCBtb250aCArIDEsIGQpLCBpc091dHNpZGU6IHRydWUgfSlcbiAgfVxuXG4gIHJldHVybiBjZWxsc1xufVxuXG5jb25zdCBmb3JtYXRWYWx1ZSA9IChkYXRlOiBEYXRlIHwgbnVsbCwgbW9kZTogc3RyaW5nLCBmbXQ/OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBpZiAoIWRhdGUgfHwgaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSByZXR1cm4gJydcblxuICBjb25zdCB5ID0gZGF0ZS5nZXRGdWxsWWVhcigpXG4gIGNvbnN0IE0gPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKVxuICBjb25zdCBkID0gU3RyaW5nKGRhdGUuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpXG4gIGxldCBoID0gZGF0ZS5nZXRIb3VycygpXG4gIGNvbnN0IG0gPSBTdHJpbmcoZGF0ZS5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsICcwJylcbiAgY29uc3QgYSA9IGggPj0gMTIgPyAnUE0nIDogJ0FNJ1xuICBoID0gaCAlIDEyIHx8IDEyXG4gIGNvbnN0IGhoID0gU3RyaW5nKGgpLnBhZFN0YXJ0KDIsICcwJylcblxuICBpZiAoZm10KSB7XG4gICAgcmV0dXJuIGZtdC5yZXBsYWNlKCd5eXl5JywgU3RyaW5nKHkpKS5yZXBsYWNlKCdNTScsIE0pLnJlcGxhY2UoJ2RkJywgZCkucmVwbGFjZSgnaGgnLCBoaCkucmVwbGFjZSgnbW0nLCBtKS5yZXBsYWNlKCdhYScsIGEpXG4gIH1cblxuICBzd2l0Y2ggKG1vZGUpIHtcbiAgICBjYXNlICd0aW1lJzogICAgIHJldHVybiBgJHtoaH06JHttfSAke2F9YFxuICAgIGNhc2UgJ2RhdGV0aW1lJzogcmV0dXJuIGAke3l9LSR7TX0tJHtkfSAke2hofToke219ICR7YX1gXG4gICAgZGVmYXVsdDogICAgICAgICByZXR1cm4gYCR7eX0tJHtNfS0ke2R9YFxuICB9XG59XG5cbi8qKlxuICogQnVpbGQgYSBzeW50aGV0aWMgZXZlbnQgb2JqZWN0IGxpa2UgYSBuYXRpdmUgaW5wdXQncyBvbkNoYW5nZS5cbiAqL1xuY29uc3QgbWFrZUV2ZW50ID0gKHZhbHVlOiBzdHJpbmcgfCBudWxsLCBpbnB1dE5hbWU6IHN0cmluZywgdHlwZTogc3RyaW5nID0gJ2RhdGUnKTogRGF0ZVBpY2tlckNoYW5nZUV2ZW50ID0+ICh7XG4gIHRhcmdldDoge1xuICAgIHZhbHVlLFxuICAgIG5hbWU6IGlucHV0TmFtZSxcbiAgICB0eXBlLFxuICB9LFxuICBwcmV2ZW50RGVmYXVsdDogKCkgPT4ge30sXG4gIHN0b3BQcm9wYWdhdGlvbjogKCkgPT4ge30sXG4gIG5hdGl2ZUV2ZW50OiBudWxsLFxufSlcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAgUG9wb3ZlciBwb3NpdGlvbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKiogQXBwcm94aW1hdGUgaGVpZ2h0cyDigJQgdXNlZCBhcyBhIGZpcnN0IGd1ZXNzIGJlZm9yZSB0aGUgcmVhbCBET00gaGVpZ2h0IGlzIG1lYXN1cmVkLiAqL1xuY29uc3QgUE9QT1ZFUl9HVUVTUzogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHsgZGF0ZTogMzAwLCB0aW1lOiAzMDAsIGRhdGV0aW1lOiA0MDAsIHllYXI6IDI1MCB9XG5cbi8qKlxuICogRmluZCB0aGUgbmVhcmVzdCBzY3JvbGxhYmxlIGFuY2VzdG9yIChmb3IgY2FwdHVyaW5nIHNjcm9sbCBldmVudHMgaW5zaWRlXG4gKiBtb2RhbHMgLyBzaWRlIHBhbmVscyAvIGN1c3RvbSBjb250YWluZXJzKS5cbiAqL1xuY29uc3QgZ2V0U2Nyb2xsUGFyZW50ID0gKGVsOiBIVE1MRWxlbWVudCB8IG51bGwpOiBIVE1MRWxlbWVudCA9PiB7XG4gIGlmICghZWwpIHJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRcbiAgbGV0IHBhcmVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gZWwucGFyZW50RWxlbWVudFxuICB3aGlsZSAocGFyZW50KSB7XG4gICAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShwYXJlbnQpXG4gICAgY29uc3Qgb3ZlcmZsb3dZID0gc3R5bGUub3ZlcmZsb3dZIHx8IHN0eWxlLm92ZXJmbG93XG4gICAgaWYgKG92ZXJmbG93WSA9PT0gJ2F1dG8nIHx8IG92ZXJmbG93WSA9PT0gJ3Njcm9sbCcpIHJldHVybiBwYXJlbnRcbiAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50RWxlbWVudFxuICB9XG4gIHJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRcbn1cblxuY29uc3QgY2FsY1BvcG92ZXJTdHlsZSA9IChpbnB1dEVsOiBIVE1MRWxlbWVudCB8IG51bGwsIHBvcG92ZXJIZWlnaHQ6IG51bWJlcik6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPT4ge1xuICBpZiAoIWlucHV0RWwpIHJldHVybiB7fVxuICBjb25zdCByZWN0ID0gaW5wdXRFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICBjb25zdCBoID0gcG9wb3ZlckhlaWdodCB8fCAzMDBcblxuICBjb25zdCBzcGFjZUJlbG93ID0gd2luZG93LmlubmVySGVpZ2h0IC0gcmVjdC5ib3R0b21cbiAgY29uc3Qgc3BhY2VBYm92ZSA9IHJlY3QudG9wXG5cbiAgLyogT25seSBmbGlwIGFib3ZlIHdoZW4gYmVsb3cgaXMgdHJ1bHkgdG9vIHRpZ2h0IEFORCBhYm92ZSBvZmZlcnMgbW9yZSByb29tICovXG4gIGNvbnN0IHBsYWNlQWJvdmUgPSBzcGFjZUJlbG93IDwgaCAmJiBzcGFjZUFib3ZlID4gc3BhY2VCZWxvd1xuXG4gIC8qIFJlc3BvbnNpdmU6IHVzZSBzbWFsbGVyIG1pbi13aWR0aCBvbiBtb2JpbGUgdG8gcHJldmVudCBvdmVyZmxvdyAqL1xuICBjb25zdCBtaW5XID0gTWF0aC5tYXgocmVjdC53aWR0aCwgd2luZG93LmlubmVyV2lkdGggPCA1NzYgPyAyMjAgOiAyNjApXG5cbiAgcmV0dXJuIHtcbiAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICB0b3A6IHBsYWNlQWJvdmUgPyBNYXRoLm1heCg0LCByZWN0LnRvcCAtIGggLSA0KSA6IHJlY3QuYm90dG9tICsgNCxcbiAgICBsZWZ0OiBNYXRoLm1heCg0LCBNYXRoLm1pbihyZWN0LmxlZnQsIHdpbmRvdy5pbm5lcldpZHRoIC0gbWluVyAtIDQpKSxcbiAgICBtaW5XaWR0aDogbWluVyxcbiAgICBtYXhXaWR0aDogd2luZG93LmlubmVyV2lkdGggLSA4LFxuICAgIHpJbmRleDogMTA3MCxcbiAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qICBEYXRlUGlja2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogQ3VzdG9tIEJvb3RzdHJhcC1zdHlsZWQgZGF0ZSAvIHRpbWUgLyBkYXRldGltZSBwaWNrZXIuIFplcm8gZGVwZW5kZW5jaWVzLlxuICpcbiAqICoqSW1wb3J0YW50OioqIFRoZSBhY2NvbXBhbnlpbmcgQ1NTICoqbXVzdCoqIGJlIGltcG9ydGVkIGZvciB0aGUgcGlja2VyIHRvIHJlbmRlciBjb3JyZWN0bHk6XG4gKiBgYGBqc1xuICogaW1wb3J0ICdyZWFjdC1ib290c3RyYXAtcGx1Z2lucy9jc3MvcGx1Z2lucy5jc3MnXG4gKiBgYGBcbiAqL1xuY29uc3QgRGF0ZVBpY2tlciA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTElucHV0RWxlbWVudCwgRGF0ZVBpY2tlclByb3BzPigoe1xuICBjbGFzc05hbWUsXG4gIG1vZGUgPSAnZGF0ZScsXG4gIHNlbGVjdGVkLFxuICB2YWx1ZSxcbiAgb25DaGFuZ2UsXG4gIGRhdGVGb3JtYXQsXG4gIHBsYWNlaG9sZGVyVGV4dCxcbiAgc2l6ZSxcbiAgaXNDbGVhcmFibGUgPSBmYWxzZSxcbiAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgbWluRGF0ZSxcbiAgbWF4RGF0ZSxcbiAgdGltZUludGVydmFscyA9IDUsXG4gIHRpbWV6b25lID0gJ0thbXBhbGEnLFxuICBpZCxcbiAgbmFtZSxcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICAvKiAtLS0tIGRlcml2ZWQgLS0tLSAqL1xuICBjb25zdCByZXNvbHZlVmFsdWUgPSAodjogRGF0ZSB8IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpOiBEYXRlIHwgbnVsbCA9PiB7XG4gICAgaWYgKCF2KSByZXR1cm4gbnVsbFxuICAgIGlmICh2IGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIGlzTmFOKHYuZ2V0VGltZSgpKSA/IG51bGwgOiB2XG4gICAgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdiA9PT0gJ251bWJlcicpIHtcbiAgICAgIC8vIFN0YW5kYXJkIERhdGUgcGFyc2luZyAod29ya3MgZm9yIElTTyA4NjAxLCBcIllZWVktTU0tRERcIiwgZXRjLilcbiAgICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSh2KVxuICAgICAgaWYgKCFpc05hTihkLmdldFRpbWUoKSkpIHJldHVybiBkXG5cbiAgICAgIC8vIEhhbmRsZSB0aW1lLW9ubHkgc3RyaW5ncyBmcm9tIGZvcm1hdFZhbHVlOiBcImhoOm1tIEFBXCJcbiAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3QgdGltZU1hdGNoID0gdi5tYXRjaCgvXihcXGR7MSwyfSk6KFxcZHsyfSlcXHMqKEFNfFBNKSQvaSlcbiAgICAgICAgaWYgKHRpbWVNYXRjaCkge1xuICAgICAgICAgIGxldCBoID0gcGFyc2VJbnQodGltZU1hdGNoWzFdLCAxMClcbiAgICAgICAgICBjb25zdCBtID0gcGFyc2VJbnQodGltZU1hdGNoWzJdLCAxMClcbiAgICAgICAgICBjb25zdCBhcCA9IHRpbWVNYXRjaFszXS50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgaWYgKGggPT09IDEyICYmIGFwID09PSAnQU0nKSBoID0gMFxuICAgICAgICAgIGlmIChoICE9PSAxMiAmJiBhcCA9PT0gJ1BNJykgaCArPSAxMlxuICAgICAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKClcbiAgICAgICAgICByZXR1cm4gbmV3IERhdGUobm93LmdldEZ1bGxZZWFyKCksIG5vdy5nZXRNb250aCgpLCBub3cuZ2V0RGF0ZSgpLCBoLCBtLCAwLCAwKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGFuZGxlIGRhdGV0aW1lIHN0cmluZ3MgZnJvbSBmb3JtYXRWYWx1ZTogXCJZWVlZLU1NLUREIGhoOm1tIEFBXCJcbiAgICAgICAgY29uc3QgZHRNYXRjaCA9IHYubWF0Y2goL14oXFxkezR9KS0oXFxkezJ9KS0oXFxkezJ9KVxccysoXFxkezEsMn0pOihcXGR7Mn0pXFxzKihBTXxQTSkkL2kpXG4gICAgICAgIGlmIChkdE1hdGNoKSB7XG4gICAgICAgICAgbGV0IGggPSBwYXJzZUludChkdE1hdGNoWzRdLCAxMClcbiAgICAgICAgICBjb25zdCBtID0gcGFyc2VJbnQoZHRNYXRjaFs1XSwgMTApXG4gICAgICAgICAgY29uc3QgYXAgPSBkdE1hdGNoWzZdLnRvVXBwZXJDYXNlKClcbiAgICAgICAgICBpZiAoaCA9PT0gMTIgJiYgYXAgPT09ICdBTScpIGggPSAwXG4gICAgICAgICAgaWYgKGggIT09IDEyICYmIGFwID09PSAnUE0nKSBoICs9IDEyXG4gICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHBhcnNlSW50KGR0TWF0Y2hbMV0pLCBwYXJzZUludChkdE1hdGNoWzJdKSAtIDEsIHBhcnNlSW50KGR0TWF0Y2hbM10pLCBoLCBtLCAwLCAwKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IHJlc29sdmVkVmFsdWUgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IHJlc29sdmVWYWx1ZShzZWxlY3RlZCA/PyB2YWx1ZSksXG4gICAgW1xuICAgICAgc2VsZWN0ZWQgaW5zdGFuY2VvZiBEYXRlID8gc2VsZWN0ZWQuZ2V0VGltZSgpIDogc2VsZWN0ZWQsXG4gICAgICB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZS5nZXRUaW1lKCkgOiB2YWx1ZSxcbiAgICBdLFxuICApXG4gIGNvbnN0IHNob3dDYWxlbmRhciA9IG1vZGUgPT09ICdkYXRlJyB8fCBtb2RlID09PSAnZGF0ZXRpbWUnXG4gIGNvbnN0IHNob3dUaW1lID0gbW9kZSA9PT0gJ3RpbWUnIHx8IG1vZGUgPT09ICdkYXRldGltZSdcblxuICAvKiAtLS0tIGludGVybmFsIHN0YXRlIC0tLS0gKi9cbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbdmlld1llYXIsIHNldFZpZXdZZWFyXSA9IFJlYWN0LnVzZVN0YXRlKCgpID0+XG4gICAgcmVzb2x2ZWRWYWx1ZSA/IHJlc29sdmVkVmFsdWUuZ2V0RnVsbFllYXIoKSA6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSlcbiAgY29uc3QgW3ZpZXdNb250aCwgc2V0Vmlld01vbnRoXSA9IFJlYWN0LnVzZVN0YXRlKCgpID0+XG4gICAgcmVzb2x2ZWRWYWx1ZSA/IHJlc29sdmVkVmFsdWUuZ2V0TW9udGgoKSA6IG5ldyBEYXRlKCkuZ2V0TW9udGgoKSlcbiAgY29uc3QgW3RlbXBEYXRlLCBzZXRUZW1wRGF0ZV0gPSBSZWFjdC51c2VTdGF0ZTxEYXRlIHwgbnVsbD4ocmVzb2x2ZWRWYWx1ZSlcbiAgY29uc3QgW3RlbXBIb3Vycywgc2V0VGVtcEhvdXJzXSA9IFJlYWN0LnVzZVN0YXRlKCgpID0+XG4gICAgcmVzb2x2ZWRWYWx1ZSA/IChyZXNvbHZlZFZhbHVlLmdldEhvdXJzKCkgJSAxMiB8fCAxMikgOiAxMilcbiAgY29uc3QgW3RlbXBNaW5zLCBzZXRUZW1wTWluc10gPSBSZWFjdC51c2VTdGF0ZSgoKSA9PlxuICAgIHJlc29sdmVkVmFsdWUgPyByZXNvbHZlZFZhbHVlLmdldE1pbnV0ZXMoKSA6IDApXG4gIGNvbnN0IFt0ZW1wQW1QbSwgc2V0VGVtcEFtUG1dID0gUmVhY3QudXNlU3RhdGUoKCkgPT5cbiAgICByZXNvbHZlZFZhbHVlID8gKHJlc29sdmVkVmFsdWUuZ2V0SG91cnMoKSA+PSAxMiA/ICdQTScgOiAnQU0nKSA6ICdBTScpXG4gIGNvbnN0IFtzaG93WWVhclBpY2tlciwgc2V0U2hvd1llYXJQaWNrZXJdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFt5ZWFyUGFnZSwgc2V0WWVhclBhZ2VdID0gUmVhY3QudXNlU3RhdGUoKCkgPT5cbiAgICBNYXRoLmZsb29yKChyZXNvbHZlZFZhbHVlID8gcmVzb2x2ZWRWYWx1ZS5nZXRGdWxsWWVhcigpIDogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpKSAvIFlFQVJTX1BFUl9QQUdFKSAqIFlFQVJTX1BFUl9QQUdFXG4gIClcbiAgY29uc3QgW3BvcG92ZXJTdHlsZSwgc2V0UG9wb3ZlclN0eWxlXSA9IFJlYWN0LnVzZVN0YXRlPFJlYWN0LkNTU1Byb3BlcnRpZXM+KHt9KVxuXG4gIGNvbnN0IGlucHV0UmVmID0gUmVhY3QudXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHBvcG92ZXJSZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHBvcnRhbFJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpXG5cbiAgLyogLS0tLSBwb3J0YWwgY29udGFpbmVyIC0tLS0gKi9cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgZWwuY2xhc3NOYW1lID0gJ2RhdGVwaWNrZXItcG9ydGFsLXJvb3QnXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbClcbiAgICBwb3J0YWxSZWYuY3VycmVudCA9IGVsXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChlbC5wYXJlbnROb2RlKSBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsKVxuICAgICAgcG9ydGFsUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgfVxuICB9LCBbXSlcblxuICAvKiAtLS0tIHN5bmMgdGVtcCBzdGF0ZSB3aGVuIHZhbHVlIGNoYW5nZXMgZXh0ZXJuYWxseSAtLS0tICovXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlc29sdmVkVmFsdWUgJiYgIWlzTmFOKHJlc29sdmVkVmFsdWUuZ2V0VGltZSgpKSkge1xuICAgICAgc2V0VGVtcERhdGUocmVzb2x2ZWRWYWx1ZSlcbiAgICAgIHNldFZpZXdZZWFyKHJlc29sdmVkVmFsdWUuZ2V0RnVsbFllYXIoKSlcbiAgICAgIHNldFZpZXdNb250aChyZXNvbHZlZFZhbHVlLmdldE1vbnRoKCkpXG4gICAgICBzZXRUZW1wSG91cnMocmVzb2x2ZWRWYWx1ZS5nZXRIb3VycygpICUgMTIgfHwgMTIpXG4gICAgICBzZXRUZW1wTWlucyhyZXNvbHZlZFZhbHVlLmdldE1pbnV0ZXMoKSlcbiAgICAgIHNldFRlbXBBbVBtKHJlc29sdmVkVmFsdWUuZ2V0SG91cnMoKSA+PSAxMiA/ICdQTScgOiAnQU0nKVxuICAgICAgc2V0WWVhclBhZ2UoTWF0aC5mbG9vcihyZXNvbHZlZFZhbHVlLmdldEZ1bGxZZWFyKCkgLyBZRUFSU19QRVJfUEFHRSkgKiBZRUFSU19QRVJfUEFHRSlcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VGVtcERhdGUobnVsbClcbiAgICB9XG4gIH0sIFtyZXNvbHZlZFZhbHVlXSlcblxuICAvKiAtLS0tIHJlcG9zaXRpb24gcG9wb3ZlciBvbiBvcGVuIC8gc2Nyb2xsIC8gcmVzaXplIC0tLS0gKi9cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzT3BlbikgcmV0dXJuXG5cbiAgICAvKiBNZWFzdXJlIGFjdHVhbCBwb3BvdmVyIGhlaWdodCBzbyB3ZSBwb3NpdGlvbiB3aXRoIG5vIHdhc3RlZCBzcGFjZSAqL1xuICAgIGNvbnN0IGdldEhlaWdodCA9ICgpOiBudW1iZXIgPT4ge1xuICAgICAgaWYgKHBvcG92ZXJSZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm4gcG9wb3ZlclJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodFxuICAgICAgfVxuICAgICAgcmV0dXJuIFBPUE9WRVJfR1VFU1Nbc2hvd1llYXJQaWNrZXIgPyAneWVhcicgOiBtb2RlXSB8fCAzMDBcbiAgICB9XG5cbiAgICBjb25zdCBzY3JvbGxQYXJlbnQgPSBnZXRTY3JvbGxQYXJlbnQoaW5wdXRSZWYuY3VycmVudClcblxuICAgIGNvbnN0IHVwZGF0ZSA9ICgpID0+IHtcbiAgICAgIC8qIEZvcmNlIGEgcGFpbnQgZnJhbWUgc28gdGhlIHBvcG92ZXIgaGFzIGl0cyByZWFsIHNpemUgKi9cbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHNldFBvcG92ZXJTdHlsZShjYWxjUG9wb3ZlclN0eWxlKGlucHV0UmVmLmN1cnJlbnQsIGdldEhlaWdodCgpKSlcbiAgICAgIH0pXG4gICAgfVxuICAgIHVwZGF0ZSgpXG5cbiAgICAvKiBMaXN0ZW4gb24gdGhlIG5lYXJlc3Qgc2Nyb2xsYWJsZSBhbmNlc3RvciAoZS5nLiBtb2RhbCBib2R5KSBBTkQgdGhlIHdpbmRvdyAqL1xuICAgIHNjcm9sbFBhcmVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUsIHsgcGFzc2l2ZTogdHJ1ZSB9KVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHNjcm9sbFBhcmVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUpXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKVxuICAgIH1cbiAgfSwgW2lzT3BlbiwgbW9kZSwgc2hvd1llYXJQaWNrZXJdKVxuXG4gIC8qIC0tLS0gY2xpY2sgb3V0c2lkZSB0byBjbG9zZSAtLS0tICovXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc09wZW4pIHJldHVyblxuICAgIGNvbnN0IGhhbmRsZXIgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKHBvcG92ZXJSZWYuY3VycmVudCAmJiAhcG9wb3ZlclJlZi5jdXJyZW50LmNvbnRhaW5zKGUudGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgICAgICAgaW5wdXRSZWYuY3VycmVudCAmJiAhaW5wdXRSZWYuY3VycmVudC5jb250YWlucyhlLnRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgICBzZXRJc09wZW4oZmFsc2UpXG4gICAgICAgIHNldFNob3dZZWFyUGlja2VyKGZhbHNlKVxuICAgICAgfVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVyKVxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVyKVxuICB9LCBbaXNPcGVuXSlcblxuICAvKiAtLS0tIGNvbW1pdCBoZWxwZXJzIC0tLS0gKi9cbiAgY29uc3QgYnVpbGREYXRlID0gKGJhc2U6IERhdGUsIGgxMjogbnVtYmVyLCBtaW5zOiBudW1iZXIsIGFtcG06IHN0cmluZyk6IERhdGUgPT4ge1xuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShiYXNlKVxuICAgIGxldCBoID0gaDEyICUgMTJcbiAgICBpZiAoYW1wbSA9PT0gJ1BNJykgaCArPSAxMlxuICAgIGlmIChoID09PSAxMiAmJiBhbXBtID09PSAnQU0nKSBoID0gMFxuICAgIGQuc2V0SG91cnMoaCwgbWlucywgMCwgMClcbiAgICByZXR1cm4gZFxuICB9XG5cbiAgLyoqXG4gICAqIEZpcmUgb25DaGFuZ2Ugd2l0aCBhIHByZS1idWlsdCBkYXRlIHdpdGhvdXQgY2xvc2luZyB0aGUgcG9wb3Zlci5cbiAgICogQ2FsbGVycyBtdXN0IGJ1aWxkIHRoZSBjb21wbGV0ZSBkYXRlIChpbmNsdWRpbmcgdGltZSkgYmVmb3JlIHBhc3NpbmcgaXQgaW4uXG4gICAqL1xuICBjb25zdCBmaXJlQ2hhbmdlID0gKGRhdGU6IERhdGUgfCBudWxsKTogdm9pZCA9PiB7XG4gICAgaWYgKCFkYXRlIHx8IGlzTmFOKGRhdGUuZ2V0VGltZSgpKSkgcmV0dXJuXG4gICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0VmFsdWUoZGF0ZSwgbW9kZSwgZGF0ZUZvcm1hdClcbiAgICBvbkNoYW5nZT8uKG1ha2VFdmVudChmb3JtYXR0ZWQsIG5hbWUgfHwgJycsIG1vZGUpKVxuICB9XG5cbiAgY29uc3QgY29tbWl0ID0gKGRhdGU6IERhdGUgfCBudWxsKTogdm9pZCA9PiB7XG4gICAgaWYgKCFkYXRlKSB7XG4gICAgICBvbkNoYW5nZT8uKG1ha2VFdmVudChudWxsLCBuYW1lIHx8ICcnLCBtb2RlKSlcbiAgICAgIHNldElzT3BlbihmYWxzZSlcbiAgICAgIHNldFNob3dZZWFyUGlja2VyKGZhbHNlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGZpcmVDaGFuZ2UoZGF0ZSlcbiAgICBpZiAobW9kZSA9PT0gJ2RhdGUnKSB7IHNldElzT3BlbihmYWxzZSk7IHNldFNob3dZZWFyUGlja2VyKGZhbHNlKSB9XG4gIH1cblxuICBjb25zdCBjb21taXREYXRlT25seSA9IChkYXRlOiBEYXRlKTogdm9pZCA9PiB7XG4gICAgc2V0VGVtcERhdGUoZGF0ZSlcbiAgICBpZiAobW9kZSA9PT0gJ2RhdGUnKSB7XG4gICAgICBjb21taXQoZGF0ZSlcbiAgICB9IGVsc2UgaWYgKG1vZGUgPT09ICdkYXRldGltZScpIHtcbiAgICAgIC8vIEJ1aWxkIGZ1bGwgZGF0ZXRpbWUgKGRhdGUgKyBjdXJyZW50IHRpbWUgc2VsZWN0aW9uKSBhbmQgZmlyZVxuICAgICAgY29uc3QgZCA9IGJ1aWxkRGF0ZShkYXRlLCB0ZW1wSG91cnMsIHRlbXBNaW5zLCB0ZW1wQW1QbSlcbiAgICAgIGZpcmVDaGFuZ2UoZClcbiAgICB9XG4gIH1cblxuICAvKiAtLS0tIGNhbGVuZGFyIGdyaWQgLS0tLSAqL1xuICBjb25zdCBncmlkID0gYnVpbGRDYWxlbmRhckdyaWQodmlld1llYXIsIHZpZXdNb250aClcblxuICBjb25zdCBoYW5kbGVQcmV2TW9udGggPSAoKSA9PiB7XG4gICAgbGV0IG5ld1kgPSB2aWV3WWVhciwgbmV3TSA9IHZpZXdNb250aFxuICAgIGlmICh2aWV3TW9udGggPT09IDApIHsgbmV3WSA9IHZpZXdZZWFyIC0gMTsgbmV3TSA9IDExIH1cbiAgICBlbHNlIG5ld00gPSB2aWV3TW9udGggLSAxXG4gICAgc2V0Vmlld1llYXIobmV3WSk7IHNldFZpZXdNb250aChuZXdNKVxuICAgIGNvbnN0IGJhc2UgPSB0ZW1wRGF0ZSB8fCBuZXcgRGF0ZSgpXG4gICAgY29uc3QgbWF4RCA9IGRheXNJbk1vbnRoKG5ld1ksIG5ld00pXG4gICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKG5ld1ksIG5ld00sIE1hdGgubWluKGJhc2UuZ2V0RGF0ZSgpLCBtYXhEKSlcbiAgICBzZXRUZW1wRGF0ZShuZXdEYXRlKVxuICAgIGZpcmVDaGFuZ2Uoc2hvd1RpbWUgPyBidWlsZERhdGUobmV3RGF0ZSwgdGVtcEhvdXJzLCB0ZW1wTWlucywgdGVtcEFtUG0pIDogbmV3RGF0ZSlcbiAgfVxuICBjb25zdCBoYW5kbGVOZXh0TW9udGggPSAoKSA9PiB7XG4gICAgbGV0IG5ld1kgPSB2aWV3WWVhciwgbmV3TSA9IHZpZXdNb250aFxuICAgIGlmICh2aWV3TW9udGggPT09IDExKSB7IG5ld1kgPSB2aWV3WWVhciArIDE7IG5ld00gPSAwIH1cbiAgICBlbHNlIG5ld00gPSB2aWV3TW9udGggKyAxXG4gICAgc2V0Vmlld1llYXIobmV3WSk7IHNldFZpZXdNb250aChuZXdNKVxuICAgIGNvbnN0IGJhc2UgPSB0ZW1wRGF0ZSB8fCBuZXcgRGF0ZSgpXG4gICAgY29uc3QgbWF4RCA9IGRheXNJbk1vbnRoKG5ld1ksIG5ld00pXG4gICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKG5ld1ksIG5ld00sIE1hdGgubWluKGJhc2UuZ2V0RGF0ZSgpLCBtYXhEKSlcbiAgICBzZXRUZW1wRGF0ZShuZXdEYXRlKVxuICAgIGZpcmVDaGFuZ2Uoc2hvd1RpbWUgPyBidWlsZERhdGUobmV3RGF0ZSwgdGVtcEhvdXJzLCB0ZW1wTWlucywgdGVtcEFtUG0pIDogbmV3RGF0ZSlcbiAgfVxuXG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKVxuICBjb25zdCBtaW5EdCA9IG1pbkRhdGUgPyBuZXcgRGF0ZShtaW5EYXRlLmdldEZ1bGxZZWFyKCksIG1pbkRhdGUuZ2V0TW9udGgoKSwgbWluRGF0ZS5nZXREYXRlKCkpIDogbnVsbFxuICBjb25zdCBtYXhEdCA9IG1heERhdGUgPyBuZXcgRGF0ZShtYXhEYXRlLmdldEZ1bGxZZWFyKCksIG1heERhdGUuZ2V0TW9udGgoKSwgbWF4RGF0ZS5nZXREYXRlKCkpIDogbnVsbFxuXG4gIC8qIC0tLS0gdGltZSBjaGFuZ2UgaGFuZGxlcnMgLS0tLSAqL1xuICBjb25zdCBoYW5kbGVIb3VyQ2hhbmdlID0gKGg6IG51bWJlcikgPT4ge1xuICAgIHNldFRlbXBIb3VycyhoKVxuICAgIGlmIChzaG93VGltZSkge1xuICAgICAgY29uc3QgZCA9IGJ1aWxkRGF0ZSh0ZW1wRGF0ZSB8fCBuZXcgRGF0ZSgpLCBoLCB0ZW1wTWlucywgdGVtcEFtUG0pXG4gICAgICBvbkNoYW5nZT8uKG1ha2VFdmVudChmb3JtYXRWYWx1ZShkLCBtb2RlLCBkYXRlRm9ybWF0KSwgbmFtZSB8fCAnJywgbW9kZSkpXG4gICAgfVxuICB9XG4gIGNvbnN0IGhhbmRsZU1pbkNoYW5nZSA9IChtOiBudW1iZXIpID0+IHtcbiAgICBzZXRUZW1wTWlucyhtKVxuICAgIGlmIChzaG93VGltZSkge1xuICAgICAgY29uc3QgZCA9IGJ1aWxkRGF0ZSh0ZW1wRGF0ZSB8fCBuZXcgRGF0ZSgpLCB0ZW1wSG91cnMsIG0sIHRlbXBBbVBtKVxuICAgICAgb25DaGFuZ2U/LihtYWtlRXZlbnQoZm9ybWF0VmFsdWUoZCwgbW9kZSwgZGF0ZUZvcm1hdCksIG5hbWUgfHwgJycsIG1vZGUpKVxuICAgIH1cbiAgfVxuICBjb25zdCBoYW5kbGVBbVBtQ2hhbmdlID0gKGFwOiBzdHJpbmcpID0+IHtcbiAgICBzZXRUZW1wQW1QbShhcClcbiAgICBpZiAoc2hvd1RpbWUpIHtcbiAgICAgIGNvbnN0IGQgPSBidWlsZERhdGUodGVtcERhdGUgfHwgbmV3IERhdGUoKSwgdGVtcEhvdXJzLCB0ZW1wTWlucywgYXApXG4gICAgICBvbkNoYW5nZT8uKG1ha2VFdmVudChmb3JtYXRWYWx1ZShkLCBtb2RlLCBkYXRlRm9ybWF0KSwgbmFtZSB8fCAnJywgbW9kZSkpXG4gICAgfVxuICB9XG5cbiAgLyogLS0tLSB5ZWFyIHBpY2tlciAtLS0tICovXG4gIGNvbnN0IG9wZW5ZZWFyUGlja2VyID0gKCkgPT4ge1xuICAgIHNldFllYXJQYWdlKE1hdGguZmxvb3Iodmlld1llYXIgLyBZRUFSU19QRVJfUEFHRSkgKiBZRUFSU19QRVJfUEFHRSlcbiAgICBzZXRTaG93WWVhclBpY2tlcih0cnVlKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlWWVhclNlbGVjdCA9ICh5OiBudW1iZXIpID0+IHtcbiAgICBzZXRWaWV3WWVhcih5KVxuICAgIHNldFNob3dZZWFyUGlja2VyKGZhbHNlKVxuICAgIGNvbnN0IGJhc2UgPSB0ZW1wRGF0ZSB8fCBuZXcgRGF0ZSgpXG4gICAgY29uc3QgbWF4RCA9IGRheXNJbk1vbnRoKHksIHZpZXdNb250aClcbiAgICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUoeSwgdmlld01vbnRoLCBNYXRoLm1pbihiYXNlLmdldERhdGUoKSwgbWF4RCkpXG4gICAgc2V0VGVtcERhdGUobmV3RGF0ZSlcbiAgICBmaXJlQ2hhbmdlKHNob3dUaW1lID8gYnVpbGREYXRlKG5ld0RhdGUsIHRlbXBIb3VycywgdGVtcE1pbnMsIHRlbXBBbVBtKSA6IG5ld0RhdGUpXG4gIH1cblxuICBjb25zdCB5ZWFyUGFnZVN0YXJ0ID0gTWF0aC5mbG9vcih5ZWFyUGFnZSAvIFlFQVJTX1BFUl9QQUdFKSAqIFlFQVJTX1BFUl9QQUdFXG4gIGNvbnN0IHllYXJzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogWUVBUlNfUEVSX1BBR0UgfSwgKF8sIGkpID0+IHllYXJQYWdlU3RhcnQgKyBpKVxuXG4gIC8qIC0tLS0gY2xlYXIgLS0tLSAqL1xuICBjb25zdCBoYW5kbGVDbGVhciA9IChlOiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIHNldFRlbXBEYXRlKG51bGwpXG4gICAgb25DaGFuZ2U/LihtYWtlRXZlbnQobnVsbCwgbmFtZSB8fCAnJykpXG4gIH1cblxuICAvKiAtLS0tIGtleWJvYXJkIC0tLS0gKi9cbiAgY29uc3QgaGFuZGxlSW5wdXRLZXlEb3duID0gKGU6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSB7IHNldElzT3BlbihmYWxzZSk7IHNldFNob3dZZWFyUGlja2VyKGZhbHNlKTsgaW5wdXRSZWYuY3VycmVudD8uYmx1cigpIH1cbiAgICBpZiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGUua2V5ID09PSAnRW50ZXInIHx8IGUua2V5ID09PSAnICcpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgc2V0SXNPcGVuKHRydWUpXG4gICAgfVxuICB9XG5cbiAgLyogLS0tLSBtZXJnZWQgcmVmIC0tLS0gKi9cbiAgY29uc3QgbWVyZ2VJbnB1dFJlZiA9IFJlYWN0LnVzZUNhbGxiYWNrKChub2RlOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgIGlucHV0UmVmLmN1cnJlbnQgPSBub2RlXG4gICAgaWYgKHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicpIHJlZihub2RlKVxuICAgIGVsc2UgaWYgKHJlZikgcmVmLmN1cnJlbnQgPSBub2RlXG4gIH0sIFtyZWZdKVxuXG4gIC8qIC0tLS0gcmVuZGVyIC0tLS0gKi9cbiAgY29uc3QgcGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlclRleHRcbiAgICA/PyAobW9kZSA9PT0gJ3RpbWUnID8gJ1NlbGVjdCB0aW1lJyA6IG1vZGUgPT09ICdkYXRldGltZScgPyAnU2VsZWN0IGRhdGUgJiB0aW1lJyA6ICdTZWxlY3QgZGF0ZScpXG5cbiAgY29uc3QgcG9wb3ZlciA9IChcbiAgICA8ZGl2XG4gICAgICByZWY9e3BvcG92ZXJSZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAnZGF0ZXBpY2tlci1wb3BvdmVyIGNhcmQgYm9yZGVyIHNoYWRvdy1zbScsXG4gICAgICAgIG1vZGUgPT09ICdkYXRldGltZScgJiYgJ2RhdGVwaWNrZXItcG9wb3Zlci0td2lkZSdcbiAgICAgICl9XG4gICAgICBzdHlsZT17cG9wb3ZlclN0eWxlfVxuICAgID5cbiAgICAgIHsvKiA9PT09PT09PT09PT09PSBZRUFSIFBJQ0tFUiA9PT09PT09PT09PT09PSAqL31cbiAgICAgIHtzaG93WWVhclBpY2tlciAmJiBzaG93Q2FsZW5kYXIgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXIteWVhci1waWNrZXIgcC0zXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTJcIj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJvcmRlci0wIHB4LTFcIiBvbkNsaWNrPXsoKSA9PiBzZXRZZWFyUGFnZSh5ZWFyUGFnZSAtIFlFQVJTX1BFUl9QQUdFKX0gYXJpYS1sYWJlbD1cIlByZXZpb3VzIHllYXJzXCI+JmxzYXF1bzs8L2J1dHRvbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZ3LXNlbWlib2xkIHNtYWxsXCI+e3llYXJQYWdlU3RhcnR9IOKAkyB7eWVhclBhZ2VTdGFydCArIFlFQVJTX1BFUl9QQUdFIC0gMX08L3NwYW4+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBib3JkZXItMCBweC0xXCIgb25DbGljaz17KCkgPT4gc2V0WWVhclBhZ2UoeWVhclBhZ2UgKyBZRUFSU19QRVJfUEFHRSl9IGFyaWEtbGFiZWw9XCJOZXh0IHllYXJzXCI+JnJzYXF1bzs8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXIteWVhci1ncmlkXCI+XG4gICAgICAgICAgICB7eWVhcnMubWFwKCh5KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGlzQ3VycmVudFllYXIgPSB5ID09PSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKClcbiAgICAgICAgICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IHRlbXBEYXRlICYmIHkgPT09IHRlbXBEYXRlLmdldEZ1bGxZZWFyKClcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBrZXk9e3l9XG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICdkYXRlcGlja2VyLXllYXItY2VsbCBidG4gYnRuLXNtJyxcbiAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZCAmJiAnYnRuLXByaW1hcnknLFxuICAgICAgICAgICAgICAgICAgICAhaXNTZWxlY3RlZCAmJiBpc0N1cnJlbnRZZWFyICYmICdidG4tb3V0bGluZS1wcmltYXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgIWlzU2VsZWN0ZWQgJiYgIWlzQ3VycmVudFllYXIgJiYgJ2J0bi1saWdodCBib3JkZXInXG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlWWVhclNlbGVjdCh5KX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cblxuICAgICAgey8qID09PT09PT09PT09PT09IENBTEVOREFSICsgVElNRSA9PT09PT09PT09PT09PSAqL31cbiAgICAgIHshc2hvd1llYXJQaWNrZXIgJiYgKFxuICAgICAgICA8PlxuXG4gICAgICAgICAgey8qIC0tLS0gQ0FMRU5EQVIgKyBUSU1FIENPTlRBSU5FUiAtLS0tICovfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbignZC1mbGV4JywgbW9kZSA9PT0gJ2RhdGV0aW1lJyA/ICdmbGV4LXJvdycgOiAnZmxleC1jb2x1bW4nKX0+XG5cbiAgICAgICAgICB7LyogLS0tLSBDQUxFTkRBUiAtLS0tICovfVxuICAgICAgICAgIHtzaG93Q2FsZW5kYXIgJiYgKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLWNhbGVuZGFyIHAtMlwiPlxuICAgICAgICAgICAgICB7LyogTW9udGggLyBZZWFyIGhlYWRlciAqL31cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTJcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBib3JkZXItMCBweC0xXCIgb25DbGljaz17aGFuZGxlUHJldk1vbnRofSBhcmlhLWxhYmVsPVwiUHJldmlvdXMgbW9udGhcIj4mbHNhcXVvOzwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZnctc2VtaWJvbGQgc21hbGxcIj57TU9OVEhTW3ZpZXdNb250aF19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYnRuIGJ0bi1zbSBidG4tbGluayB0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LXByaW1hcnkgZnctc2VtaWJvbGQgc21hbGwgcC0wXCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17b3BlblllYXJQaWNrZXJ9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDaG9vc2UgeWVhclwiXG4gICAgICAgICAgICAgICAgICA+e3ZpZXdZZWFyfTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJvcmRlci0wIHB4LTFcIiBvbkNsaWNrPXtoYW5kbGVOZXh0TW9udGh9IGFyaWEtbGFiZWw9XCJOZXh0IG1vbnRoXCI+JnJzYXF1bzs8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgey8qIERheS1vZi13ZWVrIGhlYWRlcnMgKi99XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci1kYXlzLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIHtEQVlTX09GX1dFRUsubWFwKGQgPT4gKFxuICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2R9IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItZGF5LWxhYmVsXCI+e2R9PC9kaXY+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIHsvKiBEYXkgZ3JpZCAqL31cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLWRheXMtZ3JpZFwiPlxuICAgICAgICAgICAgICAgIHtncmlkLm1hcCgoY2VsbCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgaXNUb2RheSA9IGlzU2FtZURheShjZWxsLmRhdGUsIHRvZGF5KVxuICAgICAgICAgICAgICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IHRlbXBEYXRlICYmIGlzU2FtZURheShjZWxsLmRhdGUsIHRlbXBEYXRlKVxuICAgICAgICAgICAgICAgICAgY29uc3QgaW5SYW5nZSA9IGlzRGF0ZUluUmFuZ2UoY2VsbC5kYXRlLCBtaW5EdCwgbWF4RHQpXG4gICAgICAgICAgICAgICAgICBjb25zdCBpc0Rpc2FibGVkRGF5ID0gY2VsbC5pc091dHNpZGUgfHwgIWluUmFuZ2VcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGtleT17aX1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZERheX1cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGVwaWNrZXItZGF5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG9kYXkgJiYgJ2RhdGVwaWNrZXItZGF5LS10b2RheScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkICYmICdkYXRlcGlja2VyLWRheS0tc2VsZWN0ZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5pc091dHNpZGUgJiYgJ2RhdGVwaWNrZXItZGF5LS1vdXRzaWRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICFpblJhbmdlICYmICdkYXRlcGlja2VyLWRheS0tZGlzYWJsZWQnXG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjb21taXREYXRlT25seShjZWxsLmRhdGUpfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXtjZWxsLmlzT3V0c2lkZSA/IC0xIDogMH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtjZWxsLmRheX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHsvKiAtLS0tIERJVklERVIgKGRhdGV0aW1lIG1vZGUpIC0tLS0gKi99XG4gICAgICAgICAge21vZGUgPT09ICdkYXRldGltZScgJiYgPGRpdiBjbGFzc05hbWU9XCJ2ciBteC0xIG15LTJcIiAvPn1cblxuICAgICAgICAgIHsvKiAtLS0tIFRJTUUgLS0tLSAqL31cbiAgICAgICAgICB7c2hvd1RpbWUgJiYgKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXRpbWUgcC0yIGQtZmxleCBmbGV4LWNvbHVtblwiIHN0eWxlPXt7IG1pbldpZHRoOiAxODAgfX0+XG4gICAgICAgICAgICAgIHttb2RlID09PSAnZGF0ZXRpbWUnICYmIDxkaXYgY2xhc3NOYW1lPVwic21hbGwgZnctc2VtaWJvbGQgdGV4dC1tdXRlZCB0ZXh0LWNlbnRlciBtYi0xXCI+VGltZTwvZGl2Pn1cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgIHsvKiBIb3VyIGNvbHVtbiAqL31cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItdGltZS1jb2xcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci10aW1lLWNvbC1sYWJlbFwiPkhvdXI8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci10aW1lLWNvbC1zY3JvbGxcIj5cbiAgICAgICAgICAgICAgICAgICAge0FycmF5LmZyb20oeyBsZW5ndGg6IDEyIH0sIChfLCBpKSA9PiBpICsgMSkubWFwKGggPT4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbignZGF0ZXBpY2tlci10aW1lLWl0ZW0nLCBoID09PSB0ZW1wSG91cnMgJiYgJ2FjdGl2ZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlSG91ckNoYW5nZShoKX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7U3RyaW5nKGgpLnBhZFN0YXJ0KDIsICcwJyl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci10aW1lLXNlcGFyYXRvclwiPjo8L3NwYW4+XG4gICAgICAgICAgICAgICAgey8qIE1pbnV0ZSBjb2x1bW4gKi99XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXRpbWUtY29sXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItdGltZS1jb2wtbGFiZWxcIj5NaW48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci10aW1lLWNvbC1zY3JvbGxcIj5cbiAgICAgICAgICAgICAgICAgICAge01JTlVURVMubWFwKG0gPT4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17bX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbignZGF0ZXBpY2tlci10aW1lLWl0ZW0nLCBtID09PSB0ZW1wTWlucyAmJiAnYWN0aXZlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVNaW5DaGFuZ2UobSl9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge1N0cmluZyhtKS5wYWRTdGFydCgyLCAnMCcpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIHsvKiBBTS9QTSBjb2x1bW4gKi99XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXRpbWUtY29sXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItdGltZS1jb2wtbGFiZWxcIj4mbmJzcDs8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0xIG10LTFcIj5cbiAgICAgICAgICAgICAgICAgICAge1snQU0nLCAnUE0nXS5tYXAoYXAgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YXB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oJ2RhdGVwaWNrZXItdGltZS1pdGVtJywgJ2RhdGVwaWNrZXItdGltZS1pdGVtLS1hbXBtJywgdGVtcEFtUG0gPT09IGFwICYmICdhY3RpdmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUFtUG1DaGFuZ2UoYXApfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHthcH1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItd3JhcHBlciBwb3NpdGlvbi1yZWxhdGl2ZSBkLWlubGluZS1ibG9jayB3LTEwMFwiIHN0eWxlPXt7IG1pbldpZHRoOiAwIH19PlxuICAgICAgey8qIC0tLS0gSW5wdXQgLS0tLSAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgcmVmPXttZXJnZUlucHV0UmVmfVxuICAgICAgICAgIGlkPXtpZH1cbiAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICByZWFkT25seVxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgJ2Zvcm0tY29udHJvbCcsXG4gICAgICAgICAgICBzaXplID09PSAnc20nICYmICdmb3JtLWNvbnRyb2wtc20nLFxuICAgICAgICAgICAgc2l6ZSA9PT0gJ2xnJyAmJiAnZm9ybS1jb250cm9sLWxnJyxcbiAgICAgICAgICAgICdwZS01JyxcbiAgICAgICAgICAgIGNsYXNzTmFtZVxuICAgICAgICAgICl9XG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAgIHZhbHVlPXtmb3JtYXRWYWx1ZShyZXNvbHZlZFZhbHVlLCBtb2RlLCBkYXRlRm9ybWF0KX1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiAhZGlzYWJsZWQgJiYgc2V0SXNPcGVuKCFpc09wZW4pfVxuICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlSW5wdXRLZXlEb3dufVxuICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJkaWFsb2dcIlxuICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9e2lzT3Blbn1cbiAgICAgICAgICBhdXRvQ29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgLz5cbiAgICAgICAgey8qIGNsZWFyIGJ1dHRvbiAqL31cbiAgICAgICAge2lzQ2xlYXJhYmxlICYmIHJlc29sdmVkVmFsdWUgJiYgIWRpc2FibGVkICYmIChcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ0biBidG4tc20gYnRuLWxpbmsgcG9zaXRpb24tYWJzb2x1dGUgdG9wLTUwIGVuZC0wIHRyYW5zbGF0ZS1taWRkbGUteSBwZS0yIHRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgIHN0eWxlPXt7IHpJbmRleDogMiB9fVxuICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQ2xlYXJ9XG4gICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgICZ0aW1lcztcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogLS0tLSBQb3J0YWwgdGhlIHBvcG92ZXIgdG8gZG9jdW1lbnQuYm9keSAtLS0tICovfVxuICAgICAge2lzT3BlbiAmJiAhZGlzYWJsZWQgJiYgcG9ydGFsUmVmLmN1cnJlbnQgJiYgY3JlYXRlUG9ydGFsKHBvcG92ZXIsIHBvcnRhbFJlZi5jdXJyZW50KX1cbiAgICA8L2Rpdj5cbiAgKVxufSlcblxuRGF0ZVBpY2tlci5kaXNwbGF5TmFtZSA9ICdEYXRlUGlja2VyJ1xuXG5leHBvcnQgeyBEYXRlUGlja2VyIH1cbmV4cG9ydCBkZWZhdWx0IERhdGVQaWNrZXJcbiJdfQ==
@@ -1,2 +0,0 @@
1
- 'use strict';var chunkNPQQDBFB_cjs=require('./chunk-NPQQDBFB.cjs'),i=require('react'),reactDom=require('react-dom'),jsxRuntime=require('react/jsx-runtime');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var i__namespace=/*#__PURE__*/_interopNamespace(i);var xe=["Su","Mo","Tu","We","Th","Fr","Sa"],Ye=["January","February","March","April","May","June","July","August","September","October","November","December"],Te=Array.from({length:60},(a,t)=>t),b=12,z=(a,t)=>new Date(a,t+1,0).getDate(),ae=(a,t)=>a!==null&&t!==null&&a.getFullYear()===t.getFullYear()&&a.getMonth()===t.getMonth()&&a.getDate()===t.getDate(),Ae=(a,t,s)=>!(t&&a<new Date(t.getFullYear(),t.getMonth(),t.getDate())||s&&a>new Date(s.getFullYear(),s.getMonth(),s.getDate())),He=(a,t)=>{let s=new Date(a,t,1).getDay(),p=z(a,t),m=[],g=z(a,t-1);for(let u=s-1;u>=0;u--){let M=g-u;m.push({day:M,date:new Date(a,t-1,M),isOutside:true});}for(let u=1;u<=p;u++)m.push({day:u,date:new Date(a,t,u),isOutside:false});let v=42-m.length;for(let u=1;u<=v;u++)m.push({day:u,date:new Date(a,t+1,u),isOutside:true});return m},_=(a,t,s)=>{if(!a||isNaN(a.getTime()))return "";let p=a.getFullYear(),m=String(a.getMonth()+1).padStart(2,"0"),g=String(a.getDate()).padStart(2,"0"),v=a.getHours(),u=String(a.getMinutes()).padStart(2,"0"),M=v>=12?"PM":"AM";v=v%12||12;let k=String(v).padStart(2,"0");if(s)return s.replace("yyyy",String(p)).replace("MM",m).replace("dd",g).replace("hh",k).replace("mm",u).replace("aa",M);switch(t){case "time":return `${k}:${u} ${M}`;case "datetime":return `${p}-${m}-${g} ${k}:${u} ${M}`;default:return `${p}-${m}-${g}`}},F=(a,t,s="date")=>({target:{value:a,name:t,type:s},preventDefault:()=>{},stopPropagation:()=>{},nativeEvent:null}),Ie={date:300,time:300,datetime:400,year:250},Fe=a=>{if(!a)return document.documentElement;let t=a.parentElement;for(;t;){let s=window.getComputedStyle(t),p=s.overflowY||s.overflow;if(p==="auto"||p==="scroll")return t;t=t.parentElement;}return document.documentElement},Le=(a,t)=>{if(!a)return {};let s=a.getBoundingClientRect(),p=t||300,m=window.innerHeight-s.bottom,g=s.top,v=m<p&&g>m,u=Math.max(s.width,window.innerWidth<576?220:260);return {position:"fixed",top:v?Math.max(4,s.top-p-4):s.bottom+4,left:Math.max(4,Math.min(s.left,window.innerWidth-u-4)),minWidth:u,maxWidth:window.innerWidth-8,zIndex:1070}},re=i__namespace.forwardRef(({className:a,mode:t="date",selected:s,value:p,onChange:m,dateFormat:g,placeholderText:v,size:u,isClearable:M=false,disabled:k=false,minDate:V,maxDate:q,timeIntervals:$e=5,timezone:We="Kampala",id:se,name:N,...ie},L)=>{let le=e=>{if(!e)return null;if(e instanceof Date)return isNaN(e.getTime())?null:e;if(typeof e=="string"||typeof e=="number"){let n=new Date(e);if(!isNaN(n.getTime()))return n;if(typeof e=="string"){let c=e.match(/^(\d{1,2}):(\d{2})\s*(AM|PM)$/i);if(c){let o=parseInt(c[1],10),h=parseInt(c[2],10),W=c[3].toUpperCase();o===12&&W==="AM"&&(o=0),o!==12&&W==="PM"&&(o+=12);let X=new Date;return new Date(X.getFullYear(),X.getMonth(),X.getDate(),o,h,0,0)}let d=e.match(/^(\d{4})-(\d{2})-(\d{2})\s+(\d{1,2}):(\d{2})\s*(AM|PM)$/i);if(d){let o=parseInt(d[4],10),h=parseInt(d[5],10),W=d[6].toUpperCase();return o===12&&W==="AM"&&(o=0),o!==12&&W==="PM"&&(o+=12),new Date(parseInt(d[1]),parseInt(d[2])-1,parseInt(d[3]),o,h,0,0)}}return null}return null},l=i__namespace.useMemo(()=>le(s??p),[s instanceof Date?s.getTime():s,p instanceof Date?p.getTime():p]),Z=t==="date"||t==="datetime",S=t==="time"||t==="datetime",[P,A]=i__namespace.useState(false),[E,K]=i__namespace.useState(()=>l?l.getFullYear():new Date().getFullYear()),[D,J]=i__namespace.useState(()=>l?l.getMonth():new Date().getMonth()),[y,R]=i__namespace.useState(l),[C,ee]=i__namespace.useState(()=>l&&l.getHours()%12||12),[x,te]=i__namespace.useState(()=>l?l.getMinutes():0),[Y,ne]=i__namespace.useState(()=>l&&l.getHours()>=12?"PM":"AM"),[U,H]=i__namespace.useState(false),[j,B]=i__namespace.useState(()=>Math.floor((l?l.getFullYear():new Date().getFullYear())/b)*b),[oe,ce]=i__namespace.useState({}),I=i__namespace.useRef(null),O=i__namespace.useRef(null),G=i__namespace.useRef(null);i__namespace.useEffect(()=>{let e=document.createElement("div");return e.className="datepicker-portal-root",document.body.appendChild(e),G.current=e,()=>{e.parentNode&&document.body.removeChild(e),G.current=null;}},[]),i__namespace.useEffect(()=>{l&&!isNaN(l.getTime())?(R(l),K(l.getFullYear()),J(l.getMonth()),ee(l.getHours()%12||12),te(l.getMinutes()),ne(l.getHours()>=12?"PM":"AM"),B(Math.floor(l.getFullYear()/b)*b)):R(null);},[l]),i__namespace.useEffect(()=>{if(!P)return;let e=()=>O.current?O.current.getBoundingClientRect().height:Ie[U?"year":t]||300,n=Fe(I.current),c=()=>{requestAnimationFrame(()=>{ce(Le(I.current,e()));});};return c(),n.addEventListener("scroll",c,{passive:true}),window.addEventListener("resize",c),()=>{n.removeEventListener("scroll",c),window.removeEventListener("resize",c);}},[P,t,U]),i__namespace.useEffect(()=>{if(!P)return;let e=n=>{O.current&&!O.current.contains(n.target)&&I.current&&!I.current.contains(n.target)&&(A(false),H(false));};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[P]);let T=(e,n,c,d)=>{let o=new Date(e),h=n%12;return d==="PM"&&(h+=12),h===12&&d==="AM"&&(h=0),o.setHours(h,c,0,0),o},$=e=>{if(!e||isNaN(e.getTime()))return;let n=_(e,t,g);m?.(F(n,N||"",t));},ue=e=>{if(!e){m?.(F(null,N||"",t)),A(false),H(false);return}$(e),t==="date"&&(A(false),H(false));},de=e=>{if(R(e),t==="date")ue(e);else if(t==="datetime"){let n=T(e,C,x,Y);$(n);}},me=He(E,D),pe=()=>{let e=E,n=D;D===0?(e=E-1,n=11):n=D-1,K(e),J(n);let c=y||new Date,d=z(e,n),o=new Date(e,n,Math.min(c.getDate(),d));R(o),$(S?T(o,C,x,Y):o);},fe=()=>{let e=E,n=D;D===11?(e=E+1,n=0):n=D+1,K(e),J(n);let c=y||new Date,d=z(e,n),o=new Date(e,n,Math.min(c.getDate(),d));R(o),$(S?T(o,C,x,Y):o);},ge=new Date,be=V?new Date(V.getFullYear(),V.getMonth(),V.getDate()):null,ve=q?new Date(q.getFullYear(),q.getMonth(),q.getDate()):null,De=e=>{if(ee(e),S){let n=T(y||new Date,e,x,Y);m?.(F(_(n,t,g),N||"",t));}},ye=e=>{if(te(e),S){let n=T(y||new Date,C,e,Y);m?.(F(_(n,t,g),N||"",t));}},he=e=>{if(ne(e),S){let n=T(y||new Date,C,x,e);m?.(F(_(n,t,g),N||"",t));}},we=()=>{B(Math.floor(E/b)*b),H(true);},Me=e=>{K(e),H(false);let n=y||new Date,c=z(e,D),d=new Date(e,D,Math.min(n.getDate(),c));R(d),$(S?T(d,C,x,Y):d);},Q=Math.floor(j/b)*b,ke=Array.from({length:b},(e,n)=>Q+n),Ne=e=>{e.stopPropagation(),R(null),m?.(F(null,N||""));},Se=e=>{e.key==="Escape"&&(A(false),H(false),I.current?.blur()),(e.key==="ArrowDown"||e.key==="Enter"||e.key===" ")&&(e.preventDefault(),A(true));},Pe=i__namespace.useCallback(e=>{I.current=e,typeof L=="function"?L(e):L&&(L.current=e);},[L]),Ee=v??(t==="time"?"Select time":t==="datetime"?"Select date & time":"Select date"),Re=jsxRuntime.jsxs("div",{ref:O,className:chunkNPQQDBFB_cjs.a("datepicker-popover card border shadow-sm",t==="datetime"&&"datepicker-popover--wide"),style:oe,children:[U&&Z&&jsxRuntime.jsxs("div",{className:"datepicker-year-picker p-3",children:[jsxRuntime.jsxs("div",{className:"d-flex align-items-center justify-content-between mb-2",children:[jsxRuntime.jsx("button",{type:"button",className:"btn btn-sm btn-outline-secondary border-0 px-1",onClick:()=>B(j-b),"aria-label":"Previous years",children:"\u2039"}),jsxRuntime.jsxs("span",{className:"fw-semibold small",children:[Q," \u2013 ",Q+b-1]}),jsxRuntime.jsx("button",{type:"button",className:"btn btn-sm btn-outline-secondary border-0 px-1",onClick:()=>B(j+b),"aria-label":"Next years",children:"\u203A"})]}),jsxRuntime.jsx("div",{className:"datepicker-year-grid",children:ke.map(e=>{let n=e===new Date().getFullYear(),c=y&&e===y.getFullYear();return jsxRuntime.jsx("button",{type:"button",className:chunkNPQQDBFB_cjs.a("datepicker-year-cell btn btn-sm",c&&"btn-primary",!c&&n&&"btn-outline-primary",!c&&!n&&"btn-light border"),onClick:()=>Me(e),children:e},e)})})]}),!U&&jsxRuntime.jsx(jsxRuntime.Fragment,{children:jsxRuntime.jsxs("div",{className:chunkNPQQDBFB_cjs.a("d-flex",t==="datetime"?"flex-row":"flex-column"),children:[Z&&jsxRuntime.jsxs("div",{className:"datepicker-calendar p-2",children:[jsxRuntime.jsxs("div",{className:"d-flex align-items-center justify-content-between mb-2",children:[jsxRuntime.jsx("button",{type:"button",className:"btn btn-sm btn-outline-secondary border-0 px-1",onClick:pe,"aria-label":"Previous month",children:"\u2039"}),jsxRuntime.jsxs("div",{className:"d-flex align-items-center gap-1",children:[jsxRuntime.jsx("span",{className:"fw-semibold small",children:Ye[D]}),jsxRuntime.jsx("button",{type:"button",className:"btn btn-sm btn-link text-decoration-none text-primary fw-semibold small p-0",onClick:we,"aria-label":"Choose year",children:E})]}),jsxRuntime.jsx("button",{type:"button",className:"btn btn-sm btn-outline-secondary border-0 px-1",onClick:fe,"aria-label":"Next month",children:"\u203A"})]}),jsxRuntime.jsx("div",{className:"datepicker-days-header",children:xe.map(e=>jsxRuntime.jsx("div",{className:"datepicker-day-label",children:e},e))}),jsxRuntime.jsx("div",{className:"datepicker-days-grid",children:me.map((e,n)=>{let c=ae(e.date,ge),d=y&&ae(e.date,y),o=Ae(e.date,be,ve),h=e.isOutside||!o;return jsxRuntime.jsx("button",{type:"button",disabled:h,className:chunkNPQQDBFB_cjs.a("datepicker-day",c&&"datepicker-day--today",d&&"datepicker-day--selected",e.isOutside&&"datepicker-day--outside",!o&&"datepicker-day--disabled"),onClick:()=>de(e.date),tabIndex:e.isOutside?-1:0,children:e.day},n)})})]}),t==="datetime"&&jsxRuntime.jsx("div",{className:"vr mx-1 my-2"}),S&&jsxRuntime.jsxs("div",{className:"datepicker-time p-2 d-flex flex-column",style:{minWidth:180},children:[t==="datetime"&&jsxRuntime.jsx("div",{className:"small fw-semibold text-muted text-center mb-1",children:"Time"}),jsxRuntime.jsxs("div",{className:"d-flex justify-content-center gap-2",children:[jsxRuntime.jsxs("div",{className:"datepicker-time-col",children:[jsxRuntime.jsx("div",{className:"datepicker-time-col-label",children:"Hour"}),jsxRuntime.jsx("div",{className:"datepicker-time-col-scroll",children:Array.from({length:12},(e,n)=>n+1).map(e=>jsxRuntime.jsx("button",{type:"button",className:chunkNPQQDBFB_cjs.a("datepicker-time-item",e===C&&"active"),onClick:()=>De(e),children:String(e).padStart(2,"0")},e))})]}),jsxRuntime.jsx("span",{className:"datepicker-time-separator",children:":"}),jsxRuntime.jsxs("div",{className:"datepicker-time-col",children:[jsxRuntime.jsx("div",{className:"datepicker-time-col-label",children:"Min"}),jsxRuntime.jsx("div",{className:"datepicker-time-col-scroll",children:Te.map(e=>jsxRuntime.jsx("button",{type:"button",className:chunkNPQQDBFB_cjs.a("datepicker-time-item",e===x&&"active"),onClick:()=>ye(e),children:String(e).padStart(2,"0")},e))})]}),jsxRuntime.jsxs("div",{className:"datepicker-time-col",children:[jsxRuntime.jsx("div",{className:"datepicker-time-col-label",children:"\xA0"}),jsxRuntime.jsx("div",{className:"d-flex flex-column gap-1 mt-1",children:["AM","PM"].map(e=>jsxRuntime.jsx("button",{type:"button",className:chunkNPQQDBFB_cjs.a("datepicker-time-item","datepicker-time-item--ampm",Y===e&&"active"),onClick:()=>he(e),children:e},e))})]})]})]})]})})]});return jsxRuntime.jsxs("div",{className:"datepicker-wrapper position-relative d-inline-block w-100",style:{minWidth:0},children:[jsxRuntime.jsxs("div",{className:"position-relative",children:[jsxRuntime.jsx("input",{ref:Pe,id:se,name:N,type:"text",readOnly:true,disabled:k,className:chunkNPQQDBFB_cjs.a("form-control",u==="sm"&&"form-control-sm",u==="lg"&&"form-control-lg","pe-5",a),placeholder:Ee,value:_(l,t,g),onClick:()=>!k&&A(!P),onKeyDown:Se,"aria-haspopup":"dialog","aria-expanded":P,autoComplete:"off",...ie}),M&&l&&!k&&jsxRuntime.jsx("button",{type:"button",className:"btn btn-sm btn-link position-absolute top-50 end-0 translate-middle-y pe-2 text-secondary",style:{zIndex:2},onClick:Ne,tabIndex:-1,"aria-label":"Clear",children:"\xD7"})]}),P&&!k&&G.current&&reactDom.createPortal(Re,G.current)]})});re.displayName="DatePicker";var Ve=re;exports.a=re;exports.b=Ve;//# sourceMappingURL=chunk-GZ2D7HTS.cjs.map
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb25lbnRzL0RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbIkRBWVNfT0ZfV0VFSyIsIk1PTlRIUyIsIk1JTlVURVMiLCJfIiwiaSIsIllFQVJTX1BFUl9QQUdFIiwiZGF5c0luTW9udGgiLCJ5ZWFyIiwibW9udGgiLCJpc1NhbWVEYXkiLCJiIiwiaXNEYXRlSW5SYW5nZSIsImRhdGUiLCJtaW4iLCJtYXgiLCJidWlsZENhbGVuZGFyR3JpZCIsImZpcnN0RGF5IiwidG90YWxEYXlzIiwiY2VsbHMiLCJwcmV2TW9udGhEYXlzIiwiZGF5IiwiZCIsInJlbWFpbmluZyIsImZvcm1hdFZhbHVlIiwibW9kZSIsImZtdCIsInkiLCJNIiwiaCIsIm0iLCJhIiwiaGgiLCJtYWtlRXZlbnQiLCJ2YWx1ZSIsImlucHV0TmFtZSIsInR5cGUiLCJQT1BPVkVSX0dVRVNTIiwiZ2V0U2Nyb2xsUGFyZW50IiwiZWwiLCJwYXJlbnQiLCJzdHlsZSIsIm92ZXJmbG93WSIsImNhbGNQb3BvdmVyU3R5bGUiLCJpbnB1dEVsIiwicG9wb3ZlckhlaWdodCIsInJlY3QiLCJzcGFjZUJlbG93Iiwic3BhY2VBYm92ZSIsInBsYWNlQWJvdmUiLCJtaW5XIiwiRGF0ZVBpY2tlciIsImNsYXNzTmFtZSIsInNlbGVjdGVkIiwib25DaGFuZ2UiLCJkYXRlRm9ybWF0IiwicGxhY2Vob2xkZXJUZXh0Iiwic2l6ZSIsImlzQ2xlYXJhYmxlIiwiZGlzYWJsZWQiLCJtaW5EYXRlIiwibWF4RGF0ZSIsInRpbWVJbnRlcnZhbHMiLCJ0aW1lem9uZSIsImlkIiwibmFtZSIsInByb3BzIiwicmVmIiwicmVzb2x2ZVZhbHVlIiwidiIsInRpbWVNYXRjaCIsImFwIiwibm93IiwiZHRNYXRjaCIsInJlc29sdmVkVmFsdWUiLCJzaG93Q2FsZW5kYXIiLCJzaG93VGltZSIsImlzT3BlbiIsInNldElzT3BlbiIsInZpZXdZZWFyIiwic2V0Vmlld1llYXIiLCJ2aWV3TW9udGgiLCJzZXRWaWV3TW9udGgiLCJ0ZW1wRGF0ZSIsInNldFRlbXBEYXRlIiwidGVtcEhvdXJzIiwic2V0VGVtcEhvdXJzIiwidGVtcE1pbnMiLCJzZXRUZW1wTWlucyIsInRlbXBBbVBtIiwic2V0VGVtcEFtUG0iLCJzaG93WWVhclBpY2tlciIsInNldFNob3dZZWFyUGlja2VyIiwieWVhclBhZ2UiLCJzZXRZZWFyUGFnZSIsInBvcG92ZXJTdHlsZSIsInNldFBvcG92ZXJTdHlsZSIsImlucHV0UmVmIiwicG9wb3ZlclJlZiIsInBvcnRhbFJlZiIsImdldEhlaWdodCIsInNjcm9sbFBhcmVudCIsInVwZGF0ZSIsImhhbmRsZXIiLCJlIiwiYnVpbGREYXRlIiwiYmFzZSIsImgxMiIsIm1pbnMiLCJhbXBtIiwiZmlyZUNoYW5nZSIsImZvcm1hdHRlZCIsImNvbW1pdCIsImNvbW1pdERhdGVPbmx5IiwiZ3JpZCIsImhhbmRsZVByZXZNb250aCIsIm5ld1kiLCJuZXdNIiwibWF4RCIsIm5ld0RhdGUiLCJoYW5kbGVOZXh0TW9udGgiLCJ0b2RheSIsIm1pbkR0IiwibWF4RHQiLCJoYW5kbGVIb3VyQ2hhbmdlIiwiaGFuZGxlTWluQ2hhbmdlIiwiaGFuZGxlQW1QbUNoYW5nZSIsIm9wZW5ZZWFyUGlja2VyIiwiaGFuZGxlWWVhclNlbGVjdCIsInllYXJQYWdlU3RhcnQiLCJ5ZWFycyIsImhhbmRsZUNsZWFyIiwiaGFuZGxlSW5wdXRLZXlEb3duIiwibWVyZ2VJbnB1dFJlZiIsIm5vZGUiLCJwbGFjZWhvbGRlciIsInBvcG92ZXIiLCJqc3hzIiwiY24iLCJqc3giLCJpc0N1cnJlbnRZZWFyIiwiaXNTZWxlY3RlZCIsIkZyYWdtZW50IiwiY2VsbCIsImlzVG9kYXkiLCJpblJhbmdlIiwiaXNEaXNhYmxlZERheSIsImNyZWF0ZVBvcnRhbCIsIkRhdGVQaWNrZXJfZGVmYXVsdCJdLCJtYXBwaW5ncyI6ImtnQkEwREEsSUFBTUEsRUFBQUEsQ0FBZSxDQUFDLElBQUEsQ0FBTSxJQUFBLENBQU0sSUFBQSxDQUFNLElBQUEsQ0FBTSxJQUFBLENB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QUFVLEVBQUEsQ0FDVixZQUFBLENBQVcsT0FBQSxDQUNaLGdCQUVELENBQUEsQ0FBQSxDQUVKLENBQUEsQ0FHQ3RELENBQUFBLEVBQVUsQ0FBQ2xCLENBQUFBLEVBQVl3QyxDQUFBQSxDQUFVLE9BQUEsRUFBV2dELHFCQUFBQSxDQUFhWCxHQUFTckMsQ0FBQUEsQ0FBVSxPQUFPLENBQUEsQ0FBQSxDQUN0RixDQUVKLENBQUMsRUFFRGhELEVBQUFBLENBQVcsV0FBQSxDQUFjLFlBQUEsS0FHbEJpRyxFQUFBQSxDQUFRakciLCJmaWxlIjoiY2h1bmstR1oyRDdIVFMuY2pzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyBjbiB9IGZyb20gJy4uL2xpYi9jbi5qcydcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAgVHlwZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuZXhwb3J0IGludGVyZmFjZSBEYXRlUGlja2VyQ2hhbmdlRXZlbnQge1xuICB0YXJnZXQ6IHtcbiAgICB2YWx1ZTogc3RyaW5nIHwgbnVsbFxuICAgIG5hbWU6IHN0cmluZ1xuICAgIHR5cGU6IHN0cmluZ1xuICB9XG4gIHByZXZlbnREZWZhdWx0OiAoKSA9PiB2b2lkXG4gIHN0b3BQcm9wYWdhdGlvbjogKCkgPT4gdm9pZFxuICBuYXRpdmVFdmVudDogbnVsbFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVQaWNrZXJQcm9wcyB7XG4gIC8qKiBQaWNrZXIgbW9kZSAoZGVmYXVsdCAnZGF0ZScpICovXG4gIG1vZGU/OiAnZGF0ZScgfCAndGltZScgfCAnZGF0ZXRpbWUnXG4gIC8qKiBDdXJyZW50bHkgc2VsZWN0ZWQgRGF0ZSAoYWxpYXMgZm9yIHZhbHVlKSAqL1xuICBzZWxlY3RlZD86IERhdGUgfCBudWxsXG4gIC8qKiBDdXJyZW50bHkgc2VsZWN0ZWQgRGF0ZSwgSVNPIHN0cmluZywgXCJoaDptbSBBQVwiIHRpbWUgc3RyaW5nLCBcIllZWVktTU0tREQgaGg6bW0gQUFcIiBkYXRldGltZSBzdHJpbmcsIG9yIHRpbWVzdGFtcCAqL1xuICB2YWx1ZT86IERhdGUgfCBzdHJpbmcgfCBudW1iZXIgfCBudWxsXG4gIC8qKiBTeW50aGV0aWMgZXZlbnQgaGFuZGxlciDigJQgZS50YXJnZXQudmFsdWUgaXMgYSBwcmUtZm9ybWF0dGVkIHN0cmluZyAqL1xuICBvbkNoYW5nZT86IChlOiBEYXRlUGlja2VyQ2hhbmdlRXZlbnQpID0+IHZvaWRcbiAgLyoqIERpc3BsYXkgZm9ybWF0IHdpdGggdG9rZW5zOiB5eXl5LCBNTSwgZGQsIGhoLCBtbSwgYWEgKi9cbiAgZGF0ZUZvcm1hdD86IHN0cmluZ1xuICAvKiogUGxhY2Vob2xkZXIgdGV4dCB3aGVuIGVtcHR5ICovXG4gIHBsYWNlaG9sZGVyVGV4dD86IHN0cmluZ1xuICAvKiogQm9vdHN0cmFwIHNpemUgdmFyaWFudCAqL1xuICBzaXplPzogJ3NtJyB8ICdsZydcbiAgLyoqIFNob3cgYSBjbGVhciBidXR0b24gb24gdGhlIGlucHV0ICovXG4gIGlzQ2xlYXJhYmxlPzogYm9vbGVhblxuICAvKiogRGlzYWJsZSB0aGUgaW5wdXQgKi9cbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gIC8qKiBFYXJsaWVzdCBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgbWluRGF0ZT86IERhdGVcbiAgLyoqIExhdGVzdCBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgbWF4RGF0ZT86IERhdGVcbiAgLyoqIE1pbnV0ZSBzdGVwIGluIHRoZSB0aW1lIGxpc3QgKGRlZmF1bHQgNSkgKi9cbiAgdGltZUludGVydmFscz86IG51bWJlclxuICAvKiogVGltZXpvbmUgaWRlbnRpZmllciAoZGVmYXVsdCAnS2FtcGFsYScpICovXG4gIHRpbWV6b25lPzogc3RyaW5nXG4gIC8qKiBBZGRpdGlvbmFsIENTUyBjbGFzc2VzIG9uIHRoZSBpbnB1dCAqL1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgLyoqIElucHV0IGVsZW1lbnQgSUQgKi9cbiAgaWQ/OiBzdHJpbmdcbiAgLyoqIElucHV0IG5hbWUgYXR0cmlidXRlIOKAlCBzdXJmYWNlcyBhcyBlLnRhcmdldC5uYW1lIGluIG9uQ2hhbmdlICovXG4gIG5hbWU/OiBzdHJpbmdcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAgQ29uc3RhbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5jb25zdCBEQVlTX09GX1dFRUsgPSBbJ1N1JywgJ01vJywgJ1R1JywgJ1dlJywgJ1RoJywgJ0ZyJywgJ1NhJ11cbmNvbnN0IE1PTlRIUyA9IFtcbiAgJ0phbnVhcnknLCAnRmVicnVhcnknLCAnTWFyY2gnLCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLFxuICAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInLFxuXVxuY29uc3QgTUlOVVRFUyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDYwIH0sIChfLCBpKSA9PiBpKVxuY29uc3QgWUVBUlNfUEVSX1BBR0UgPSAxMlxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qICBIZWxwZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmNvbnN0IGRheXNJbk1vbnRoID0gKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcik6IG51bWJlciA9PlxuICBuZXcgRGF0ZSh5ZWFyLCBtb250aCArIDEsIDApLmdldERhdGUoKVxuXG5jb25zdCBpc1NhbWVEYXkgPSAoYTogRGF0ZSB8IG51bGwsIGI6IERhdGUgfCBudWxsKTogYm9vbGVhbiA9PlxuICBhICE9PSBudWxsICYmIGIgIT09IG51bGwgJiZcbiAgYS5nZXRGdWxsWWVhcigpID09PSBiLmdldEZ1bGxZZWFyKCkgJiZcbiAgYS5nZXRNb250aCgpID09PSBiLmdldE1vbnRoKCkgJiZcbiAgYS5nZXREYXRlKCkgPT09IGIuZ2V0RGF0ZSgpXG5cbmNvbnN0IGlzRGF0ZUluUmFuZ2UgPSAoZGF0ZTogRGF0ZSwgbWluOiBEYXRlIHwgbnVsbCwgbWF4OiBEYXRlIHwgbnVsbCk6IGJvb2xlYW4gPT4ge1xuICBpZiAobWluICYmIGRhdGUgPCBuZXcgRGF0ZShtaW4uZ2V0RnVsbFllYXIoKSwgbWluLmdldE1vbnRoKCksIG1pbi5nZXREYXRlKCkpKSByZXR1cm4gZmFsc2VcbiAgaWYgKG1heCAmJiBkYXRlID4gbmV3IERhdGUobWF4LmdldEZ1bGxZZWFyKCksIG1heC5nZXRNb250aCgpLCBtYXguZ2V0RGF0ZSgpKSkgcmV0dXJuIGZhbHNlXG4gIHJldHVybiB0cnVlXG59XG5cbmludGVyZmFjZSBDYWxlbmRhckNlbGwge1xuICBkYXk6IG51bWJlclxuICBkYXRlOiBEYXRlXG4gIGlzT3V0c2lkZTogYm9vbGVhblxufVxuXG5jb25zdCBidWlsZENhbGVuZGFyR3JpZCA9ICh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIpOiBDYWxlbmRhckNlbGxbXSA9PiB7XG4gIGNvbnN0IGZpcnN0RGF5ID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpLmdldERheSgpXG4gIGNvbnN0IHRvdGFsRGF5cyA9IGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKVxuICBjb25zdCBjZWxsczogQ2FsZW5kYXJDZWxsW10gPSBbXVxuXG4gIGNvbnN0IHByZXZNb250aERheXMgPSBkYXlzSW5Nb250aCh5ZWFyLCBtb250aCAtIDEpXG4gIGZvciAobGV0IGkgPSBmaXJzdERheSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgY29uc3QgZGF5ID0gcHJldk1vbnRoRGF5cyAtIGlcbiAgICBjZWxscy5wdXNoKHsgZGF5LCBkYXRlOiBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSksIGlzT3V0c2lkZTogdHJ1ZSB9KVxuICB9XG5cbiAgZm9yIChsZXQgZCA9IDE7IGQgPD0gdG90YWxEYXlzOyBkKyspIHtcbiAgICBjZWxscy5wdXNoKHsgZGF5OiBkLCBkYXRlOiBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZCksIGlzT3V0c2lkZTogZmFsc2UgfSlcbiAgfVxuXG4gIGNvbnN0IHJlbWFpbmluZyA9IDQyIC0gY2VsbHMubGVuZ3RoXG4gIGZvciAobGV0IGQgPSAxOyBkIDw9IHJlbWFpbmluZzsgZCsrKSB7XG4gICAgY2VsbHMucHVzaCh7IGRheTogZCwgZGF0ZTogbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCBkKSwgaXNPdXRzaWRlOiB0cnVlIH0pXG4gIH1cblxuICByZXR1cm4gY2VsbHNcbn1cblxuY29uc3QgZm9ybWF0VmFsdWUgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIG1vZGU6IHN0cmluZywgZm10Pzogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKCFkYXRlIHx8IGlzTmFOKGRhdGUuZ2V0VGltZSgpKSkgcmV0dXJuICcnXG5cbiAgY29uc3QgeSA9IGRhdGUuZ2V0RnVsbFllYXIoKVxuICBjb25zdCBNID0gU3RyaW5nKGRhdGUuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJylcbiAgY29uc3QgZCA9IFN0cmluZyhkYXRlLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKVxuICBsZXQgaCA9IGRhdGUuZ2V0SG91cnMoKVxuICBjb25zdCBtID0gU3RyaW5nKGRhdGUuZ2V0TWludXRlcygpKS5wYWRTdGFydCgyLCAnMCcpXG4gIGNvbnN0IGEgPSBoID49IDEyID8gJ1BNJyA6ICdBTSdcbiAgaCA9IGggJSAxMiB8fCAxMlxuICBjb25zdCBoaCA9IFN0cmluZyhoKS5wYWRTdGFydCgyLCAnMCcpXG5cbiAgaWYgKGZtdCkge1xuICAgIHJldHVybiBmbXQucmVwbGFjZSgneXl5eScsIFN0cmluZyh5KSkucmVwbGFjZSgnTU0nLCBNKS5yZXBsYWNlKCdkZCcsIGQpLnJlcGxhY2UoJ2hoJywgaGgpLnJlcGxhY2UoJ21tJywgbSkucmVwbGFjZSgnYWEnLCBhKVxuICB9XG5cbiAgc3dpdGNoIChtb2RlKSB7XG4gICAgY2FzZSAndGltZSc6ICAgICByZXR1cm4gYCR7aGh9OiR7bX0gJHthfWBcbiAgICBjYXNlICdkYXRldGltZSc6IHJldHVybiBgJHt5fS0ke019LSR7ZH0gJHtoaH06JHttfSAke2F9YFxuICAgIGRlZmF1bHQ6ICAgICAgICAgcmV0dXJuIGAke3l9LSR7TX0tJHtkfWBcbiAgfVxufVxuXG4vKipcbiAqIEJ1aWxkIGEgc3ludGhldGljIGV2ZW50IG9iamVjdCBsaWtlIGEgbmF0aXZlIGlucHV0J3Mgb25DaGFuZ2UuXG4gKi9cbmNvbnN0IG1ha2VFdmVudCA9ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCwgaW5wdXROYW1lOiBzdHJpbmcsIHR5cGU6IHN0cmluZyA9ICdkYXRlJyk6IERhdGVQaWNrZXJDaGFuZ2VFdmVudCA9PiAoe1xuICB0YXJnZXQ6IHtcbiAgICB2YWx1ZSxcbiAgICBuYW1lOiBpbnB1dE5hbWUsXG4gICAgdHlwZSxcbiAgfSxcbiAgcHJldmVudERlZmF1bHQ6ICgpID0+IHt9LFxuICBzdG9wUHJvcGFnYXRpb246ICgpID0+IHt9LFxuICBuYXRpdmVFdmVudDogbnVsbCxcbn0pXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogIFBvcG92ZXIgcG9zaXRpb25pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqIEFwcHJveGltYXRlIGhlaWdodHMg4oCUIHVzZWQgYXMgYSBmaXJzdCBndWVzcyBiZWZvcmUgdGhlIHJlYWwgRE9NIGhlaWdodCBpcyBtZWFzdXJlZC4gKi9cbmNvbnN0IFBPUE9WRVJfR1VFU1M6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7IGRhdGU6IDMwMCwgdGltZTogMzAwLCBkYXRldGltZTogNDAwLCB5ZWFyOiAyNTAgfVxuXG4vKipcbiAqIEZpbmQgdGhlIG5lYXJlc3Qgc2Nyb2xsYWJsZSBhbmNlc3RvciAoZm9yIGNhcHR1cmluZyBzY3JvbGwgZXZlbnRzIGluc2lkZVxuICogbW9kYWxzIC8gc2lkZSBwYW5lbHMgLyBjdXN0b20gY29udGFpbmVycykuXG4gKi9cbmNvbnN0IGdldFNjcm9sbFBhcmVudCA9IChlbDogSFRNTEVsZW1lbnQgfCBudWxsKTogSFRNTEVsZW1lbnQgPT4ge1xuICBpZiAoIWVsKSByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XG4gIGxldCBwYXJlbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IGVsLnBhcmVudEVsZW1lbnRcbiAgd2hpbGUgKHBhcmVudCkge1xuICAgIGNvbnN0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUocGFyZW50KVxuICAgIGNvbnN0IG92ZXJmbG93WSA9IHN0eWxlLm92ZXJmbG93WSB8fCBzdHlsZS5vdmVyZmxvd1xuICAgIGlmIChvdmVyZmxvd1kgPT09ICdhdXRvJyB8fCBvdmVyZmxvd1kgPT09ICdzY3JvbGwnKSByZXR1cm4gcGFyZW50XG4gICAgcGFyZW50ID0gcGFyZW50LnBhcmVudEVsZW1lbnRcbiAgfVxuICByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XG59XG5cbmNvbnN0IGNhbGNQb3BvdmVyU3R5bGUgPSAoaW5wdXRFbDogSFRNTEVsZW1lbnQgfCBudWxsLCBwb3BvdmVySGVpZ2h0OiBudW1iZXIpOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0+IHtcbiAgaWYgKCFpbnB1dEVsKSByZXR1cm4ge31cbiAgY29uc3QgcmVjdCA9IGlucHV0RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgY29uc3QgaCA9IHBvcG92ZXJIZWlnaHQgfHwgMzAwXG5cbiAgY29uc3Qgc3BhY2VCZWxvdyA9IHdpbmRvdy5pbm5lckhlaWdodCAtIHJlY3QuYm90dG9tXG4gIGNvbnN0IHNwYWNlQWJvdmUgPSByZWN0LnRvcFxuXG4gIC8qIE9ubHkgZmxpcCBhYm92ZSB3aGVuIGJlbG93IGlzIHRydWx5IHRvbyB0aWdodCBBTkQgYWJvdmUgb2ZmZXJzIG1vcmUgcm9vbSAqL1xuICBjb25zdCBwbGFjZUFib3ZlID0gc3BhY2VCZWxvdyA8IGggJiYgc3BhY2VBYm92ZSA+IHNwYWNlQmVsb3dcblxuICAvKiBSZXNwb25zaXZlOiB1c2Ugc21hbGxlciBtaW4td2lkdGggb24gbW9iaWxlIHRvIHByZXZlbnQgb3ZlcmZsb3cgKi9cbiAgY29uc3QgbWluVyA9IE1hdGgubWF4KHJlY3Qud2lkdGgsIHdpbmRvdy5pbm5lcldpZHRoIDwgNTc2ID8gMjIwIDogMjYwKVxuXG4gIHJldHVybiB7XG4gICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgdG9wOiBwbGFjZUFib3ZlID8gTWF0aC5tYXgoNCwgcmVjdC50b3AgLSBoIC0gNCkgOiByZWN0LmJvdHRvbSArIDQsXG4gICAgbGVmdDogTWF0aC5tYXgoNCwgTWF0aC5taW4ocmVjdC5sZWZ0LCB3aW5kb3cuaW5uZXJXaWR0aCAtIG1pblcgLSA0KSksXG4gICAgbWluV2lkdGg6IG1pblcsXG4gICAgbWF4V2lkdGg6IHdpbmRvdy5pbm5lcldpZHRoIC0gOCxcbiAgICB6SW5kZXg6IDEwNzAsXG4gIH1cbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAgRGF0ZVBpY2tlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIEN1c3RvbSBCb290c3RyYXAtc3R5bGVkIGRhdGUgLyB0aW1lIC8gZGF0ZXRpbWUgcGlja2VyLiBaZXJvIGRlcGVuZGVuY2llcy5cbiAqXG4gKiAqKkltcG9ydGFudDoqKiBUaGUgYWNjb21wYW55aW5nIENTUyAqKm11c3QqKiBiZSBpbXBvcnRlZCBmb3IgdGhlIHBpY2tlciB0byByZW5kZXIgY29ycmVjdGx5OlxuICogYGBganNcbiAqIGltcG9ydCAncmVhY3QtYm9vdHN0cmFwLXBsdWdpbnMvY3NzL3BsdWdpbnMuY3NzJ1xuICogYGBgXG4gKi9cbmNvbnN0IERhdGVQaWNrZXIgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxJbnB1dEVsZW1lbnQsIERhdGVQaWNrZXJQcm9wcz4oKHtcbiAgY2xhc3NOYW1lLFxuICBtb2RlID0gJ2RhdGUnLFxuICBzZWxlY3RlZCxcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBkYXRlRm9ybWF0LFxuICBwbGFjZWhvbGRlclRleHQsXG4gIHNpemUsXG4gIGlzQ2xlYXJhYmxlID0gZmFsc2UsXG4gIGRpc2FibGVkID0gZmFsc2UsXG4gIG1pbkRhdGUsXG4gIG1heERhdGUsXG4gIHRpbWVJbnRlcnZhbHMgPSA1LFxuICB0aW1lem9uZSA9ICdLYW1wYWxhJyxcbiAgaWQsXG4gIG5hbWUsXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgLyogLS0tLSBkZXJpdmVkIC0tLS0gKi9cbiAgY29uc3QgcmVzb2x2ZVZhbHVlID0gKHY6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKTogRGF0ZSB8IG51bGwgPT4ge1xuICAgIGlmICghdikgcmV0dXJuIG51bGxcbiAgICBpZiAodiBpbnN0YW5jZW9mIERhdGUpIHJldHVybiBpc05hTih2LmdldFRpbWUoKSkgPyBudWxsIDogdlxuICAgIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHYgPT09ICdudW1iZXInKSB7XG4gICAgICAvLyBTdGFuZGFyZCBEYXRlIHBhcnNpbmcgKHdvcmtzIGZvciBJU08gODYwMSwgXCJZWVlZLU1NLUREXCIsIGV0Yy4pXG4gICAgICBjb25zdCBkID0gbmV3IERhdGUodilcbiAgICAgIGlmICghaXNOYU4oZC5nZXRUaW1lKCkpKSByZXR1cm4gZFxuXG4gICAgICAvLyBIYW5kbGUgdGltZS1vbmx5IHN0cmluZ3MgZnJvbSBmb3JtYXRWYWx1ZTogXCJoaDptbSBBQVwiXG4gICAgICBpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IHRpbWVNYXRjaCA9IHYubWF0Y2goL14oXFxkezEsMn0pOihcXGR7Mn0pXFxzKihBTXxQTSkkL2kpXG4gICAgICAgIGlmICh0aW1lTWF0Y2gpIHtcbiAgICAgICAgICBsZXQgaCA9IHBhcnNlSW50KHRpbWVNYXRjaFsxXSwgMTApXG4gICAgICAgICAgY29uc3QgbSA9IHBhcnNlSW50KHRpbWVNYXRjaFsyXSwgMTApXG4gICAgICAgICAgY29uc3QgYXAgPSB0aW1lTWF0Y2hbM10udG9VcHBlckNhc2UoKVxuICAgICAgICAgIGlmIChoID09PSAxMiAmJiBhcCA9PT0gJ0FNJykgaCA9IDBcbiAgICAgICAgICBpZiAoaCAhPT0gMTIgJiYgYXAgPT09ICdQTScpIGggKz0gMTJcbiAgICAgICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpXG4gICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKG5vdy5nZXRGdWxsWWVhcigpLCBub3cuZ2V0TW9udGgoKSwgbm93LmdldERhdGUoKSwgaCwgbSwgMCwgMClcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhhbmRsZSBkYXRldGltZSBzdHJpbmdzIGZyb20gZm9ybWF0VmFsdWU6IFwiWVlZWS1NTS1ERCBoaDptbSBBQVwiXG4gICAgICAgIGNvbnN0IGR0TWF0Y2ggPSB2Lm1hdGNoKC9eKFxcZHs0fSktKFxcZHsyfSktKFxcZHsyfSlcXHMrKFxcZHsxLDJ9KTooXFxkezJ9KVxccyooQU18UE0pJC9pKVxuICAgICAgICBpZiAoZHRNYXRjaCkge1xuICAgICAgICAgIGxldCBoID0gcGFyc2VJbnQoZHRNYXRjaFs0XSwgMTApXG4gICAgICAgICAgY29uc3QgbSA9IHBhcnNlSW50KGR0TWF0Y2hbNV0sIDEwKVxuICAgICAgICAgIGNvbnN0IGFwID0gZHRNYXRjaFs2XS50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgaWYgKGggPT09IDEyICYmIGFwID09PSAnQU0nKSBoID0gMFxuICAgICAgICAgIGlmIChoICE9PSAxMiAmJiBhcCA9PT0gJ1BNJykgaCArPSAxMlxuICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShwYXJzZUludChkdE1hdGNoWzFdKSwgcGFyc2VJbnQoZHRNYXRjaFsyXSkgLSAxLCBwYXJzZUludChkdE1hdGNoWzNdKSwgaCwgbSwgMCwgMClcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCByZXNvbHZlZFZhbHVlID0gUmVhY3QudXNlTWVtbyhcbiAgICAoKSA9PiByZXNvbHZlVmFsdWUoc2VsZWN0ZWQgPz8gdmFsdWUpLFxuICAgIFtcbiAgICAgIHNlbGVjdGVkIGluc3RhbmNlb2YgRGF0ZSA/IHNlbGVjdGVkLmdldFRpbWUoKSA6IHNlbGVjdGVkLFxuICAgICAgdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUuZ2V0VGltZSgpIDogdmFsdWUsXG4gICAgXSxcbiAgKVxuICBjb25zdCBzaG93Q2FsZW5kYXIgPSBtb2RlID09PSAnZGF0ZScgfHwgbW9kZSA9PT0gJ2RhdGV0aW1lJ1xuICBjb25zdCBzaG93VGltZSA9IG1vZGUgPT09ICd0aW1lJyB8fCBtb2RlID09PSAnZGF0ZXRpbWUnXG5cbiAgLyogLS0tLSBpbnRlcm5hbCBzdGF0ZSAtLS0tICovXG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3ZpZXdZZWFyLCBzZXRWaWV3WWVhcl0gPSBSZWFjdC51c2VTdGF0ZSgoKSA9PlxuICAgIHJlc29sdmVkVmFsdWUgPyByZXNvbHZlZFZhbHVlLmdldEZ1bGxZZWFyKCkgOiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkpXG4gIGNvbnN0IFt2aWV3TW9udGgsIHNldFZpZXdNb250aF0gPSBSZWFjdC51c2VTdGF0ZSgoKSA9PlxuICAgIHJlc29sdmVkVmFsdWUgPyByZXNvbHZlZFZhbHVlLmdldE1vbnRoKCkgOiBuZXcgRGF0ZSgpLmdldE1vbnRoKCkpXG4gIGNvbnN0IFt0ZW1wRGF0ZSwgc2V0VGVtcERhdGVdID0gUmVhY3QudXNlU3RhdGU8RGF0ZSB8IG51bGw+KHJlc29sdmVkVmFsdWUpXG4gIGNvbnN0IFt0ZW1wSG91cnMsIHNldFRlbXBIb3Vyc10gPSBSZWFjdC51c2VTdGF0ZSgoKSA9PlxuICAgIHJlc29sdmVkVmFsdWUgPyAocmVzb2x2ZWRWYWx1ZS5nZXRIb3VycygpICUgMTIgfHwgMTIpIDogMTIpXG4gIGNvbnN0IFt0ZW1wTWlucywgc2V0VGVtcE1pbnNdID0gUmVhY3QudXNlU3RhdGUoKCkgPT5cbiAgICByZXNvbHZlZFZhbHVlID8gcmVzb2x2ZWRWYWx1ZS5nZXRNaW51dGVzKCkgOiAwKVxuICBjb25zdCBbdGVtcEFtUG0sIHNldFRlbXBBbVBtXSA9IFJlYWN0LnVzZVN0YXRlKCgpID0+XG4gICAgcmVzb2x2ZWRWYWx1ZSA/IChyZXNvbHZlZFZhbHVlLmdldEhvdXJzKCkgPj0gMTIgPyAnUE0nIDogJ0FNJykgOiAnQU0nKVxuICBjb25zdCBbc2hvd1llYXJQaWNrZXIsIHNldFNob3dZZWFyUGlja2VyXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbeWVhclBhZ2UsIHNldFllYXJQYWdlXSA9IFJlYWN0LnVzZVN0YXRlKCgpID0+XG4gICAgTWF0aC5mbG9vcigocmVzb2x2ZWRWYWx1ZSA/IHJlc29sdmVkVmFsdWUuZ2V0RnVsbFllYXIoKSA6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSkgLyBZRUFSU19QRVJfUEFHRSkgKiBZRUFSU19QRVJfUEFHRVxuICApXG4gIGNvbnN0IFtwb3BvdmVyU3R5bGUsIHNldFBvcG92ZXJTdHlsZV0gPSBSZWFjdC51c2VTdGF0ZTxSZWFjdC5DU1NQcm9wZXJ0aWVzPih7fSlcblxuICBjb25zdCBpbnB1dFJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKVxuICBjb25zdCBwb3BvdmVyUmVmID0gUmVhY3QudXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBwb3J0YWxSZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKVxuXG4gIC8qIC0tLS0gcG9ydGFsIGNvbnRhaW5lciAtLS0tICovXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICAgIGVsLmNsYXNzTmFtZSA9ICdkYXRlcGlja2VyLXBvcnRhbC1yb290J1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWwpXG4gICAgcG9ydGFsUmVmLmN1cnJlbnQgPSBlbFxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoZWwucGFyZW50Tm9kZSkgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlbClcbiAgICAgIHBvcnRhbFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIH1cbiAgfSwgW10pXG5cbiAgLyogLS0tLSBzeW5jIHRlbXAgc3RhdGUgd2hlbiB2YWx1ZSBjaGFuZ2VzIGV4dGVybmFsbHkgLS0tLSAqL1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZXNvbHZlZFZhbHVlICYmICFpc05hTihyZXNvbHZlZFZhbHVlLmdldFRpbWUoKSkpIHtcbiAgICAgIHNldFRlbXBEYXRlKHJlc29sdmVkVmFsdWUpXG4gICAgICBzZXRWaWV3WWVhcihyZXNvbHZlZFZhbHVlLmdldEZ1bGxZZWFyKCkpXG4gICAgICBzZXRWaWV3TW9udGgocmVzb2x2ZWRWYWx1ZS5nZXRNb250aCgpKVxuICAgICAgc2V0VGVtcEhvdXJzKHJlc29sdmVkVmFsdWUuZ2V0SG91cnMoKSAlIDEyIHx8IDEyKVxuICAgICAgc2V0VGVtcE1pbnMocmVzb2x2ZWRWYWx1ZS5nZXRNaW51dGVzKCkpXG4gICAgICBzZXRUZW1wQW1QbShyZXNvbHZlZFZhbHVlLmdldEhvdXJzKCkgPj0gMTIgPyAnUE0nIDogJ0FNJylcbiAgICAgIHNldFllYXJQYWdlKE1hdGguZmxvb3IocmVzb2x2ZWRWYWx1ZS5nZXRGdWxsWWVhcigpIC8gWUVBUlNfUEVSX1BBR0UpICogWUVBUlNfUEVSX1BBR0UpXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFRlbXBEYXRlKG51bGwpXG4gICAgfVxuICB9LCBbcmVzb2x2ZWRWYWx1ZV0pXG5cbiAgLyogLS0tLSByZXBvc2l0aW9uIHBvcG92ZXIgb24gb3BlbiAvIHNjcm9sbCAvIHJlc2l6ZSAtLS0tICovXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc09wZW4pIHJldHVyblxuXG4gICAgLyogTWVhc3VyZSBhY3R1YWwgcG9wb3ZlciBoZWlnaHQgc28gd2UgcG9zaXRpb24gd2l0aCBubyB3YXN0ZWQgc3BhY2UgKi9cbiAgICBjb25zdCBnZXRIZWlnaHQgPSAoKTogbnVtYmVyID0+IHtcbiAgICAgIGlmIChwb3BvdmVyUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuIHBvcG92ZXJSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHRcbiAgICAgIH1cbiAgICAgIHJldHVybiBQT1BPVkVSX0dVRVNTW3Nob3dZZWFyUGlja2VyID8gJ3llYXInIDogbW9kZV0gfHwgMzAwXG4gICAgfVxuXG4gICAgY29uc3Qgc2Nyb2xsUGFyZW50ID0gZ2V0U2Nyb2xsUGFyZW50KGlucHV0UmVmLmN1cnJlbnQpXG5cbiAgICBjb25zdCB1cGRhdGUgPSAoKSA9PiB7XG4gICAgICAvKiBGb3JjZSBhIHBhaW50IGZyYW1lIHNvIHRoZSBwb3BvdmVyIGhhcyBpdHMgcmVhbCBzaXplICovXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBzZXRQb3BvdmVyU3R5bGUoY2FsY1BvcG92ZXJTdHlsZShpbnB1dFJlZi5jdXJyZW50LCBnZXRIZWlnaHQoKSkpXG4gICAgICB9KVxuICAgIH1cbiAgICB1cGRhdGUoKVxuXG4gICAgLyogTGlzdGVuIG9uIHRoZSBuZWFyZXN0IHNjcm9sbGFibGUgYW5jZXN0b3IgKGUuZy4gbW9kYWwgYm9keSkgQU5EIHRoZSB3aW5kb3cgKi9cbiAgICBzY3JvbGxQYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlLCB7IHBhc3NpdmU6IHRydWUgfSlcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBzY3JvbGxQYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlKVxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZSlcbiAgICB9XG4gIH0sIFtpc09wZW4sIG1vZGUsIHNob3dZZWFyUGlja2VyXSlcblxuICAvKiAtLS0tIGNsaWNrIG91dHNpZGUgdG8gY2xvc2UgLS0tLSAqL1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNPcGVuKSByZXR1cm5cbiAgICBjb25zdCBoYW5kbGVyID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmIChwb3BvdmVyUmVmLmN1cnJlbnQgJiYgIXBvcG92ZXJSZWYuY3VycmVudC5jb250YWlucyhlLnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgIGlucHV0UmVmLmN1cnJlbnQgJiYgIWlucHV0UmVmLmN1cnJlbnQuY29udGFpbnMoZS50YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgICAgc2V0SXNPcGVuKGZhbHNlKVxuICAgICAgICBzZXRTaG93WWVhclBpY2tlcihmYWxzZSlcbiAgICAgIH1cbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlcilcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlcilcbiAgfSwgW2lzT3Blbl0pXG5cbiAgLyogLS0tLSBjb21taXQgaGVscGVycyAtLS0tICovXG4gIGNvbnN0IGJ1aWxkRGF0ZSA9IChiYXNlOiBEYXRlLCBoMTI6IG51bWJlciwgbWluczogbnVtYmVyLCBhbXBtOiBzdHJpbmcpOiBEYXRlID0+IHtcbiAgICBjb25zdCBkID0gbmV3IERhdGUoYmFzZSlcbiAgICBsZXQgaCA9IGgxMiAlIDEyXG4gICAgaWYgKGFtcG0gPT09ICdQTScpIGggKz0gMTJcbiAgICBpZiAoaCA9PT0gMTIgJiYgYW1wbSA9PT0gJ0FNJykgaCA9IDBcbiAgICBkLnNldEhvdXJzKGgsIG1pbnMsIDAsIDApXG4gICAgcmV0dXJuIGRcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlIG9uQ2hhbmdlIHdpdGggYSBwcmUtYnVpbHQgZGF0ZSB3aXRob3V0IGNsb3NpbmcgdGhlIHBvcG92ZXIuXG4gICAqIENhbGxlcnMgbXVzdCBidWlsZCB0aGUgY29tcGxldGUgZGF0ZSAoaW5jbHVkaW5nIHRpbWUpIGJlZm9yZSBwYXNzaW5nIGl0IGluLlxuICAgKi9cbiAgY29uc3QgZmlyZUNoYW5nZSA9IChkYXRlOiBEYXRlIHwgbnVsbCk6IHZvaWQgPT4ge1xuICAgIGlmICghZGF0ZSB8fCBpc05hTihkYXRlLmdldFRpbWUoKSkpIHJldHVyblxuICAgIGNvbnN0IGZvcm1hdHRlZCA9IGZvcm1hdFZhbHVlKGRhdGUsIG1vZGUsIGRhdGVGb3JtYXQpXG4gICAgb25DaGFuZ2U/LihtYWtlRXZlbnQoZm9ybWF0dGVkLCBuYW1lIHx8ICcnLCBtb2RlKSlcbiAgfVxuXG4gIGNvbnN0IGNvbW1pdCA9IChkYXRlOiBEYXRlIHwgbnVsbCk6IHZvaWQgPT4ge1xuICAgIGlmICghZGF0ZSkge1xuICAgICAgb25DaGFuZ2U/LihtYWtlRXZlbnQobnVsbCwgbmFtZSB8fCAnJywgbW9kZSkpXG4gICAgICBzZXRJc09wZW4oZmFsc2UpXG4gICAgICBzZXRTaG93WWVhclBpY2tlcihmYWxzZSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBmaXJlQ2hhbmdlKGRhdGUpXG4gICAgaWYgKG1vZGUgPT09ICdkYXRlJykgeyBzZXRJc09wZW4oZmFsc2UpOyBzZXRTaG93WWVhclBpY2tlcihmYWxzZSkgfVxuICB9XG5cbiAgY29uc3QgY29tbWl0RGF0ZU9ubHkgPSAoZGF0ZTogRGF0ZSk6IHZvaWQgPT4ge1xuICAgIHNldFRlbXBEYXRlKGRhdGUpXG4gICAgaWYgKG1vZGUgPT09ICdkYXRlJykge1xuICAgICAgY29tbWl0KGRhdGUpXG4gICAgfSBlbHNlIGlmIChtb2RlID09PSAnZGF0ZXRpbWUnKSB7XG4gICAgICAvLyBCdWlsZCBmdWxsIGRhdGV0aW1lIChkYXRlICsgY3VycmVudCB0aW1lIHNlbGVjdGlvbikgYW5kIGZpcmVcbiAgICAgIGNvbnN0IGQgPSBidWlsZERhdGUoZGF0ZSwgdGVtcEhvdXJzLCB0ZW1wTWlucywgdGVtcEFtUG0pXG4gICAgICBmaXJlQ2hhbmdlKGQpXG4gICAgfVxuICB9XG5cbiAgLyogLS0tLSBjYWxlbmRhciBncmlkIC0tLS0gKi9cbiAgY29uc3QgZ3JpZCA9IGJ1aWxkQ2FsZW5kYXJHcmlkKHZpZXdZZWFyLCB2aWV3TW9udGgpXG5cbiAgY29uc3QgaGFuZGxlUHJldk1vbnRoID0gKCkgPT4ge1xuICAgIGxldCBuZXdZID0gdmlld1llYXIsIG5ld00gPSB2aWV3TW9udGhcbiAgICBpZiAodmlld01vbnRoID09PSAwKSB7IG5ld1kgPSB2aWV3WWVhciAtIDE7IG5ld00gPSAxMSB9XG4gICAgZWxzZSBuZXdNID0gdmlld01vbnRoIC0gMVxuICAgIHNldFZpZXdZZWFyKG5ld1kpOyBzZXRWaWV3TW9udGgobmV3TSlcbiAgICBjb25zdCBiYXNlID0gdGVtcERhdGUgfHwgbmV3IERhdGUoKVxuICAgIGNvbnN0IG1heEQgPSBkYXlzSW5Nb250aChuZXdZLCBuZXdNKVxuICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZShuZXdZLCBuZXdNLCBNYXRoLm1pbihiYXNlLmdldERhdGUoKSwgbWF4RCkpXG4gICAgc2V0VGVtcERhdGUobmV3RGF0ZSlcbiAgICBmaXJlQ2hhbmdlKHNob3dUaW1lID8gYnVpbGREYXRlKG5ld0RhdGUsIHRlbXBIb3VycywgdGVtcE1pbnMsIHRlbXBBbVBtKSA6IG5ld0RhdGUpXG4gIH1cbiAgY29uc3QgaGFuZGxlTmV4dE1vbnRoID0gKCkgPT4ge1xuICAgIGxldCBuZXdZID0gdmlld1llYXIsIG5ld00gPSB2aWV3TW9udGhcbiAgICBpZiAodmlld01vbnRoID09PSAxMSkgeyBuZXdZID0gdmlld1llYXIgKyAxOyBuZXdNID0gMCB9XG4gICAgZWxzZSBuZXdNID0gdmlld01vbnRoICsgMVxuICAgIHNldFZpZXdZZWFyKG5ld1kpOyBzZXRWaWV3TW9udGgobmV3TSlcbiAgICBjb25zdCBiYXNlID0gdGVtcERhdGUgfHwgbmV3IERhdGUoKVxuICAgIGNvbnN0IG1heEQgPSBkYXlzSW5Nb250aChuZXdZLCBuZXdNKVxuICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZShuZXdZLCBuZXdNLCBNYXRoLm1pbihiYXNlLmdldERhdGUoKSwgbWF4RCkpXG4gICAgc2V0VGVtcERhdGUobmV3RGF0ZSlcbiAgICBmaXJlQ2hhbmdlKHNob3dUaW1lID8gYnVpbGREYXRlKG5ld0RhdGUsIHRlbXBIb3VycywgdGVtcE1pbnMsIHRlbXBBbVBtKSA6IG5ld0RhdGUpXG4gIH1cblxuICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKClcbiAgY29uc3QgbWluRHQgPSBtaW5EYXRlID8gbmV3IERhdGUobWluRGF0ZS5nZXRGdWxsWWVhcigpLCBtaW5EYXRlLmdldE1vbnRoKCksIG1pbkRhdGUuZ2V0RGF0ZSgpKSA6IG51bGxcbiAgY29uc3QgbWF4RHQgPSBtYXhEYXRlID8gbmV3IERhdGUobWF4RGF0ZS5nZXRGdWxsWWVhcigpLCBtYXhEYXRlLmdldE1vbnRoKCksIG1heERhdGUuZ2V0RGF0ZSgpKSA6IG51bGxcblxuICAvKiAtLS0tIHRpbWUgY2hhbmdlIGhhbmRsZXJzIC0tLS0gKi9cbiAgY29uc3QgaGFuZGxlSG91ckNoYW5nZSA9IChoOiBudW1iZXIpID0+IHtcbiAgICBzZXRUZW1wSG91cnMoaClcbiAgICBpZiAoc2hvd1RpbWUpIHtcbiAgICAgIGNvbnN0IGQgPSBidWlsZERhdGUodGVtcERhdGUgfHwgbmV3IERhdGUoKSwgaCwgdGVtcE1pbnMsIHRlbXBBbVBtKVxuICAgICAgb25DaGFuZ2U/LihtYWtlRXZlbnQoZm9ybWF0VmFsdWUoZCwgbW9kZSwgZGF0ZUZvcm1hdCksIG5hbWUgfHwgJycsIG1vZGUpKVxuICAgIH1cbiAgfVxuICBjb25zdCBoYW5kbGVNaW5DaGFuZ2UgPSAobTogbnVtYmVyKSA9PiB7XG4gICAgc2V0VGVtcE1pbnMobSlcbiAgICBpZiAoc2hvd1RpbWUpIHtcbiAgICAgIGNvbnN0IGQgPSBidWlsZERhdGUodGVtcERhdGUgfHwgbmV3IERhdGUoKSwgdGVtcEhvdXJzLCBtLCB0ZW1wQW1QbSlcbiAgICAgIG9uQ2hhbmdlPy4obWFrZUV2ZW50KGZvcm1hdFZhbHVlKGQsIG1vZGUsIGRhdGVGb3JtYXQpLCBuYW1lIHx8ICcnLCBtb2RlKSlcbiAgICB9XG4gIH1cbiAgY29uc3QgaGFuZGxlQW1QbUNoYW5nZSA9IChhcDogc3RyaW5nKSA9PiB7XG4gICAgc2V0VGVtcEFtUG0oYXApXG4gICAgaWYgKHNob3dUaW1lKSB7XG4gICAgICBjb25zdCBkID0gYnVpbGREYXRlKHRlbXBEYXRlIHx8IG5ldyBEYXRlKCksIHRlbXBIb3VycywgdGVtcE1pbnMsIGFwKVxuICAgICAgb25DaGFuZ2U/LihtYWtlRXZlbnQoZm9ybWF0VmFsdWUoZCwgbW9kZSwgZGF0ZUZvcm1hdCksIG5hbWUgfHwgJycsIG1vZGUpKVxuICAgIH1cbiAgfVxuXG4gIC8qIC0tLS0geWVhciBwaWNrZXIgLS0tLSAqL1xuICBjb25zdCBvcGVuWWVhclBpY2tlciA9ICgpID0+IHtcbiAgICBzZXRZZWFyUGFnZShNYXRoLmZsb29yKHZpZXdZZWFyIC8gWUVBUlNfUEVSX1BBR0UpICogWUVBUlNfUEVSX1BBR0UpXG4gICAgc2V0U2hvd1llYXJQaWNrZXIodHJ1ZSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVllYXJTZWxlY3QgPSAoeTogbnVtYmVyKSA9PiB7XG4gICAgc2V0Vmlld1llYXIoeSlcbiAgICBzZXRTaG93WWVhclBpY2tlcihmYWxzZSlcbiAgICBjb25zdCBiYXNlID0gdGVtcERhdGUgfHwgbmV3IERhdGUoKVxuICAgIGNvbnN0IG1heEQgPSBkYXlzSW5Nb250aCh5LCB2aWV3TW9udGgpXG4gICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKHksIHZpZXdNb250aCwgTWF0aC5taW4oYmFzZS5nZXREYXRlKCksIG1heEQpKVxuICAgIHNldFRlbXBEYXRlKG5ld0RhdGUpXG4gICAgZmlyZUNoYW5nZShzaG93VGltZSA/IGJ1aWxkRGF0ZShuZXdEYXRlLCB0ZW1wSG91cnMsIHRlbXBNaW5zLCB0ZW1wQW1QbSkgOiBuZXdEYXRlKVxuICB9XG5cbiAgY29uc3QgeWVhclBhZ2VTdGFydCA9IE1hdGguZmxvb3IoeWVhclBhZ2UgLyBZRUFSU19QRVJfUEFHRSkgKiBZRUFSU19QRVJfUEFHRVxuICBjb25zdCB5ZWFycyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IFlFQVJTX1BFUl9QQUdFIH0sIChfLCBpKSA9PiB5ZWFyUGFnZVN0YXJ0ICsgaSlcblxuICAvKiAtLS0tIGNsZWFyIC0tLS0gKi9cbiAgY29uc3QgaGFuZGxlQ2xlYXIgPSAoZTogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBzZXRUZW1wRGF0ZShudWxsKVxuICAgIG9uQ2hhbmdlPy4obWFrZUV2ZW50KG51bGwsIG5hbWUgfHwgJycpKVxuICB9XG5cbiAgLyogLS0tLSBrZXlib2FyZCAtLS0tICovXG4gIGNvbnN0IGhhbmRsZUlucHV0S2V5RG93biA9IChlOiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykgeyBzZXRJc09wZW4oZmFsc2UpOyBzZXRTaG93WWVhclBpY2tlcihmYWxzZSk7IGlucHV0UmVmLmN1cnJlbnQ/LmJsdXIoKSB9XG4gICAgaWYgKGUua2V5ID09PSAnQXJyb3dEb3duJyB8fCBlLmtleSA9PT0gJ0VudGVyJyB8fCBlLmtleSA9PT0gJyAnKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgIHNldElzT3Blbih0cnVlKVxuICAgIH1cbiAgfVxuXG4gIC8qIC0tLS0gbWVyZ2VkIHJlZiAtLS0tICovXG4gIGNvbnN0IG1lcmdlSW5wdXRSZWYgPSBSZWFjdC51c2VDYWxsYmFjaygobm9kZTogSFRNTElucHV0RWxlbWVudCB8IG51bGwpID0+IHtcbiAgICBpbnB1dFJlZi5jdXJyZW50ID0gbm9kZVxuICAgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSByZWYobm9kZSlcbiAgICBlbHNlIGlmIChyZWYpIHJlZi5jdXJyZW50ID0gbm9kZVxuICB9LCBbcmVmXSlcblxuICAvKiAtLS0tIHJlbmRlciAtLS0tICovXG4gIGNvbnN0IHBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXJUZXh0XG4gICAgPz8gKG1vZGUgPT09ICd0aW1lJyA/ICdTZWxlY3QgdGltZScgOiBtb2RlID09PSAnZGF0ZXRpbWUnID8gJ1NlbGVjdCBkYXRlICYgdGltZScgOiAnU2VsZWN0IGRhdGUnKVxuXG4gIGNvbnN0IHBvcG92ZXIgPSAoXG4gICAgPGRpdlxuICAgICAgcmVmPXtwb3BvdmVyUmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ2RhdGVwaWNrZXItcG9wb3ZlciBjYXJkIGJvcmRlciBzaGFkb3ctc20nLFxuICAgICAgICBtb2RlID09PSAnZGF0ZXRpbWUnICYmICdkYXRlcGlja2VyLXBvcG92ZXItLXdpZGUnXG4gICAgICApfVxuICAgICAgc3R5bGU9e3BvcG92ZXJTdHlsZX1cbiAgICA+XG4gICAgICB7LyogPT09PT09PT09PT09PT0gWUVBUiBQSUNLRVIgPT09PT09PT09PT09PT0gKi99XG4gICAgICB7c2hvd1llYXJQaWNrZXIgJiYgc2hvd0NhbGVuZGFyICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXllYXItcGlja2VyIHAtM1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0yXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBib3JkZXItMCBweC0xXCIgb25DbGljaz17KCkgPT4gc2V0WWVhclBhZ2UoeWVhclBhZ2UgLSBZRUFSU19QRVJfUEFHRSl9IGFyaWEtbGFiZWw9XCJQcmV2aW91cyB5ZWFyc1wiPiZsc2FxdW87PC9idXR0b24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmdy1zZW1pYm9sZCBzbWFsbFwiPnt5ZWFyUGFnZVN0YXJ0fSDigJMge3llYXJQYWdlU3RhcnQgKyBZRUFSU19QRVJfUEFHRSAtIDF9PC9zcGFuPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3NOYW1lPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1zZWNvbmRhcnkgYm9yZGVyLTAgcHgtMVwiIG9uQ2xpY2s9eygpID0+IHNldFllYXJQYWdlKHllYXJQYWdlICsgWUVBUlNfUEVSX1BBR0UpfSBhcmlhLWxhYmVsPVwiTmV4dCB5ZWFyc1wiPiZyc2FxdW87PC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXllYXItZ3JpZFwiPlxuICAgICAgICAgICAge3llYXJzLm1hcCgoeSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBpc0N1cnJlbnRZZWFyID0geSA9PT0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpXG4gICAgICAgICAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0ZW1wRGF0ZSAmJiB5ID09PSB0ZW1wRGF0ZS5nZXRGdWxsWWVhcigpXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAga2V5PXt5fVxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAnZGF0ZXBpY2tlci15ZWFyLWNlbGwgYnRuIGJ0bi1zbScsXG4gICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQgJiYgJ2J0bi1wcmltYXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgIWlzU2VsZWN0ZWQgJiYgaXNDdXJyZW50WWVhciAmJiAnYnRuLW91dGxpbmUtcHJpbWFyeScsXG4gICAgICAgICAgICAgICAgICAgICFpc1NlbGVjdGVkICYmICFpc0N1cnJlbnRZZWFyICYmICdidG4tbGlnaHQgYm9yZGVyJ1xuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVllYXJTZWxlY3QoeSl9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3l9XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIHsvKiA9PT09PT09PT09PT09PSBDQUxFTkRBUiArIFRJTUUgPT09PT09PT09PT09PT0gKi99XG4gICAgICB7IXNob3dZZWFyUGlja2VyICYmIChcbiAgICAgICAgPD5cblxuICAgICAgICAgIHsvKiAtLS0tIENBTEVOREFSICsgVElNRSBDT05UQUlORVIgLS0tLSAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y24oJ2QtZmxleCcsIG1vZGUgPT09ICdkYXRldGltZScgPyAnZmxleC1yb3cnIDogJ2ZsZXgtY29sdW1uJyl9PlxuXG4gICAgICAgICAgey8qIC0tLS0gQ0FMRU5EQVIgLS0tLSAqL31cbiAgICAgICAgICB7c2hvd0NhbGVuZGFyICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci1jYWxlbmRhciBwLTJcIj5cbiAgICAgICAgICAgICAgey8qIE1vbnRoIC8gWWVhciBoZWFkZXIgKi99XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3NOYW1lPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1zZWNvbmRhcnkgYm9yZGVyLTAgcHgtMVwiIG9uQ2xpY2s9e2hhbmRsZVByZXZNb250aH0gYXJpYS1sYWJlbD1cIlByZXZpb3VzIG1vbnRoXCI+JmxzYXF1bzs8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZ3LXNlbWlib2xkIHNtYWxsXCI+e01PTlRIU1t2aWV3TW9udGhdfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ0biBidG4tc20gYnRuLWxpbmsgdGV4dC1kZWNvcmF0aW9uLW5vbmUgdGV4dC1wcmltYXJ5IGZ3LXNlbWlib2xkIHNtYWxsIHAtMFwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29wZW5ZZWFyUGlja2VyfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2hvb3NlIHllYXJcIlxuICAgICAgICAgICAgICAgICAgPnt2aWV3WWVhcn08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBib3JkZXItMCBweC0xXCIgb25DbGljaz17aGFuZGxlTmV4dE1vbnRofSBhcmlhLWxhYmVsPVwiTmV4dCBtb250aFwiPiZyc2FxdW87PC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIHsvKiBEYXktb2Ytd2VlayBoZWFkZXJzICovfVxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItZGF5cy1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICB7REFZU19PRl9XRUVLLm1hcChkID0+IChcbiAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtkfSBjbGFzc05hbWU9XCJkYXRlcGlja2VyLWRheS1sYWJlbFwiPntkfTwvZGl2PlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICB7LyogRGF5IGdyaWQgKi99XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci1kYXlzLWdyaWRcIj5cbiAgICAgICAgICAgICAgICB7Z3JpZC5tYXAoKGNlbGwsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGlzVG9kYXkgPSBpc1NhbWVEYXkoY2VsbC5kYXRlLCB0b2RheSlcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0ZW1wRGF0ZSAmJiBpc1NhbWVEYXkoY2VsbC5kYXRlLCB0ZW1wRGF0ZSlcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGluUmFuZ2UgPSBpc0RhdGVJblJhbmdlKGNlbGwuZGF0ZSwgbWluRHQsIG1heER0KVxuICAgICAgICAgICAgICAgICAgY29uc3QgaXNEaXNhYmxlZERheSA9IGNlbGwuaXNPdXRzaWRlIHx8ICFpblJhbmdlXG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e2l9XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWREYXl9XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICdkYXRlcGlja2VyLWRheScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RvZGF5ICYmICdkYXRlcGlja2VyLWRheS0tdG9kYXknLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZCAmJiAnZGF0ZXBpY2tlci1kYXktLXNlbGVjdGVkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuaXNPdXRzaWRlICYmICdkYXRlcGlja2VyLWRheS0tb3V0c2lkZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAhaW5SYW5nZSAmJiAnZGF0ZXBpY2tlci1kYXktLWRpc2FibGVkJ1xuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gY29tbWl0RGF0ZU9ubHkoY2VsbC5kYXRlKX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17Y2VsbC5pc091dHNpZGUgPyAtMSA6IDB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7Y2VsbC5kYXl9XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICB7LyogLS0tLSBESVZJREVSIChkYXRldGltZSBtb2RlKSAtLS0tICovfVxuICAgICAgICAgIHttb2RlID09PSAnZGF0ZXRpbWUnICYmIDxkaXYgY2xhc3NOYW1lPVwidnIgbXgtMSBteS0yXCIgLz59XG5cbiAgICAgICAgICB7LyogLS0tLSBUSU1FIC0tLS0gKi99XG4gICAgICAgICAge3Nob3dUaW1lICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci10aW1lIHAtMiBkLWZsZXggZmxleC1jb2x1bW5cIiBzdHlsZT17eyBtaW5XaWR0aDogMTgwIH19PlxuICAgICAgICAgICAgICB7bW9kZSA9PT0gJ2RhdGV0aW1lJyAmJiA8ZGl2IGNsYXNzTmFtZT1cInNtYWxsIGZ3LXNlbWlib2xkIHRleHQtbXV0ZWQgdGV4dC1jZW50ZXIgbWItMVwiPlRpbWU8L2Rpdj59XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICB7LyogSG91ciBjb2x1bW4gKi99XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXRpbWUtY29sXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItdGltZS1jb2wtbGFiZWxcIj5Ib3VyPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItdGltZS1jb2wtc2Nyb2xsXCI+XG4gICAgICAgICAgICAgICAgICAgIHtBcnJheS5mcm9tKHsgbGVuZ3RoOiAxMiB9LCAoXywgaSkgPT4gaSArIDEpLm1hcChoID0+IChcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2h9XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oJ2RhdGVwaWNrZXItdGltZS1pdGVtJywgaCA9PT0gdGVtcEhvdXJzICYmICdhY3RpdmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUhvdXJDaGFuZ2UoaCl9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge1N0cmluZyhoKS5wYWRTdGFydCgyLCAnMCcpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImRhdGVwaWNrZXItdGltZS1zZXBhcmF0b3JcIj46PC9zcGFuPlxuICAgICAgICAgICAgICAgIHsvKiBNaW51dGUgY29sdW1uICovfVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci10aW1lLWNvbFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXRpbWUtY29sLWxhYmVsXCI+TWluPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVwaWNrZXItdGltZS1jb2wtc2Nyb2xsXCI+XG4gICAgICAgICAgICAgICAgICAgIHtNSU5VVEVTLm1hcChtID0+IChcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e219XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oJ2RhdGVwaWNrZXItdGltZS1pdGVtJywgbSA9PT0gdGVtcE1pbnMgJiYgJ2FjdGl2ZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlTWluQ2hhbmdlKG0pfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtTdHJpbmcobSkucGFkU3RhcnQoMiwgJzAnKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB7LyogQU0vUE0gY29sdW1uICovfVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlci10aW1lLWNvbFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXRpbWUtY29sLWxhYmVsXCI+Jm5ic3A7PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMSBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIHtbJ0FNJywgJ1BNJ10ubWFwKGFwID0+IChcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2FwfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKCdkYXRlcGlja2VyLXRpbWUtaXRlbScsICdkYXRlcGlja2VyLXRpbWUtaXRlbS0tYW1wbScsIHRlbXBBbVBtID09PSBhcCAmJiAnYWN0aXZlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVBbVBtQ2hhbmdlKGFwKX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7YXB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJkYXRlcGlja2VyLXdyYXBwZXIgcG9zaXRpb24tcmVsYXRpdmUgZC1pbmxpbmUtYmxvY2sgdy0xMDBcIiBzdHlsZT17eyBtaW5XaWR0aDogMCB9fT5cbiAgICAgIHsvKiAtLS0tIElucHV0IC0tLS0gKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHJlZj17bWVyZ2VJbnB1dFJlZn1cbiAgICAgICAgICBpZD17aWR9XG4gICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgcmVhZE9ubHlcbiAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICdmb3JtLWNvbnRyb2wnLFxuICAgICAgICAgICAgc2l6ZSA9PT0gJ3NtJyAmJiAnZm9ybS1jb250cm9sLXNtJyxcbiAgICAgICAgICAgIHNpemUgPT09ICdsZycgJiYgJ2Zvcm0tY29udHJvbC1sZycsXG4gICAgICAgICAgICAncGUtNScsXG4gICAgICAgICAgICBjbGFzc05hbWVcbiAgICAgICAgICApfVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICB2YWx1ZT17Zm9ybWF0VmFsdWUocmVzb2x2ZWRWYWx1ZSwgbW9kZSwgZGF0ZUZvcm1hdCl9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gIWRpc2FibGVkICYmIHNldElzT3BlbighaXNPcGVuKX1cbiAgICAgICAgICBvbktleURvd249e2hhbmRsZUlucHV0S2V5RG93bn1cbiAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwiZGlhbG9nXCJcbiAgICAgICAgICBhcmlhLWV4cGFuZGVkPXtpc09wZW59XG4gICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIC8+XG4gICAgICAgIHsvKiBjbGVhciBidXR0b24gKi99XG4gICAgICAgIHtpc0NsZWFyYWJsZSAmJiByZXNvbHZlZFZhbHVlICYmICFkaXNhYmxlZCAmJiAoXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJidG4gYnRuLXNtIGJ0bi1saW5rIHBvc2l0aW9uLWFic29sdXRlIHRvcC01MCBlbmQtMCB0cmFuc2xhdGUtbWlkZGxlLXkgcGUtMiB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICBzdHlsZT17eyB6SW5kZXg6IDIgfX1cbiAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsZWFyfVxuICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICAmdGltZXM7XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIC0tLS0gUG9ydGFsIHRoZSBwb3BvdmVyIHRvIGRvY3VtZW50LmJvZHkgLS0tLSAqL31cbiAgICAgIHtpc09wZW4gJiYgIWRpc2FibGVkICYmIHBvcnRhbFJlZi5jdXJyZW50ICYmIGNyZWF0ZVBvcnRhbChwb3BvdmVyLCBwb3J0YWxSZWYuY3VycmVudCl9XG4gICAgPC9kaXY+XG4gIClcbn0pXG5cbkRhdGVQaWNrZXIuZGlzcGxheU5hbWUgPSAnRGF0ZVBpY2tlcidcblxuZXhwb3J0IHsgRGF0ZVBpY2tlciB9XG5leHBvcnQgZGVmYXVsdCBEYXRlUGlja2VyXG4iXX0=