@plumile/router 0.1.195 → 0.1.196

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
@@ -437,6 +437,20 @@ function List() {
437
437
  context.navigate({ pathname: '/products', filters: { page: { eq: 3 } } });
438
438
  ```
439
439
 
440
+ For integrations that need the destination search string without navigating,
441
+ the router context exposes the same destination-aware resolution:
442
+
443
+ ```ts
444
+ const search = context.buildSearch({
445
+ pathname: '/products',
446
+ filters: { page: { eq: 3 } },
447
+ });
448
+ // => '?page=3'
449
+ ```
450
+
451
+ `buildSearch` only serializes the values supplied by its caller; unlike
452
+ `navigate`, it does not inherit the current route's query or filters.
453
+
440
454
  ### Page Normalization
441
455
 
442
456
  The router clamps `page.eq < 1` to `1` synchronously and performs a history replace so the back stack is not polluted.
@@ -468,6 +482,12 @@ Filters cache: repeated navigations with semantically identical search strings r
468
482
 
469
483
  Renders: `/products?page=1&price.gt=10`.
470
484
 
485
+ `Link` resolves the schema from its destination route. Cross-route links can
486
+ therefore pass destination filters even when the current route uses a different
487
+ schema. The generated `href`, preloading target, and click navigation all share
488
+ the same serialized search string. An explicit `to.search` still takes
489
+ precedence over `filters` and `query`.
490
+
471
491
  ### Manual Serialization Example
472
492
 
473
493
  If you need to build a URL outside of navigation (e.g. constructing a sitemap entry):
@@ -1 +1 @@
1
- {"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../../src/routing/Link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAE9B,KAAK,GAAG,EACR,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAU3E,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,GAAG,eAAe,CAAC;AACjE,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,eAAe,CAAC;AAK5D,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,cAAc,GAAG,SAAS,EACnC,QAAQ,EAAE,MAAM,GACf,OAAO,CAmBT;AAKD,KAAK,KAAK,CACR,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IACjE,IAAI,CACN,oBAAoB,CAAC,iBAAiB,CAAC,EACrC,UAAU,GACV,WAAW,GACX,MAAM,GACN,SAAS,GACT,SAAS,GACT,aAAa,GACb,cAAc,GACd,aAAa,GACb,KAAK,GACL,QAAQ,CACX,GAAG;IAEF,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,QAAQ,EAAE,SAAS,CAAC;IAEpB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAElC,kBAAkB,CAAC,EAAE,oBAAoB,CAAC;IAE1C,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAErD,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAErD,WAAW,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAEzD,YAAY,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAE1D,WAAW,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAEzD,GAAG,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAE7B,MAAM,CAAC,EAAE,yBAAyB,CAAC;IAEnC,EAAE,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC;IAE9B,OAAO,CAAC,EAAE,QAAQ,CAAC;IAEnB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAyBF,QAAA,MAAM,IAAI,UAAW,KAAK,KAAG,KAAK,CAAC,YAyOlC,CAAC;eAEa,IAAI"}
1
+ {"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../../src/routing/Link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAE9B,KAAK,GAAG,EACR,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAQ3E,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,GAAG,eAAe,CAAC;AACjE,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,eAAe,CAAC;AAK5D,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,cAAc,GAAG,SAAS,EACnC,QAAQ,EAAE,MAAM,GACf,OAAO,CAmBT;AAKD,KAAK,KAAK,CACR,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IACjE,IAAI,CACN,oBAAoB,CAAC,iBAAiB,CAAC,EACrC,UAAU,GACV,WAAW,GACX,MAAM,GACN,SAAS,GACT,SAAS,GACT,aAAa,GACb,cAAc,GACd,aAAa,GACb,KAAK,GACL,QAAQ,CACX,GAAG;IAEF,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,QAAQ,EAAE,SAAS,CAAC;IAEpB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAElC,kBAAkB,CAAC,EAAE,oBAAoB,CAAC;IAE1C,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAErD,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAErD,WAAW,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAEzD,YAAY,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAE1D,WAAW,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAEzD,GAAG,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAE7B,MAAM,CAAC,EAAE,yBAAyB,CAAC;IAEnC,EAAE,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC;IAE9B,OAAO,CAAC,EAAE,QAAQ,CAAC;IAEnB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAyBF,QAAA,MAAM,IAAI,UAAW,KAAK,KAAG,KAAK,CAAC,YAmOlC,CAAC;eAEa,IAAI"}
@@ -1,7 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import React, { useEffect, useMemo, } from 'react';
3
3
  import { cx } from './../tools/index.js';
4
- import buildCombinedSearch from '../tools/buildCombinedSearch.js';
5
4
  import RoutingContext from './RoutingContext.js';
6
5
  const { useCallback, useContext } = React;
7
6
  export function isCurrentPathname(exact, history, pathname) {
@@ -50,22 +49,16 @@ const Link = (props) => {
50
49
  }
51
50
  return `?${to.search}`;
52
51
  }
53
- const filterInput = filters ?? query;
54
- let rawQueryInput;
55
- if (filters != null) {
56
- rawQueryInput = query;
57
- }
58
- if (filterInput == null && rawQueryInput == null)
52
+ if (filters == null && query == null)
59
53
  return '';
60
54
  if (router == null)
61
55
  return '';
62
- const entry = router.get();
63
- return buildCombinedSearch({
64
- filters: filterInput,
65
- query: rawQueryInput,
66
- querySchema: entry.activeQuerySchema,
56
+ return router.buildSearch({
57
+ pathname,
58
+ filters,
59
+ query,
67
60
  });
68
- }, [filters, isDisabled, query, router, to]);
61
+ }, [filters, isDisabled, pathname, query, router, to]);
69
62
  const hash = useMemo(() => {
70
63
  if (isDisabled) {
71
64
  return '';
@@ -175,4 +168,4 @@ const Link = (props) => {
175
168
  return (_jsx("a", { ...anchorProps, className: cx(classNames), href: hrefValue, onClick: handleClick, onFocus: onFocus, onMouseDown: handleMouseDown, onMouseEnter: handleMouseEnter, onMouseOver: onMouseOver, ref: ref, target: target, children: children }));
176
169
  };
177
170
  export default Link;
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGluay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yb3V0aW5nL0xpbmsudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEtBQUssRUFBRSxFQU1aLFNBQVMsRUFDVCxPQUFPLEdBQ1IsTUFBTSxPQUFPLENBQUM7QUFJZixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekMsT0FBTyxtQkFBbUIsTUFBTSxpQ0FBaUMsQ0FBQztBQUVsRSxPQUFPLGNBQWMsTUFBTSxxQkFBcUIsQ0FBQztBQUdqRCxNQUFNLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxHQUFHLEtBQUssQ0FBQztBQVExQyxNQUFNLFVBQVUsaUJBQWlCLENBQy9CLEtBQWMsRUFDZCxPQUFtQyxFQUNuQyxRQUFnQjtJQUVoQixJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNwQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFHRCxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXpELE1BQU0sZ0JBQWdCLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztJQUU5QyxJQUFJLEtBQUssSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsS0FBSyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztRQUNyRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFrRkQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxLQUFZLEVBQXNCLEVBQUU7SUFDaEQsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FB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TyxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUM3RCxDQUFDO0lBQ0gsQ0FBQyxFQUNELENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUN4RSxDQUFDO0lBRUYsSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQ3pCLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDcEQsU0FBUyxHQUFHLEdBQUcsUUFBUSxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFDRCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2hELFNBQVMsR0FBRyxHQUFHLFNBQVMsR0FBRyxJQUFJLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsT0FBTyxDQUNMLGVBQ00sV0FBVyxFQUNmLFNBQVMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQ3pCLElBQUksRUFBRSxTQUFTLEVBQ2YsT0FBTyxFQUFFLFdBQVcsRUFDcEIsT0FBTyxFQUFFLE9BQU8sRUFDaEIsV0FBVyxFQUFFLGVBQWUsRUFDNUIsWUFBWSxFQUFFLGdCQUFnQixFQUM5QixXQUFXLEVBQUUsV0FBVyxFQUN4QixHQUFHLEVBQUUsR0FBRyxFQUNSLE1BQU0sRUFBRSxNQUFNLFlBRWIsUUFBUSxHQUNQLENBQ0wsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLGVBQWUsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7XG4gIHR5cGUgQW5jaG9ySFRNTEF0dHJpYnV0ZXMsXG4gIHR5cGUgSFRNTEF0dHJpYnV0ZUFuY2hvclRhcmdldCxcbiAgdHlwZSBNb3VzZUV2ZW50LFxuICB0eXBlIFJlZixcbiAgdHlwZSBSZWFjdE5vZGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbn0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgdHlwZSB7IEJyb3dzZXJIaXN0b3J5LCBIaXN0b3J5TG9jYXRpb24gfSBmcm9tICcuLi9oaXN0b3J5L2luZGV4LmpzJztcblxuaW1wb3J0IHsgY3ggfSBmcm9tICcuLy4uL3Rvb2xzL2luZGV4LmpzJztcbmltcG9ydCBidWlsZENvbWJpbmVkU2VhcmNoIGZyb20gJy4uL3Rvb2xzL2J1aWxkQ29tYmluZWRTZWFyY2guanMnO1xuXG5pbXBvcnQgUm91dGluZ0NvbnRleHQgZnJvbSAnLi9Sb3V0aW5nQ29udGV4dC5qcyc7XG4vLyAoZmlsdGVyLXF1ZXJ5IHN0cmluZ2lmeSBub3QgdXNlZCBoZXJlIGFmdGVyIHNpbXBsaWZ5aW5nIG1hbnVhbCBzZXJpYWxpemF0aW9uKVxuXG5jb25zdCB7IHVzZUNhbGxiYWNrLCB1c2VDb250ZXh0IH0gPSBSZWFjdDtcblxuZXhwb3J0IHR5cGUgTGlua0hvdmVyUHJlbG9hZCA9ICdub25lJyB8ICdjb2RlJyB8ICdjb2RlLWFuZC1kYXRhJztcbmV4cG9ydCB0eXBlIExpbmtNb3VzZURvd25QcmVsb2FkID0gJ25vbmUnIHwgJ2NvZGUtYW5kLWRhdGEnO1xuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBjdXJyZW50IHBhdGhuYW1lIG1hdGNoZXMgdGhlIGdpdmVuIHBhdGhuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDdXJyZW50UGF0aG5hbWUoXG4gIGV4YWN0OiBib29sZWFuLFxuICBoaXN0b3J5OiBCcm93c2VySGlzdG9yeSB8IHVuZGVmaW5lZCxcbiAgcGF0aG5hbWU6IHN0cmluZyxcbik6IGJvb2xlYW4ge1xuICBpZiAoaGlzdG9yeSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gQHRzLWV4cGVjdC1lcnJvcjogT0tcbiAgY29uc3QgcmVzb2x2ZWRVcmwgPSBuZXcgVVJMKHBhdGhuYW1lLCBkb2N1bWVudC5sb2NhdGlvbik7XG5cbiAgY29uc3QgcmVzb2x2ZWRQYXRobmFtZSA9IHJlc29sdmVkVXJsLnBhdGhuYW1lO1xuXG4gIGlmIChleGFjdCAmJiBoaXN0b3J5LmxvY2F0aW9uLnBhdGhuYW1lID09PSByZXNvbHZlZFBhdGhuYW1lKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoIWV4YWN0ICYmIGhpc3RvcnkubG9jYXRpb24ucGF0aG5hbWUuc3RhcnRzV2l0aChyZXNvbHZlZFBhdGhuYW1lKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFByb3BzIGZvciB0aGUgTGluayBjb21wb25lbnQuXG4gKi9cbnR5cGUgUHJvcHM8XG4gIFRGaWx0ZXJzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgVFJhd1F1ZXJ5IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbj4gPSBPbWl0PFxuICBBbmNob3JIVE1MQXR0cmlidXRlczxIVE1MQW5jaG9yRWxlbWVudD4sXG4gIHwgJ2NoaWxkcmVuJ1xuICB8ICdjbGFzc05hbWUnXG4gIHwgJ2hyZWYnXG4gIHwgJ29uQ2xpY2snXG4gIHwgJ29uRm9jdXMnXG4gIHwgJ29uTW91c2VEb3duJ1xuICB8ICdvbk1vdXNlRW50ZXInXG4gIHwgJ29uTW91c2VPdmVyJ1xuICB8ICdyZWYnXG4gIHwgJ3RhcmdldCdcbj4gJiB7XG4gIC8qKiBDU1MgY2xhc3MgdG8gYXBwbHkgd2hlbiB0aGUgbGluayBpcyBhY3RpdmUgKG1hdGNoZXMgY3VycmVudCByb3V0ZSkgKi9cbiAgYWN0aXZlQ2xhc3NOYW1lPzogc3RyaW5nO1xuICAvKiogQ2hpbGQgY29tcG9uZW50cyB0byByZW5kZXIgaW5zaWRlIHRoZSBsaW5rICovXG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIC8qKiBCYXNlIENTUyBjbGFzcyBmb3IgdGhlIGxpbmsgKi9cbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICAvKiogV2hldGhlciB0byB1c2UgZXhhY3QgcGF0aCBtYXRjaGluZyBmb3IgYWN0aXZlIHN0YXRlICovXG4gIGV4YWN0PzogYm9vbGVhbjtcbiAgLyoqIFByZWxvYWQgYmVoYXZpb3Igd2hlbiBtb3VzZSBlbnRlcnMgdGhlIGxpbmsuICovXG4gIHByZWxvYWRPbkhvdmVyPzogTGlua0hvdmVyUHJlbG9hZDtcbiAgLyoqIFByZWxvYWQgYmVoYXZpb3Igd2hlbiBtb3VzZSBpcyBwcmVzc2VkIGRvd24uICovXG4gIHByZWxvYWRPbk1vdXNlRG93bj86IExpbmtNb3VzZURvd25QcmVsb2FkO1xuICAvKiogRGlyZWN0IGhyZWYgYXR0cmlidXRlIChvdmVycmlkZXMgJ3RvJyBwcm9wKSAqL1xuICBocmVmPzogc3RyaW5nO1xuICAvKiogV2hldGhlciB0aGUgbGluayBzaG91bGQgYmUgZGlzYWJsZWQgKi9cbiAgaXNEaXNhYmxlZD86IGJvb2xlYW47XG4gIC8qKiBDbGljayBoYW5kbGVyICovXG4gIG9uQ2xpY2s/OiBSZWFjdC5Nb3VzZUV2ZW50SGFuZGxlcjxIVE1MQW5jaG9yRWxlbWVudD47XG4gIC8qKiBGb2N1cyBoYW5kbGVyICovXG4gIG9uRm9jdXM/OiBSZWFjdC5Gb2N1c0V2ZW50SGFuZGxlcjxIVE1MQW5jaG9yRWxlbWVudD47XG4gIC8qKiBNb3VzZSBkb3duIGhhbmRsZXIgKi9cbiAgb25Nb3VzZURvd24/OiBSZWFjdC5Nb3VzZUV2ZW50SGFuZGxlcjxIVE1MQW5jaG9yRWxlbWVudD47XG4gIC8qKiBNb3VzZSBlbnRlciBoYW5kbGVyICovXG4gIG9uTW91c2VFbnRlcj86IFJlYWN0Lk1vdXNlRXZlbnRIYW5kbGVyPEhUTUxBbmNob3JFbGVtZW50PjtcbiAgLyoqIE1vdXNlIG92ZXIgaGFuZGxlciAqL1xuICBvbk1vdXNlT3Zlcj86IFJlYWN0Lk1vdXNlRXZlbnRIYW5kbGVyPEhUTUxBbmNob3JFbGVtZW50PjtcbiAgLyoqIEFuY2hvciByZWYgKi9cbiAgcmVmPzogUmVmPEhUTUxBbmNob3JFbGVtZW50PjtcbiAgLyoqIFRhcmdldCBhdHRyaWJ1dGUgZm9yIHRoZSBsaW5rICovXG4gIHRhcmdldD86IEhUTUxBdHRyaWJ1dGVBbmNob3JUYXJnZXQ7XG4gIC8qKiBEZXN0aW5hdGlvbiBmb3IgdGhlIGxpbmsgKGNhbiBiZSBzdHJpbmcgcGF0aCBvciBsb2NhdGlvbiBvYmplY3QpICovXG4gIHRvPzogSGlzdG9yeUxvY2F0aW9uIHwgc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgZmlsdGVycyBvYmplY3QgdG8gc2VyaWFsaXplIHVzaW5nIGRlc3RpbmF0aW9uIHJvdXRlIHNjaGVtYSAoaWdub3JlZCBpZiBgdG8uc2VhcmNoYCBpcyBzZXQpICovXG4gIGZpbHRlcnM/OiBURmlsdGVycztcbiAgLyoqIE9wdGlvbmFsIHJhdyBxdWVyeSBwYXJhbXMgKG5vbi1zY2hlbWEga2V5cykgdG8gbWVyZ2UgKGlnbm9yZWQgaWYgYHRvLnNlYXJjaGAgaXMgc2V0KSAqL1xuICBxdWVyeT86IFRSYXdRdWVyeTtcbn07XG5cbi8qKlxuICogTmF2aWdhdGlvbiBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBjbGllbnQtc2lkZSByb3V0aW5nIHdpdGggcHJlbG9hZGluZyBjYXBhYmlsaXRpZXMuXG4gKlxuICogVGhpcyBjb21wb25lbnQgaW50ZWdyYXRlcyB3aXRoIHRoZSByb3V0ZXIncyBSb3V0aW5nQ29udGV4dCB0byBwcm92aWRlIHNtb290aCBuYXZpZ2F0aW9uXG4gKiB3aXRoIG9wdGlvbmFsIHByZWxvYWRpbmcgb2Ygcm91dGUgY29tcG9uZW50cyBhbmQgZGF0YS4gSXQgYXV0b21hdGljYWxseSBhcHBsaWVzIGFjdGl2ZVxuICogc3R5bGluZyB3aGVuIHRoZSBjdXJyZW50IHJvdXRlIG1hdGNoZXMgdGhlIGxpbmsncyBkZXN0aW5hdGlvbi5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiAvLyBCYXNpYyB1c2FnZVxuICogPExpbmsgdG89XCIvdXNlcnMvMTIzXCI+VmlldyBQcm9maWxlPC9MaW5rPlxuICpcbiAqIC8vIFdpdGggYWN0aXZlIHN0eWxpbmdcbiAqIDxMaW5rIHRvPVwiL2Rhc2hib2FyZFwiIGFjdGl2ZUNsYXNzTmFtZT1cImFjdGl2ZVwiIGV4YWN0PlxuICogICBEYXNoYm9hcmRcbiAqIDwvTGluaz5cbiAqXG4gKiAvLyBXaXRoIGZ1bGwgcHJlbG9hZGluZyBvbiBob3ZlclxuICogPExpbmsgdG89XCIvaGVhdnktcGFnZVwiIHByZWxvYWRPbkhvdmVyPVwiY29kZS1hbmQtZGF0YVwiPlxuICogICBIZWF2eSBQYWdlXG4gKiA8L0xpbms+XG4gKiBgYGBcbiAqL1xuY29uc3QgTGluayA9IChwcm9wczogUHJvcHMpOiBSZWFjdC5SZWFjdEVsZW1lbnQgPT4ge1xuICBjb25zdCByb3V0ZXIgPSB1c2VDb250ZXh0KFJvdXRpbmdDb250ZXh0KTtcbiAgY29uc3Qge1xuICAgIGFjdGl2ZUNsYXNzTmFtZSxcbiAgICBjaGlsZHJlbixcbiAgICBjbGFzc05hbWUsXG4gICAgZXhhY3QgPSBmYWxzZSxcbiAgICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gICAgb25DbGljayxcbiAgICBvbkZvY3VzLFxuICAgIG9uTW91c2VEb3duLFxuICAgIG9uTW91c2VFbnRlcixcbiAgICBvbk1vdXNlT3ZlcixcbiAgICBwcmVsb2FkT25Ib3ZlciA9ICdjb2RlJyxcbiAgICBwcmVsb2FkT25Nb3VzZURvd24gPSAnY29kZS1hbmQtZGF0YScsXG4gICAgdGFyZ2V0LFxuICAgIHRvLFxuICAgIGhyZWYsXG4gICAgZmlsdGVycyxcbiAgICBxdWVyeSxcbiAgICByZWYsXG4gICAgLi4uYW5jaG9yUHJvcHNcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHBhdGhuYW1lID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiAnIyc7XG4gICAgfVxuXG4gICAgbGV0IG5ld0hyZWYgPSBocmVmO1xuXG4gICAgaWYgKG5ld0hyZWYgPT0gbnVsbCkge1xuICAgICAgaWYgKHR5cGVvZiB0byA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgbmV3SHJlZiA9IHRvO1xuICAgICAgfSBlbHNlIGlmICh0bz8ucGF0aG5hbWUgIT0gbnVsbCkge1xuICAgICAgICBuZXdIcmVmID0gdG8ucGF0aG5hbWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbmV3SHJlZiA/Pz0gJyMnO1xuXG4gICAgcmV0dXJuIG5ld0hyZWY7XG4gIH0sIFtocmVmLCBpc0Rpc2FibGVkLCB0b10pO1xuXG4gIC8vIFJlc29sdmUgc2VhcmNoIHN0cmluZyBmcm9tIGV4cGxpY2l0IGB0by5zZWFyY2hgIG9yIGZyb20gcHJvdmlkZWQgcXVlcnlcbiAgLy8gdHJlYXRlZCBhcyBmaWx0ZXJzIHdpdGggdGhlIGFjdGl2ZSBzY2hlbWEuXG4gIGNvbnN0IHNlYXJjaCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGlmICh0byAhPSBudWxsICYmIHR5cGVvZiB0byA9PT0gJ29iamVjdCcgJiYgdG8uc2VhcmNoICE9IG51bGwpIHtcbiAgICAgIGlmICh0by5zZWFyY2ggPT09ICcnKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICAgIGlmICh0by5zZWFyY2guc3RhcnRzV2l0aCgnPycpKSB7XG4gICAgICAgIHJldHVybiB0by5zZWFyY2g7XG4gICAgICB9XG4gICAgICByZXR1cm4gYD8ke3RvLnNlYXJjaH1gO1xuICAgIH1cbiAgICBjb25zdCBmaWx0ZXJJbnB1dCA9IGZpbHRlcnMgPz8gcXVlcnk7XG4gICAgbGV0IHJhd1F1ZXJ5SW5wdXQ6IHR5cGVvZiBxdWVyeSB8IHVuZGVmaW5lZDtcbiAgICBpZiAoZmlsdGVycyAhPSBudWxsKSB7XG4gICAgICByYXdRdWVyeUlucHV0ID0gcXVlcnk7XG4gICAgfVxuICAgIGlmIChmaWx0ZXJJbnB1dCA9PSBudWxsICYmIHJhd1F1ZXJ5SW5wdXQgPT0gbnVsbCkgcmV0dXJuICcnO1xuICAgIGlmIChyb3V0ZXIgPT0gbnVsbCkgcmV0dXJuICcnO1xuICAgIGNvbnN0IGVudHJ5ID0gcm91dGVyLmdldCgpO1xuICAgIHJldHVybiBidWlsZENvbWJpbmVkU2VhcmNoKHtcbiAgICAgIGZpbHRlcnM6IGZpbHRlcklucHV0LFxuICAgICAgcXVlcnk6IHJhd1F1ZXJ5SW5wdXQsXG4gICAgICBxdWVyeVNjaGVtYTogZW50cnkuYWN0aXZlUXVlcnlTY2hlbWEsXG4gICAgfSk7XG4gIH0sIFtmaWx0ZXJzLCBpc0Rpc2FibGVkLCBxdWVyeSwgcm91dGVyLCB0b10pO1xuXG4gIGNvbnN0IGhhc2ggPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBpZiAodG8gIT0gbnVsbCAmJiB0eXBlb2YgdG8gPT09ICdvYmplY3QnICYmIHRvLmhhc2ggIT0gbnVsbCkge1xuICAgICAgaWYgKHRvLmhhc2ggPT09ICcnKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICAgIGlmICh0by5oYXNoLnN0YXJ0c1dpdGgoJyMnKSkge1xuICAgICAgICByZXR1cm4gdG8uaGFzaDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBgIyR7dG8uaGFzaH1gO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH0sIFtpc0Rpc2FibGVkLCB0b10pO1xuXG4gIGNvbnN0IGluaXRpYWxJc0FjdGl2ZSA9IGlzQ3VycmVudFBhdGhuYW1lKGV4YWN0LCByb3V0ZXI/Lmhpc3RvcnksIHBhdGhuYW1lKTtcbiAgY29uc3QgW2lzQWN0aXZlLCBzZXRJc0FjdGl2ZV0gPSBSZWFjdC51c2VTdGF0ZShpbml0aWFsSXNBY3RpdmUpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb25DaGFuZ2UgPSAoKSA9PiB7XG4gICAgICBjb25zdCBuZXdJc0FjdGl2ZSA9IGlzQ3VycmVudFBhdGhuYW1lKGV4YWN0LCByb3V0ZXI/Lmhpc3RvcnksIHBhdGhuYW1lKTtcbiAgICAgIHNldElzQWN0aXZlKG5ld0lzQWN0aXZlKTtcbiAgICB9O1xuXG4gICAgaWYgKHJvdXRlciA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gKCkgPT4ge307XG4gICAgfVxuXG4gICAgcm91dGVyLmhpc3Rvcnkuc3Vic2NyaWJlKG9uQ2hhbmdlKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICByb3V0ZXIuaGlzdG9yeS51bnN1YnNjcmliZShvbkNoYW5nZSk7XG4gICAgfTtcbiAgfSwgW2V4YWN0LCBwYXRobmFtZSwgcm91dGVyXSk7XG5cbiAgY29uc3QgY2xhc3NOYW1lcyA9IFtjbGFzc05hbWVdO1xuXG4gIGlmIChpc0FjdGl2ZSkge1xuICAgIGNsYXNzTmFtZXMucHVzaChhY3RpdmVDbGFzc05hbWUpO1xuICB9XG5cbiAgLy8gV2hlbiB0aGUgdXNlciBjbGlja3MsIGNoYW5nZSByb3V0ZVxuICBjb25zdCBoYW5kbGVDbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogTW91c2VFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4pID0+IHtcbiAgICAgIGlmICghaXNEaXNhYmxlZCAmJiB0eXBlb2Ygb25DbGljayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvbkNsaWNrKGV2ZW50KTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBldmVudC5kZWZhdWx0UHJldmVudGVkIHx8XG4gICAgICAgIGV2ZW50Lm1ldGFLZXkgfHxcbiAgICAgICAgZXZlbnQuYWx0S2V5IHx8XG4gICAgICAgIGV2ZW50LmN0cmxLZXkgfHxcbiAgICAgICAgZXZlbnQuc2hpZnRLZXkgfHxcbiAgICAgICAgZXZlbnQuYnV0dG9uICE9PSAwIHx8XG4gICAgICAgICh0YXJnZXQgIT0gbnVsbCAmJiB0YXJnZXQgIT09ICdfc2VsZicpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgaWYgKHJvdXRlciA9PSBudWxsIHx8IGlzRGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByb3V0ZXIuaGlzdG9yeS5wdXNoKHtcbiAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgIHNlYXJjaCxcbiAgICAgICAgaGFzaCxcbiAgICAgICAgZGVidWdDb250ZXh0OiB7XG4gICAgICAgICAgb3JpZ2luOiAnbGluay1jbGljaycsXG4gICAgICAgICAgdHJpZ2dlcjogJ2xpbmsnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBbaGFzaCwgaXNEaXNhYmxlZCwgb25DbGljaywgcGF0aG5hbWUsIHJvdXRlciwgdGFyZ2V0LCBzZWFyY2hdLFxuICApO1xuXG4gIC8vIENhbGxiYWNrIHRvIHByZWxvYWQganVzdCB0aGUgY29kZSBmb3IgdGhlIHJvdXRlOlxuICAvLyB3ZSBwYXNzIHRoaXMgdG8gb25Nb3VzZUVudGVyLCB3aGljaCBpcyBhIHdlYWtlciBzaWduYWxcbiAgLy8gdGhhdCB0aGUgdXNlciAqbWF5KiBuYXZpZ2F0ZSB0byB0aGUgcm91dGUuXG4gIGNvbnN0IGhhbmRsZU1vdXNlRW50ZXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IE1vdXNlRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+KSA9PiB7XG4gICAgICBpZiAodHlwZW9mIG9uTW91c2VFbnRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvbk1vdXNlRW50ZXIoZXZlbnQpO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAocm91dGVyID09IG51bGwgfHwgaXNEaXNhYmxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChwcmVsb2FkT25Ib3ZlciA9PT0gJ25vbmUnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJlbG9hZFRhcmdldCA9IHtcbiAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgIHNlYXJjaCxcbiAgICAgICAgc291cmNlOiAncHJlbG9hZC1ob3ZlcicsXG4gICAgICB9IGFzIGNvbnN0O1xuICAgICAgaWYgKHByZWxvYWRPbkhvdmVyID09PSAnY29kZS1hbmQtZGF0YScpIHtcbiAgICAgICAgcm91dGVyLnByZWxvYWQocHJlbG9hZFRhcmdldCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJvdXRlci5wcmVsb2FkQ29kZShwcmVsb2FkVGFyZ2V0KTtcbiAgICB9LFxuICAgIFtyb3V0ZXIsIGlzRGlzYWJsZWQsIG9uTW91c2VFbnRlciwgcHJlbG9hZE9uSG92ZXIsIHBhdGhuYW1lLCBzZWFyY2hdLFxuICApO1xuXG4gIC8vIENhbGxiYWNrIHRvIHByZWxvYWQgdGhlIGNvZGUgYW5kIGRhdGEgZm9yIHRoZSByb3V0ZTpcbiAgLy8gd2UgcGFzcyB0aGlzIHRvIG9uTW91c2VEb3duLCBzaW5jZSB0aGlzIGlzIGEgc3Ryb25nZXJcbiAgLy8gc2lnbmFsIHRoYXQgdGhlIHVzZXIgd2lsbCBsaWtlbHkgY29tcGxldGUgdGhlIG5hdmlnYXRpb25cbiAgY29uc3QgaGFuZGxlTW91c2VEb3duID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBNb3VzZUV2ZW50PEhUTUxBbmNob3JFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBvbk1vdXNlRG93biA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvbk1vdXNlRG93bihldmVudCk7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChyb3V0ZXIgPT0gbnVsbCB8fCBpc0Rpc2FibGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHByZWxvYWRPbk1vdXNlRG93biA9PT0gJ2NvZGUtYW5kLWRhdGEnKSB7XG4gICAgICAgIHJvdXRlci5wcmVsb2FkKHsgcGF0aG5hbWUsIHNlYXJjaCwgc291cmNlOiAnbGluay1jbGljaycgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbcm91dGVyLCBpc0Rpc2FibGVkLCBvbk1vdXNlRG93biwgcHJlbG9hZE9uTW91c2VEb3duLCBwYXRobmFtZSwgc2VhcmNoXSxcbiAgKTtcblxuICBsZXQgaHJlZlZhbHVlID0gcGF0aG5hbWU7XG4gIGlmICh0eXBlb2Ygc2VhcmNoID09PSAnc3RyaW5nJyAmJiBzZWFyY2gubGVuZ3RoID4gMCkge1xuICAgIGhyZWZWYWx1ZSA9IGAke3BhdGhuYW1lfSR7c2VhcmNofWA7XG4gIH1cbiAgaWYgKHR5cGVvZiBoYXNoID09PSAnc3RyaW5nJyAmJiBoYXNoLmxlbmd0aCA+IDApIHtcbiAgICBocmVmVmFsdWUgPSBgJHtocmVmVmFsdWV9JHtoYXNofWA7XG4gIH1cbiAgcmV0dXJuIChcbiAgICA8YVxuICAgICAgey4uLmFuY2hvclByb3BzfVxuICAgICAgY2xhc3NOYW1lPXtjeChjbGFzc05hbWVzKX1cbiAgICAgIGhyZWY9e2hyZWZWYWx1ZX1cbiAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICAgIG9uTW91c2VEb3duPXtoYW5kbGVNb3VzZURvd259XG4gICAgICBvbk1vdXNlRW50ZXI9e2hhbmRsZU1vdXNlRW50ZXJ9XG4gICAgICBvbk1vdXNlT3Zlcj17b25Nb3VzZU92ZXJ9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHRhcmdldD17dGFyZ2V0fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2E+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBMaW5rO1xuIl19
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGluay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yb3V0aW5nL0xpbmsudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEtBQUssRUFBRSxFQU1aLFNBQVMsRUFDVCxPQUFPLEdBQ1IsTUFBTSxPQUFPLENBQUM7QUFJZixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFekMsT0FBTyxjQUFjLE1BQU0scUJBQXFCLENBQUM7QUFFakQsTUFBTSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsR0FBRyxLQUFLLENBQUM7QUFRMUMsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixLQUFjLEVBQ2QsT0FBbUMsRUFDbkMsUUFBZ0I7SUFFaEIsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7UUFDcEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBR0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV6RCxNQUFNLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7SUFFOUMsSUFBSSxLQUFLLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztRQUM1RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7UUFDckUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBa0ZELE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBWSxFQUFzQixFQUFFO0lBQ2hELE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMxQyxNQUFNLEVBQ0osZUFBZSxFQUNmLFFB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QUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDcEQsU0FBUyxHQUFHLEdBQUcsUUFBUSxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFDRCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2hELFNBQVMsR0FBRyxHQUFHLFNBQVMsR0FBRyxJQUFJLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsT0FBTyxDQUNMLGVBQ00sV0FBVyxFQUNmLFNBQVMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQ3pCLElBQUksRUFBRSxTQUFTLEVBQ2YsT0FBTyxFQUFFLFdBQVcsRUFDcEIsT0FBTyxFQUFFLE9BQU8sRUFDaEIsV0FBVyxFQUFFLGVBQWUsRUFDNUIsWUFBWSxFQUFFLGdCQUFnQixFQUM5QixXQUFXLEVBQUUsV0FBVyxFQUN4QixHQUFHLEVBQUUsR0FBRyxFQUNSLE1BQU0sRUFBRSxNQUFNLFlBRWIsUUFBUSxHQUNQLENBQ0wsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLGVBQWUsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7XG4gIHR5cGUgQW5jaG9ySFRNTEF0dHJpYnV0ZXMsXG4gIHR5cGUgSFRNTEF0dHJpYnV0ZUFuY2hvclRhcmdldCxcbiAgdHlwZSBNb3VzZUV2ZW50LFxuICB0eXBlIFJlZixcbiAgdHlwZSBSZWFjdE5vZGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbn0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgdHlwZSB7IEJyb3dzZXJIaXN0b3J5LCBIaXN0b3J5TG9jYXRpb24gfSBmcm9tICcuLi9oaXN0b3J5L2luZGV4LmpzJztcblxuaW1wb3J0IHsgY3ggfSBmcm9tICcuLy4uL3Rvb2xzL2luZGV4LmpzJztcblxuaW1wb3J0IFJvdXRpbmdDb250ZXh0IGZyb20gJy4vUm91dGluZ0NvbnRleHQuanMnO1xuXG5jb25zdCB7IHVzZUNhbGxiYWNrLCB1c2VDb250ZXh0IH0gPSBSZWFjdDtcblxuZXhwb3J0IHR5cGUgTGlua0hvdmVyUHJlbG9hZCA9ICdub25lJyB8ICdjb2RlJyB8ICdjb2RlLWFuZC1kYXRhJztcbmV4cG9ydCB0eXBlIExpbmtNb3VzZURvd25QcmVsb2FkID0gJ25vbmUnIHwgJ2NvZGUtYW5kLWRhdGEnO1xuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBjdXJyZW50IHBhdGhuYW1lIG1hdGNoZXMgdGhlIGdpdmVuIHBhdGhuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDdXJyZW50UGF0aG5hbWUoXG4gIGV4YWN0OiBib29sZWFuLFxuICBoaXN0b3J5OiBCcm93c2VySGlzdG9yeSB8IHVuZGVmaW5lZCxcbiAgcGF0aG5hbWU6IHN0cmluZyxcbik6IGJvb2xlYW4ge1xuICBpZiAoaGlzdG9yeSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gQHRzLWV4cGVjdC1lcnJvcjogT0tcbiAgY29uc3QgcmVzb2x2ZWRVcmwgPSBuZXcgVVJMKHBhdGhuYW1lLCBkb2N1bWVudC5sb2NhdGlvbik7XG5cbiAgY29uc3QgcmVzb2x2ZWRQYXRobmFtZSA9IHJlc29sdmVkVXJsLnBhdGhuYW1lO1xuXG4gIGlmIChleGFjdCAmJiBoaXN0b3J5LmxvY2F0aW9uLnBhdGhuYW1lID09PSByZXNvbHZlZFBhdGhuYW1lKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoIWV4YWN0ICYmIGhpc3RvcnkubG9jYXRpb24ucGF0aG5hbWUuc3RhcnRzV2l0aChyZXNvbHZlZFBhdGhuYW1lKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFByb3BzIGZvciB0aGUgTGluayBjb21wb25lbnQuXG4gKi9cbnR5cGUgUHJvcHM8XG4gIFRGaWx0ZXJzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgVFJhd1F1ZXJ5IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbj4gPSBPbWl0PFxuICBBbmNob3JIVE1MQXR0cmlidXRlczxIVE1MQW5jaG9yRWxlbWVudD4sXG4gIHwgJ2NoaWxkcmVuJ1xuICB8ICdjbGFzc05hbWUnXG4gIHwgJ2hyZWYnXG4gIHwgJ29uQ2xpY2snXG4gIHwgJ29uRm9jdXMnXG4gIHwgJ29uTW91c2VEb3duJ1xuICB8ICdvbk1vdXNlRW50ZXInXG4gIHwgJ29uTW91c2VPdmVyJ1xuICB8ICdyZWYnXG4gIHwgJ3RhcmdldCdcbj4gJiB7XG4gIC8qKiBDU1MgY2xhc3MgdG8gYXBwbHkgd2hlbiB0aGUgbGluayBpcyBhY3RpdmUgKG1hdGNoZXMgY3VycmVudCByb3V0ZSkgKi9cbiAgYWN0aXZlQ2xhc3NOYW1lPzogc3RyaW5nO1xuICAvKiogQ2hpbGQgY29tcG9uZW50cyB0byByZW5kZXIgaW5zaWRlIHRoZSBsaW5rICovXG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIC8qKiBCYXNlIENTUyBjbGFzcyBmb3IgdGhlIGxpbmsgKi9cbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICAvKiogV2hldGhlciB0byB1c2UgZXhhY3QgcGF0aCBtYXRjaGluZyBmb3IgYWN0aXZlIHN0YXRlICovXG4gIGV4YWN0PzogYm9vbGVhbjtcbiAgLyoqIFByZWxvYWQgYmVoYXZpb3Igd2hlbiBtb3VzZSBlbnRlcnMgdGhlIGxpbmsuICovXG4gIHByZWxvYWRPbkhvdmVyPzogTGlua0hvdmVyUHJlbG9hZDtcbiAgLyoqIFByZWxvYWQgYmVoYXZpb3Igd2hlbiBtb3VzZSBpcyBwcmVzc2VkIGRvd24uICovXG4gIHByZWxvYWRPbk1vdXNlRG93bj86IExpbmtNb3VzZURvd25QcmVsb2FkO1xuICAvKiogRGlyZWN0IGhyZWYgYXR0cmlidXRlIChvdmVycmlkZXMgJ3RvJyBwcm9wKSAqL1xuICBocmVmPzogc3RyaW5nO1xuICAvKiogV2hldGhlciB0aGUgbGluayBzaG91bGQgYmUgZGlzYWJsZWQgKi9cbiAgaXNEaXNhYmxlZD86IGJvb2xlYW47XG4gIC8qKiBDbGljayBoYW5kbGVyICovXG4gIG9uQ2xpY2s/OiBSZWFjdC5Nb3VzZUV2ZW50SGFuZGxlcjxIVE1MQW5jaG9yRWxlbWVudD47XG4gIC8qKiBGb2N1cyBoYW5kbGVyICovXG4gIG9uRm9jdXM/OiBSZWFjdC5Gb2N1c0V2ZW50SGFuZGxlcjxIVE1MQW5jaG9yRWxlbWVudD47XG4gIC8qKiBNb3VzZSBkb3duIGhhbmRsZXIgKi9cbiAgb25Nb3VzZURvd24/OiBSZWFjdC5Nb3VzZUV2ZW50SGFuZGxlcjxIVE1MQW5jaG9yRWxlbWVudD47XG4gIC8qKiBNb3VzZSBlbnRlciBoYW5kbGVyICovXG4gIG9uTW91c2VFbnRlcj86IFJlYWN0Lk1vdXNlRXZlbnRIYW5kbGVyPEhUTUxBbmNob3JFbGVtZW50PjtcbiAgLyoqIE1vdXNlIG92ZXIgaGFuZGxlciAqL1xuICBvbk1vdXNlT3Zlcj86IFJlYWN0Lk1vdXNlRXZlbnRIYW5kbGVyPEhUTUxBbmNob3JFbGVtZW50PjtcbiAgLyoqIEFuY2hvciByZWYgKi9cbiAgcmVmPzogUmVmPEhUTUxBbmNob3JFbGVtZW50PjtcbiAgLyoqIFRhcmdldCBhdHRyaWJ1dGUgZm9yIHRoZSBsaW5rICovXG4gIHRhcmdldD86IEhUTUxBdHRyaWJ1dGVBbmNob3JUYXJnZXQ7XG4gIC8qKiBEZXN0aW5hdGlvbiBmb3IgdGhlIGxpbmsgKGNhbiBiZSBzdHJpbmcgcGF0aCBvciBsb2NhdGlvbiBvYmplY3QpICovXG4gIHRvPzogSGlzdG9yeUxvY2F0aW9uIHwgc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgZmlsdGVycyBvYmplY3QgdG8gc2VyaWFsaXplIHVzaW5nIGRlc3RpbmF0aW9uIHJvdXRlIHNjaGVtYSAoaWdub3JlZCBpZiBgdG8uc2VhcmNoYCBpcyBzZXQpICovXG4gIGZpbHRlcnM/OiBURmlsdGVycztcbiAgLyoqIE9wdGlvbmFsIHJhdyBxdWVyeSBwYXJhbXMgKG5vbi1zY2hlbWEga2V5cykgdG8gbWVyZ2UgKGlnbm9yZWQgaWYgYHRvLnNlYXJjaGAgaXMgc2V0KSAqL1xuICBxdWVyeT86IFRSYXdRdWVyeTtcbn07XG5cbi8qKlxuICogTmF2aWdhdGlvbiBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBjbGllbnQtc2lkZSByb3V0aW5nIHdpdGggcHJlbG9hZGluZyBjYXBhYmlsaXRpZXMuXG4gKlxuICogVGhpcyBjb21wb25lbnQgaW50ZWdyYXRlcyB3aXRoIHRoZSByb3V0ZXIncyBSb3V0aW5nQ29udGV4dCB0byBwcm92aWRlIHNtb290aCBuYXZpZ2F0aW9uXG4gKiB3aXRoIG9wdGlvbmFsIHByZWxvYWRpbmcgb2Ygcm91dGUgY29tcG9uZW50cyBhbmQgZGF0YS4gSXQgYXV0b21hdGljYWxseSBhcHBsaWVzIGFjdGl2ZVxuICogc3R5bGluZyB3aGVuIHRoZSBjdXJyZW50IHJvdXRlIG1hdGNoZXMgdGhlIGxpbmsncyBkZXN0aW5hdGlvbi5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiAvLyBCYXNpYyB1c2FnZVxuICogPExpbmsgdG89XCIvdXNlcnMvMTIzXCI+VmlldyBQcm9maWxlPC9MaW5rPlxuICpcbiAqIC8vIFdpdGggYWN0aXZlIHN0eWxpbmdcbiAqIDxMaW5rIHRvPVwiL2Rhc2hib2FyZFwiIGFjdGl2ZUNsYXNzTmFtZT1cImFjdGl2ZVwiIGV4YWN0PlxuICogICBEYXNoYm9hcmRcbiAqIDwvTGluaz5cbiAqXG4gKiAvLyBXaXRoIGZ1bGwgcHJlbG9hZGluZyBvbiBob3ZlclxuICogPExpbmsgdG89XCIvaGVhdnktcGFnZVwiIHByZWxvYWRPbkhvdmVyPVwiY29kZS1hbmQtZGF0YVwiPlxuICogICBIZWF2eSBQYWdlXG4gKiA8L0xpbms+XG4gKiBgYGBcbiAqL1xuY29uc3QgTGluayA9IChwcm9wczogUHJvcHMpOiBSZWFjdC5SZWFjdEVsZW1lbnQgPT4ge1xuICBjb25zdCByb3V0ZXIgPSB1c2VDb250ZXh0KFJvdXRpbmdDb250ZXh0KTtcbiAgY29uc3Qge1xuICAgIGFjdGl2ZUNsYXNzTmFtZSxcbiAgICBjaGlsZHJlbixcbiAgICBjbGFzc05hbWUsXG4gICAgZXhhY3QgPSBmYWxzZSxcbiAgICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gICAgb25DbGljayxcbiAgICBvbkZvY3VzLFxuICAgIG9uTW91c2VEb3duLFxuICAgIG9uTW91c2VFbnRlcixcbiAgICBvbk1vdXNlT3ZlcixcbiAgICBwcmVsb2FkT25Ib3ZlciA9ICdjb2RlJyxcbiAgICBwcmVsb2FkT25Nb3VzZURvd24gPSAnY29kZS1hbmQtZGF0YScsXG4gICAgdGFyZ2V0LFxuICAgIHRvLFxuICAgIGhyZWYsXG4gICAgZmlsdGVycyxcbiAgICBxdWVyeSxcbiAgICByZWYsXG4gICAgLi4uYW5jaG9yUHJvcHNcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHBhdGhuYW1lID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiAnIyc7XG4gICAgfVxuXG4gICAgbGV0IG5ld0hyZWYgPSBocmVmO1xuXG4gICAgaWYgKG5ld0hyZWYgPT0gbnVsbCkge1xuICAgICAgaWYgKHR5cGVvZiB0byA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgbmV3SHJlZiA9IHRvO1xuICAgICAgfSBlbHNlIGlmICh0bz8ucGF0aG5hbWUgIT0gbnVsbCkge1xuICAgICAgICBuZXdIcmVmID0gdG8ucGF0aG5hbWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbmV3SHJlZiA/Pz0gJyMnO1xuXG4gICAgcmV0dXJuIG5ld0hyZWY7XG4gIH0sIFtocmVmLCBpc0Rpc2FibGVkLCB0b10pO1xuXG4gIC8vIFJlc29sdmUgc2VhcmNoIHN0cmluZyBmcm9tIGV4cGxpY2l0IGB0by5zZWFyY2hgIG9yIGZyb20gcHJvdmlkZWQgcXVlcnlcbiAgLy8gdHJlYXRlZCBhcyBmaWx0ZXJzIHdpdGggdGhlIGFjdGl2ZSBzY2hlbWEuXG4gIGNvbnN0IHNlYXJjaCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGlmICh0byAhPSBudWxsICYmIHR5cGVvZiB0byA9PT0gJ29iamVjdCcgJiYgdG8uc2VhcmNoICE9IG51bGwpIHtcbiAgICAgIGlmICh0by5zZWFyY2ggPT09ICcnKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICAgIGlmICh0by5zZWFyY2guc3RhcnRzV2l0aCgnPycpKSB7XG4gICAgICAgIHJldHVybiB0by5zZWFyY2g7XG4gICAgICB9XG4gICAgICByZXR1cm4gYD8ke3RvLnNlYXJjaH1gO1xuICAgIH1cbiAgICBpZiAoZmlsdGVycyA9PSBudWxsICYmIHF1ZXJ5ID09IG51bGwpIHJldHVybiAnJztcbiAgICBpZiAocm91dGVyID09IG51bGwpIHJldHVybiAnJztcbiAgICByZXR1cm4gcm91dGVyLmJ1aWxkU2VhcmNoKHtcbiAgICAgIHBhdGhuYW1lLFxuICAgICAgZmlsdGVycyxcbiAgICAgIHF1ZXJ5LFxuICAgIH0pO1xuICB9LCBbZmlsdGVycywgaXNEaXNhYmxlZCwgcGF0aG5hbWUsIHF1ZXJ5LCByb3V0ZXIsIHRvXSk7XG5cbiAgY29uc3QgaGFzaCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGlmICh0byAhPSBudWxsICYmIHR5cGVvZiB0byA9PT0gJ29iamVjdCcgJiYgdG8uaGFzaCAhPSBudWxsKSB7XG4gICAgICBpZiAodG8uaGFzaCA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAgICAgaWYgKHRvLmhhc2guc3RhcnRzV2l0aCgnIycpKSB7XG4gICAgICAgIHJldHVybiB0by5oYXNoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGAjJHt0by5oYXNofWA7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfSwgW2lzRGlzYWJsZWQsIHRvXSk7XG5cbiAgY29uc3QgaW5pdGlhbElzQWN0aXZlID0gaXNDdXJyZW50UGF0aG5hbWUoZXhhY3QsIHJvdXRlcj8uaGlzdG9yeSwgcGF0aG5hbWUpO1xuICBjb25zdCBbaXNBY3RpdmUsIHNldElzQWN0aXZlXSA9IFJlYWN0LnVzZVN0YXRlKGluaXRpYWxJc0FjdGl2ZSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgIGNvbnN0IG5ld0lzQWN0aXZlID0gaXNDdXJyZW50UGF0aG5hbWUoZXhhY3QsIHJvdXRlcj8uaGlzdG9yeSwgcGF0aG5hbWUpO1xuICAgICAgc2V0SXNBY3RpdmUobmV3SXNBY3RpdmUpO1xuICAgIH07XG5cbiAgICBpZiAocm91dGVyID09IG51bGwpIHtcbiAgICAgIHJldHVybiAoKSA9PiB7fTtcbiAgICB9XG5cbiAgICByb3V0ZXIuaGlzdG9yeS5zdWJzY3JpYmUob25DaGFuZ2UpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHJvdXRlci5oaXN0b3J5LnVuc3Vic2NyaWJlKG9uQ2hhbmdlKTtcbiAgICB9O1xuICB9LCBbZXhhY3QsIHBhdGhuYW1lLCByb3V0ZXJdKTtcblxuICBjb25zdCBjbGFzc05hbWVzID0gW2NsYXNzTmFtZV07XG5cbiAgaWYgKGlzQWN0aXZlKSB7XG4gICAgY2xhc3NOYW1lcy5wdXNoKGFjdGl2ZUNsYXNzTmFtZSk7XG4gIH1cblxuICAvLyBXaGVuIHRoZSB1c2VyIGNsaWNrcywgY2hhbmdlIHJvdXRlXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBNb3VzZUV2ZW50PEhUTUxBbmNob3JFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKCFpc0Rpc2FibGVkICYmIHR5cGVvZiBvbkNsaWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG9uQ2xpY2soZXZlbnQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgfHxcbiAgICAgICAgZXZlbnQubWV0YUtleSB8fFxuICAgICAgICBldmVudC5hbHRLZXkgfHxcbiAgICAgICAgZXZlbnQuY3RybEtleSB8fFxuICAgICAgICBldmVudC5zaGlmdEtleSB8fFxuICAgICAgICBldmVudC5idXR0b24gIT09IDAgfHxcbiAgICAgICAgKHRhcmdldCAhPSBudWxsICYmIHRhcmdldCAhPT0gJ19zZWxmJylcbiAgICAgICkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBpZiAocm91dGVyID09IG51bGwgfHwgaXNEaXNhYmxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJvdXRlci5oaXN0b3J5LnB1c2goe1xuICAgICAgICBwYXRobmFtZSxcbiAgICAgICAgc2VhcmNoLFxuICAgICAgICBoYXNoLFxuICAgICAgICBkZWJ1Z0NvbnRleHQ6IHtcbiAgICAgICAgICBvcmlnaW46ICdsaW5rLWNsaWNrJyxcbiAgICAgICAgICB0cmlnZ2VyOiAnbGluaycsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9LFxuICAgIFtoYXNoLCBpc0Rpc2FibGVkLCBvbkNsaWNrLCBwYXRobmFtZSwgcm91dGVyLCB0YXJnZXQsIHNlYXJjaF0sXG4gICk7XG5cbiAgLy8gQ2FsbGJhY2sgdG8gcHJlbG9hZCBqdXN0IHRoZSBjb2RlIGZvciB0aGUgcm91dGU6XG4gIC8vIHdlIHBhc3MgdGhpcyB0byBvbk1vdXNlRW50ZXIsIHdoaWNoIGlzIGEgd2Vha2VyIHNpZ25hbFxuICAvLyB0aGF0IHRoZSB1c2VyICptYXkqIG5hdmlnYXRlIHRvIHRoZSByb3V0ZS5cbiAgY29uc3QgaGFuZGxlTW91c2VFbnRlciA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogTW91c2VFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4pID0+IHtcbiAgICAgIGlmICh0eXBlb2Ygb25Nb3VzZUVudGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG9uTW91c2VFbnRlcihldmVudCk7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChyb3V0ZXIgPT0gbnVsbCB8fCBpc0Rpc2FibGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHByZWxvYWRPbkhvdmVyID09PSAnbm9uZScpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwcmVsb2FkVGFyZ2V0ID0ge1xuICAgICAgICBwYXRobmFtZSxcbiAgICAgICAgc2VhcmNoLFxuICAgICAgICBzb3VyY2U6ICdwcmVsb2FkLWhvdmVyJyxcbiAgICAgIH0gYXMgY29uc3Q7XG4gICAgICBpZiAocHJlbG9hZE9uSG92ZXIgPT09ICdjb2RlLWFuZC1kYXRhJykge1xuICAgICAgICByb3V0ZXIucHJlbG9hZChwcmVsb2FkVGFyZ2V0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcm91dGVyLnByZWxvYWRDb2RlKHByZWxvYWRUYXJnZXQpO1xuICAgIH0sXG4gICAgW3JvdXRlciwgaXNEaXNhYmxlZCwgb25Nb3VzZUVudGVyLCBwcmVsb2FkT25Ib3ZlciwgcGF0aG5hbWUsIHNlYXJjaF0sXG4gICk7XG5cbiAgLy8gQ2FsbGJhY2sgdG8gcHJlbG9hZCB0aGUgY29kZSBhbmQgZGF0YSBmb3IgdGhlIHJvdXRlOlxuICAvLyB3ZSBwYXNzIHRoaXMgdG8gb25Nb3VzZURvd24sIHNpbmNlIHRoaXMgaXMgYSBzdHJvbmdlclxuICAvLyBzaWduYWwgdGhhdCB0aGUgdXNlciB3aWxsIGxpa2VseSBjb21wbGV0ZSB0aGUgbmF2aWdhdGlvblxuICBjb25zdCBoYW5kbGVNb3VzZURvd24gPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IE1vdXNlRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+KSA9PiB7XG4gICAgICBpZiAodHlwZW9mIG9uTW91c2VEb3duID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG9uTW91c2VEb3duKGV2ZW50KTtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHJvdXRlciA9PSBudWxsIHx8IGlzRGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJlbG9hZE9uTW91c2VEb3duID09PSAnY29kZS1hbmQtZGF0YScpIHtcbiAgICAgICAgcm91dGVyLnByZWxvYWQoeyBwYXRobmFtZSwgc2VhcmNoLCBzb3VyY2U6ICdsaW5rLWNsaWNrJyB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtyb3V0ZXIsIGlzRGlzYWJsZWQsIG9uTW91c2VEb3duLCBwcmVsb2FkT25Nb3VzZURvd24sIHBhdGhuYW1lLCBzZWFyY2hdLFxuICApO1xuXG4gIGxldCBocmVmVmFsdWUgPSBwYXRobmFtZTtcbiAgaWYgKHR5cGVvZiBzZWFyY2ggPT09ICdzdHJpbmcnICYmIHNlYXJjaC5sZW5ndGggPiAwKSB7XG4gICAgaHJlZlZhbHVlID0gYCR7cGF0aG5hbWV9JHtzZWFyY2h9YDtcbiAgfVxuICBpZiAodHlwZW9mIGhhc2ggPT09ICdzdHJpbmcnICYmIGhhc2gubGVuZ3RoID4gMCkge1xuICAgIGhyZWZWYWx1ZSA9IGAke2hyZWZWYWx1ZX0ke2hhc2h9YDtcbiAgfVxuICByZXR1cm4gKFxuICAgIDxhXG4gICAgICB7Li4uYW5jaG9yUHJvcHN9XG4gICAgICBjbGFzc05hbWU9e2N4KGNsYXNzTmFtZXMpfVxuICAgICAgaHJlZj17aHJlZlZhbHVlfVxuICAgICAgb25DbGljaz17aGFuZGxlQ2xpY2t9XG4gICAgICBvbkZvY3VzPXtvbkZvY3VzfVxuICAgICAgb25Nb3VzZURvd249e2hhbmRsZU1vdXNlRG93bn1cbiAgICAgIG9uTW91c2VFbnRlcj17aGFuZGxlTW91c2VFbnRlcn1cbiAgICAgIG9uTW91c2VPdmVyPXtvbk1vdXNlT3Zlcn1cbiAgICAgIHJlZj17cmVmfVxuICAgICAgdGFyZ2V0PXt0YXJnZXR9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvYT5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IExpbms7XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"createRouter.d.ts","sourceRoot":"","sources":["../../../src/routing/createRouter.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,MAAM,IAAI,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAEL,KAAK,kBAAkB,EAEvB,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,iBAAiB,EAStB,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,kBAAkB,EAKxB,MAAM,uCAAuC,CAAC;AAQ/C,KAAK,iBAAiB,GAAG,YAAY,GAAG,SAAS,CAAC;AA8ClD,MAAM,MAAM,kBAAkB,CAAC,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAAE,IAAI;IAE/D,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB,OAAO,EAAE,kBAAkB,CACzB,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,QAAQ,CACT,GACC,cAAc,CAAC,CAAC,CAAC,GAAG;QAClB,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;KAChC,CAAC;CACL,CAAC;AAwCF,MAAM,MAAM,mBAAmB,CAAC,QAAQ,IAAI;IAE1C,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAExC,OAAO,CAAC,EAAE,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,CAAC;IAEtC,UAAU,CAAC,EAAE,MAAM,QAAQ,CAAC;CAC7B,CAAC;AASF,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,QAAQ,GAAG,OAAO,EAClB,CAAC,SAAS,QAAQ,EAAE,GAAG,QAAQ,EAAE,EAEjC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,EAC3B,OAAO,GAAE,mBAAmB,CAAC,QAAQ,CAAM,GAC1C,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAoqCjC"}
1
+ {"version":3,"file":"createRouter.d.ts","sourceRoot":"","sources":["../../../src/routing/createRouter.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,MAAM,IAAI,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAEL,KAAK,kBAAkB,EAEvB,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,iBAAiB,EAStB,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,kBAAkB,EAKxB,MAAM,uCAAuC,CAAC;AAQ/C,KAAK,iBAAiB,GAAG,YAAY,GAAG,SAAS,CAAC;AA8ClD,MAAM,MAAM,kBAAkB,CAAC,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAAE,IAAI;IAE/D,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB,OAAO,EAAE,kBAAkB,CACzB,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,QAAQ,CACT,GACC,cAAc,CAAC,CAAC,CAAC,GAAG;QAClB,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;KAChC,CAAC;CACL,CAAC;AAwCF,MAAM,MAAM,mBAAmB,CAAC,QAAQ,IAAI;IAE1C,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAExC,OAAO,CAAC,EAAE,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,CAAC;IAEtC,UAAU,CAAC,EAAE,MAAM,QAAQ,CAAC;CAC7B,CAAC;AASF,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,QAAQ,GAAG,OAAO,EAClB,CAAC,SAAS,QAAQ,EAAE,GAAG,QAAQ,EAAE,EAEjC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,EAC3B,OAAO,GAAE,mBAAmB,CAAC,QAAQ,CAAM,GAC1C,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC,CA8sCjC"}