@datagrok-libraries/utils 4.1.1 → 4.1.2

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/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "fullName": "Utils",
7
- "version": "4.1.1",
7
+ "version": "4.1.2",
8
8
  "description": "Common utilities",
9
9
  "dependencies": {
10
10
  "cash-dom": "^8.1.1",
@@ -1 +1 @@
1
- {"version":3,"file":"expect.d.ts","sourceRoot":"","sources":["expect.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAA;AAChF,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC;AACtE,MAAM,MAAM,aAAa,GACvB,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,aAAa,KAAK,YAAY,EAAE,GAAG,IAAI,CAAC;AAExH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,eAAe,CAAC;IAC3B,OAAO,EAAE,aAAa,CAAC;CACxB;AAID,eAAO,MAAM,iBAAiB,EAAE,WAAW,EAS1C,CAAC;AAIF,qBAAa,WAAY,SAAQ,KAAK;CAAG;AAGzC,MAAM,WAAW,sBAAsB;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC;CAC7B;AAGD,wBAAgB,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAGlG;AAGD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC;IAC1C,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB"}
1
+ {"version":3,"file":"expect.d.ts","sourceRoot":"","sources":["expect.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAA;AAChF,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC;AACtE,MAAM,MAAM,aAAa,GACvB,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,aAAa,KAAK,YAAY,EAAE,GAAG,IAAI,CAAC;AAExH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,eAAe,CAAC;IAC3B,OAAO,EAAE,aAAa,CAAC;CACxB;AAID,eAAO,MAAM,iBAAiB,EAAE,WAAW,EAU1C,CAAC;AAIF,qBAAa,WAAY,SAAQ,KAAK;CAAG;AAGzC,MAAM,WAAW,sBAAsB;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC;CAC7B;AAGD,wBAAgB,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAGlG;AAGD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC;IAC1C,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB"}
package/src/expect.js CHANGED
@@ -7,6 +7,7 @@ export const defaulCheckersSeq = [
7
7
  { name: 'Integer', predicate: integerPredicate, checker: eqChecker },
8
8
  { name: 'Float', predicate: floatPredicate, checker: floatChecker },
9
9
  { name: 'Array', predicate: arrayPredicate, checker: arrayChecker },
10
+ { name: 'FuncCall', predicate: funccallPredicate, checker: funccallChecker },
10
11
  { name: 'DataFrame', predicate: dataframePredicate, checker: dataframeChecker },
11
12
  { name: 'Object', predicate: objectPredicate, checker: objectChecker },
12
13
  ];
@@ -93,11 +94,18 @@ function dataframeChecker(actual, expected, _state, checkDeep) {
93
94
  for (let i = 0; i < expected.rowCount; i++) {
94
95
  const actualValue = actualColumn.get(i);
95
96
  const expectedValue = column.get(i);
96
- checkDeep([column.name], actualValue, expectedValue);
97
+ checkDeep([column.name, String(i)], actualValue, expectedValue);
97
98
  }
98
99
  }
99
100
  return errors;
100
101
  }
102
+ function funccallPredicate(actual, expected) {
103
+ return (actual instanceof DG.FuncCall && expected instanceof DG.FuncCall);
104
+ }
105
+ function funccallChecker(actual, expected, _state, checkDeep) {
106
+ checkDeep(['inputs'], [...actual.inputs.entries()], [...expected.inputs.entries()]);
107
+ checkDeep(['outputs'], [...actual.outputs.entries()], [...expected.outputs.entries()]);
108
+ }
101
109
  function objectPredicate(actual, expected) {
102
110
  return (typeof actual === 'object' && typeof expected === 'object');
103
111
  }
@@ -179,4 +187,4 @@ class ExpectRunner {
179
187
  return msg;
180
188
  }
181
189
  }
182
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXhwZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFvQnRDLDRDQUE0QztBQUM1QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBa0I7SUFDOUMsRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBQztJQUM5RCxFQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFDO0lBQy9ELEVBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUM7SUFDaEUsRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFDO0lBQ2xFLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUM7SUFDakUsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBQztJQUNqRSxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBQztJQUM3RSxFQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFDO0NBQ3JFLENBQUM7QUFHRixtQ0FBbUM7QUFDbkMsTUFBTSxPQUFPLFdBQVksU0FBUSxLQUFLO0NBQUc7QUFXekMsYUFBYTtBQUNiLE1BQU0sVUFBVSxlQUFlLENBQUMsTUFBVyxFQUFFLFFBQWEsRUFBRSxPQUFnQztJQUMxRixNQUFNLE1BQU0sR0FBRyxJQUFJ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LENBQUM7UUFDdEUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5cbi8vIGN1c3RvbSBjaGVja2VycyBpbnRlcmZhY2VzIEFQSSBmb3IgYWRkaW5nIGN1c3RvbSBjaGVja3NcbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tlckVycm9yIHtcbiAgcGF0aD86IHN0cmluZ1tdLFxuICBtc2c6IHN0cmluZyxcbn1cblxuZXhwb3J0IHR5cGUgTmVzdGVkQ2hlY2tlciA9IChwYXRoOiBzdHJpbmdbXSwgYWN0dWFsOiBhbnksIGV4cGVjdGVkOiBhbnkpID0+IHZvaWRcbmV4cG9ydCB0eXBlIEV4cGVjdFByZWRpY2F0ZSA9IChhY3R1YWw6IGFueSwgZXhwZWN0ZWQ6IGFueSkgPT4gYm9vbGVhbjtcbmV4cG9ydCB0eXBlIEV4cGVjdENoZWNrZXIgPVxuICAoYWN0dWFsOiBhbnksIGV4cGVjdGVkOiBhbnksIHN0YXRlOiBSZWFkb25seTxFeHBlY3RSdW5uZXJTdGF0ZT4sIGNoZWNrTmVzdGVkOiBOZXN0ZWRDaGVja2VyKSA9PiBDaGVja2VyRXJyb3JbXSB8IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tlckl0ZW0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHByZWRpY2F0ZTogRXhwZWN0UHJlZGljYXRlO1xuICBjaGVja2VyOiBFeHBlY3RDaGVja2VyO1xufVxuXG5cbi8vIGRlZmF1bHQgY2hlY2tlcnMgc2VxdWVuY2UsIG9yZGVyIG1hdHRlcnMhXG5leHBvcnQgY29uc3QgZGVmYXVsQ2hlY2tlcnNTZXE6IENoZWNrZXJJdGVtW10gPSBbXG4gIHtuYW1lOiAnTnVsbCcsIHByZWRpY2F0ZTogbnVsbFByZWRpY2F0ZSwgY2hlY2tlcjogbnVsbENoZWNrZXJ9LFxuICB7bmFtZTogJ0Jvb2xlYW4nLCBwcmVkaWNhdGU6IGJvb2xQcmVkaWNhdGUsIGNoZWNrZXI6IGVxQ2hlY2tlcn0sXG4gIHtuYW1lOiAnU3RyaW5nJywgcHJlZGljYXRlOiBzdHJpbmdQcmVkaWNhdGUsIGNoZWNrZXI6IGVxQ2hlY2tlcn0sXG4gIHtuYW1lOiAnSW50ZWdlcicsIHByZWRpY2F0ZTogaW50ZWdlclByZWRpY2F0ZSwgY2hlY2tlcjogZXFDaGVja2VyfSxcbiAge25hbWU6ICdGbG9hdCcsIHByZWRpY2F0ZTogZmxvYXRQcmVkaWNhdGUsIGNoZWNrZXI6IGZsb2F0Q2hlY2tlcn0sXG4gIHtuYW1lOiAnQXJyYXknLCBwcmVkaWNhdGU6IGFycmF5UHJlZGljYXRlLCBjaGVja2VyOiBhcnJheUNoZWNrZXJ9LFxuICB7bmFtZTogJ0RhdGFGcmFtZScsIHByZWRpY2F0ZTogZGF0YWZyYW1lUHJlZGljYXRlLCBjaGVja2VyOiBkYXRhZnJhbWVDaGVja2VyfSxcbiAge25hbWU6ICdPYmplY3QnLCBwcmVkaWNhdGU6IG9iamVjdFByZWRpY2F0ZSwgY2hlY2tlcjogb2JqZWN0Q2hlY2tlcn0sXG5dO1xuXG5cbi8vIGN1c3RvbSBlcnJvciBjbGFzcywganVzdCBpbiBjYXNlXG5leHBvcnQgY2xhc3MgRXhwZWN0RXJyb3IgZXh0ZW5kcyBFcnJvciB7fVxuXG4vLyBleHBlY3REZWVwRXF1YWwgb3B0aW9uc1xuZXhwb3J0IGludGVyZmFjZSBFeHBlY3REZWVwRXF1YWxPcHRpb25zIHtcbiAgZmxvYXRUb2xlcmFuY2U/OiBudW1iZXIsXG4gIG1heEVycm9yc1JlcG9ydD86IG51bWJlcixcbiAgbWF4RGVwdGg/OiBudW1iZXIsXG4gIHByZWZpeD86IHN0cmluZyxcbiAgY2hlY2tlcnNTZXE/OiBDaGVja2VySXRlbVtdLFxufVxuXG4vLyBwdWJsaWMgQVBJXG5leHBvcnQgZnVuY3Rpb24gZXhwZWN0RGVlcEVxdWFsKGFjdHVhbDogYW55LCBleHBlY3RlZDogYW55LCBvcHRpb25zPzogRXhwZWN0RGVlcEVxdWFsT3B0aW9ucyk6IHZvaWQge1xuICBjb25zdCBydW5uZXIgPSBuZXcgRXhwZWN0UnVubmVyKG9wdGlvbnMpO1xuICBydW5uZXIucnVuKGFjdHVhbCwgZXhwZWN0ZWQpO1xufVxuXG4vLyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzXG5leHBvcnQgaW50ZXJmYWNlIEV4cGVjdFJ1bm5lclN0YXRlIHtcbiAgb3B0aW9uczogUmVxdWlyZWQ8RXhwZWN0RGVlcEVxdWFsT3B0aW9ucz47XG4gIGVycm9yczogQ2hlY2tlckVycm9yW107XG4gIGN1cnJlbnRQYXRoOiBzdHJpbmdbXTtcbn1cblxuXG5mdW5jdGlvbiBudWxsUHJlZGljYXRlKGFjdHVhbDogYW55LCBleHBlY3RlZDogYW55KSB7XG4gIHJldHVybiBhY3R1YWwgPT0gbnVsbCAmJiBleHBlY3RlZCA9PSBudWxsO1xufVxuXG5mdW5jdGlvbiBudWxsQ2hlY2tlcigpIHtcbiAgcmV0dXJuO1xufVxuXG5cbmZ1bmN0aW9uIGludGVnZXJQcmVkaWNhdGUoYWN0dWFsOiBhbnksIGV4cGVjdGVkOiBhbnkpIHtcbiAgcmV0dXJuIChOdW1iZXIuaXNJbnRlZ2VyKGFjdHVhbCkgJiYgTnVtYmVyLmlzSW50ZWdlcihleHBlY3RlZCkpO1xufVxuXG5mdW5jdGlvbiBzdHJpbmdQcmVkaWNhdGUoYWN0dWFsOiBhbnksIGV4cGVjdGVkOiBhbnkpIHtcbiAgcmV0dXJuICh0eXBlb2YgYWN0dWFsID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgZXhwZWN0ZWQgPT09ICdzdHJpbmcnKTtcbn1cblxuZnVuY3Rpb24gYm9vbFByZWRpY2F0ZShhY3R1YWw6IGFueSwgZXhwZWN0ZWQ6IGFueSkge1xuICByZXR1cm4gKHR5cGVvZiBhY3R1YWwgPT09ICdib29sZWFuJyAmJiB0eXBlb2YgZXhwZWN0ZWQgPT09ICdib29sZWFuJyk7XG59XG5cbmZ1bmN0aW9uIGVxQ2hlY2tlcihhY3R1YWw6IGFueSwgZXhwZWN0ZWQ6IGFueSkge1xuICBjb25zdCBhcmVFcXVhbCA9IGFjdHVhbCA9PT0gZXhwZWN0ZWQ7XG4gIGlmICghYXJlRXF1YWwpIHtcbiAgICBjb25zdCBtc2cgPSBgRXhwZWN0ZWQgJHtleHBlY3RlZH0sIGdvdCAke2FjdHVhbH1gO1xuICAgIHJldHVybiBbe21zZ31dO1xuICB9XG59XG5cblxuZnVuY3Rpb24gZmxvYXRQcmVkaWNhdGUoYWN0dWFsOiBhbnksIGV4cGVjdGVkOiBhbnkpIHtcbiAgcmV0dXJuICh0eXBlb2YgYWN0dWFsID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgZXhwZWN0ZWQgPT09ICdudW1iZXInKTtcbn1cblxuZnVuY3Rpb24gZmxvYXRDaGVja2VyKGFjdHVhbDogYW55LCBleHBlY3RlZDogYW55LCBzdGF0ZTogUmVhZG9ubHk8RXhwZWN0UnVubmVyU3RhdGU+KTogQ2hlY2tlckVycm9yW10gfCB1bmRlZmluZWQge1xuICBpZiAoKGFjdHVhbCA9PT0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZICYmIGV4cGVjdGVkID09PSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpIHx8XG4gICAgKGFjdHVhbCA9PT0gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZICYmIGV4cGVjdGVkID09PSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpIHx8XG4gICAgKGlzTmFOKGFjdHVhbCkgJiYgaXNOYU4oZXhwZWN0ZWQpKSlcbiAgICByZXR1cm47XG4gIGNvbnN0IGFyZUVxdWFsID0gTWF0aC5hYnMoYWN0dWFsIC0gZXhwZWN0ZWQpIDwgc3RhdGUub3B0aW9ucy5mbG9hdFRvbGVyYW5jZTtcbiAgaWYgKCFhcmVFcXVhbCkge1xuICAgIGNvbnN0IG1zZyA9IGBFeHBlY3RlZCAke2V4cGVjdGVkfSwgZ290ICR7YWN0dWFsfSAodG9sZXJhbmNlID0gJHtzdGF0ZS5vcHRpb25zLmZsb2F0VG9sZXJhbmNlfSlgO1xuICAgIHJldHVybiBbe21zZ31dO1xuICB9XG59XG5cblxuZnVuY3Rpb24gYXJyYXlQcmVkaWNhdGUoYWN0dWFsOiBhbnksIGV4cGVjdGVkOiBhbnkpIHtcbiAgcmV0dXJuIChhY3R1YWwgaW5zdGFuY2VvZiBBcnJheSAmJiBleHBlY3RlZCBpbnN0YW5jZW9mIEFycmF5KTtcbn1cblxuZnVuY3Rpb24gYXJyYXlDaGVja2VyKGFjdHVhbDogYW55W10sIGV4cGVjdGVkOiBhbnlbXSxcbiAgX3N0YXRlOiBSZWFkb25seTxFeHBlY3RSdW5uZXJTdGF0ZT4sIGNoZWNrRGVlcDogTmVzdGVkQ2hlY2tlcik6IENoZWNrZXJFcnJvcltdIHtcbiAgY29uc3QgZXJyb3JzOiBDaGVja2VyRXJyb3JbXSA9IFtdO1xuICBpZiAoYWN0dWFsLmxlbmd0aCAhPT0gZXhwZWN0ZWQubGVuZ3RoKSB7XG4gICAgY29uc3QgZXJyID0ge21zZzogYEFycmF5cyBhcmUgb2YgZGlmZmVyZW50IGxlbmd0aDogYWN0dWFsIGFycmF5IGxlbmd0aCBpcyAke2FjdHVhbC5sZW5ndGh9IGAgK1xuICAgICAgYGFuZCBleHBlY3RlZCBhcnJheSBsZW5ndGggaXMgJHtleHBlY3RlZC5sZW5ndGh9YH07XG4gICAgZXJyb3JzLnB1c2goZXJyKTtcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdHVhbC5sZW5ndGg7IGkrKylcbiAgICBjaGVja0RlZXAoW1N0cmluZyhpKV0sIGFjdHVhbFtpXSwgZXhwZWN0ZWRbaV0pO1xuXG4gIHJldHVybiBlcnJvcnM7XG59XG5cblxuZnVuY3Rpb24gZGF0YWZyYW1lUHJlZGljYXRlKGFjdHVhbDogYW55LCBleHBlY3RlZDogYW55KSB7XG4gIHJldHVybiAoYWN0dWFsIGluc3RhbmNlb2YgREcuRGF0YUZyYW1lICYmIGV4cGVjdGVkIGluc3RhbmNlb2YgREcuRGF0YUZyYW1lKTtcbn1cblxuZnVuY3Rpb24gZGF0YWZyYW1lQ2hlY2tlcihhY3R1YWw6IERHLkRhdGFGcmFtZSwgZXhwZWN0ZWQ6IERHLkRhdGFGcmFtZSxcbiAgX3N0YXRlOiBSZWFkb25seTxFeHBlY3RSdW5uZXJTdGF0ZT4sIGNoZWNrRGVlcDogTmVzdGVkQ2hlY2tlcik6IENoZWNrZXJFcnJvcltdIHtcbiAgY29uc3QgZXJyb3JzOiBDaGVja2VyRXJyb3JbXSA9IFtdO1xuICBpZiAoYWN0dWFsLnJvd0NvdW50ICE9PSBleHBlY3RlZC5yb3dDb3VudCkge1xuICAgIGNvbnN0IGVyciA9IHttc2c6IGBEYXRhZnJhbWVzIGhhcyBkaWZmZXJlbnQgcm93IGNvdW50OiBhY3R1YWwgcm93IGNvdW50IGlzICR7YWN0dWFsLnJvd0NvdW50fSBgICtcbiAgICAgIGBhbmQgZXhwZWN0ZWQgcm93IGNvdW50IGlzICR7ZXhwZWN0ZWQucm93Q291bnR9YH07XG4gICAgZXJyb3JzLnB1c2goZXJyKTtcbiAgfVxuICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBleHBlY3RlZC5jb2x1bW5zKSB7XG4gICAgY29uc3QgYWN0dWFsQ29sdW1uID0gYWN0dWFsLmNvbHVtbnMuYnlOYW1lKGNvbHVtbi5uYW1lKTtcbiAgICBpZiAoIWFjdHVhbENvbHVtbikge1xuICAgICAgY29uc3QgZXJyID0ge21zZzogYENvbHVtbiAke2NvbHVtbi5uYW1lfSBub3QgZm91bmRgfTtcbiAgICAgIGVycm9ycy5wdXNoKGVycik7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGFjdHVhbENvbHVtbi50eXBlICE9PSBjb2x1bW4udHlwZSkge1xuICAgICAgY29uc3QgZXJyID0ge21zZzogYENvbHVtbiAke2NvbHVtbi5uYW1lfSB0eXBlIGV4cGVjdGVkICR7Y29sdW1uLnR5cGV9IGdvdCAke2FjdHVhbENvbHVtbi50eXBlfWB9O1xuICAgICAgZXJyb3JzLnB1c2goZXJyKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGV4cGVjdGVkLnJvd0NvdW50OyBpKyspIHtcbiAgICAgIGNvbnN0IGFjdHVhbFZhbHVlID0gYWN0dWFsQ29sdW1uLmdldChpKTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkVmFsdWUgPSBjb2x1bW4uZ2V0KGkpO1xuICAgICAgY2hlY2tEZWVwKFtjb2x1bW4ubmFtZV0sIGFjdHVhbFZhbHVlLCBleHBlY3RlZFZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGVycm9ycztcbn1cblxuXG5mdW5jdGlvbiBvYmplY3RQcmVkaWNhdGUoYWN0dWFsOiBhbnksIGV4cGVjdGVkOiBhbnkpIHtcbiAgcmV0dXJuICh0eXBlb2YgYWN0dWFsID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgZXhwZWN0ZWQgPT09ICdvYmplY3QnKTtcbn1cblxuZnVuY3Rpb24gb2JqZWN0Q2hlY2tlcihhY3R1YWw6IFJlY29yZDxhbnksIGFueT4sIGV4cGVjdGVkOiBSZWNvcmQ8YW55LCBhbnk+LFxuICBfc3RhdGU6IFJlYWRvbmx5PEV4cGVjdFJ1bm5lclN0YXRlPiwgY2hlY2tEZWVwOiBOZXN0ZWRDaGVja2VyKTogQ2hlY2tlckVycm9yW10ge1xuICBjb25zdCBlcnJvcnM6IENoZWNrZXJFcnJvcltdID0gW107XG4gIGZvciAoY29uc3QgW2V4cGVjdGVkS2V5LCBleHBlY3RlZFZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhleHBlY3RlZCkpIHtcbiAgICBjb25zdCBhY3R1YWxWYWx1ZSA9IGFjdHVhbFtleHBlY3RlZEtleV07XG4gICAgY2hlY2tEZWVwKFtleHBlY3RlZEtleV0sIGFjdHVhbFZhbHVlLCBleHBlY3RlZFZhbHVlKTtcbiAgfVxuICByZXR1cm4gZXJyb3JzO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogUmVxdWlyZWQ8RXhwZWN0RGVlcEVxdWFsT3B0aW9ucz4gPSB7XG4gIGZsb2F0VG9sZXJhbmNlOiAwLjAwMSxcbiAgbWF4RXJyb3JzUmVwb3J0OiA1LFxuICBtYXhEZXB0aDogMTI4LFxuICBjaGVja2Vyc1NlcTogZGVmYXVsQ2hlY2tlcnNTZXEsXG4gIHByZWZpeDogJycsXG59O1xuXG5cbmNsYXNzIEV4cGVjdFJ1bm5lciB7XG4gIHByaXZhdGUgb3B0aW9uczogUmVxdWlyZWQ8RXhwZWN0RGVlcEVxdWFsT3B0aW9ucz47XG4gIHByaXZhdGUgc3RhdGU6IEV4cGVjdFJ1bm5lclN0YXRlO1xuXG4gIGNvbnN0cnVjdG9yKG9wczogRXhwZWN0RGVlcEVxdWFsT3B0aW9ucyA9IHt9KSB7XG4gICAgdGhpcy5vcHRpb25zID0gey4uLmRlZmF1bHRPcHRpb25zLCAuLi5vcHN9O1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBlcnJvcnM6IFtdLFxuICAgICAgY3VycmVudFBhdGg6IFtdLFxuICAgICAgb3B0aW9uczogdGhpcy5vcHRpb25zLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgcnVuKGFjdHVhbDogYW55LCBleHBlY3RlZDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5tYXRjaENoZWNrZXIoYWN0dWFsLCBleHBlY3RlZCk7XG4gICAgdGhpcy5jaGVja0Vycm9yc0xpbWl0KDApO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0RlZXAocGF0aDogc3RyaW5nW10sIGFjdHVhbDogYW55LCBleHBlY3RlZDogYW55KSB7XG4gICAgY29uc3QgcGF0aExlbmd0aCA9IHBhdGgubGVuZ3RoO1xuICAgIHRoaXMuc3RhdGUuY3VycmVudFBhdGgucHVzaCguLi5wYXRoKTtcbiAgICBpZiAodGhpcy5zdGF0ZS5jdXJyZW50UGF0aC5sZW5ndGggPiB0aGlzLm9wdGlvbnMubWF4RGVwdGgpXG4gICAgICB0aHJvdyBuZXcgRXhwZWN0RXJyb3IoYE1heCBkZXB0aCAke3RoaXMub3B0aW9ucy5tYXhEZXB0aH0gaXMgZXhjZWVkZWQsIHBvdGVudGlhbGx5IGEgY2lyY3VsYXIgc3RydWN0dXJlYCk7XG5cbiAgICB0aGlzLm1hdGNoQ2hlY2tlcihhY3R1YWwsIGV4cGVjdGVkKTtcbiAgICB0aGlzLnN0YXRlLmN1cnJlbnRQYXRoLnNwbGljZSgtcGF0aExlbmd0aCk7XG4gIH1cblxuICBwcml2YXRlIG1hdGNoQ2hlY2tlcihhY3R1YWw6IGFueSwgZXhwZWN0ZWQ6IGFueSkge1xuICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgIGZvciAoY29uc3Qge3ByZWRpY2F0ZSwgY2hlY2tlcn0gb2YgdGhpcy5vcHRpb25zLmNoZWNrZXJzU2VxKSB7XG4gICAgICBpZiAocHJlZGljYXRlKGFjdHVhbCwgZXhwZWN0ZWQpKSB7XG4gICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZXJyb3JzID0gY2hlY2tlcihhY3R1YWwsIGV4cGVjdGVkLCB0aGlzLnN0YXRlLCB0aGlzLmNoZWNrRGVlcC5iaW5kKHRoaXMpKTtcbiAgICAgICAgaWYgKGVycm9ycylcbiAgICAgICAgICBlcnJvcnMubWFwKChlKSA9PiB0aGlzLmFkZEVycm9yKGUpKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFmb3VuZCkge1xuICAgICAgY29uc3QgZXJyID0ge21zZzogYFR5cGUgbWlzbWF0Y2ggb3Igbm8gY2hlY2tlciBkZWZpbmVkOiBleHBlY3RlZCAke2V4cGVjdGVkfSwgZ290ICR7YWN0dWFsfWB9O1xuICAgICAgdGhpcy5hZGRFcnJvcihlcnIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkRXJyb3IoZXJyOiBDaGVja2VyRXJyb3IpOiB2b2lkIHtcbiAgICBjb25zdCBmdWxsUGF0aCA9IFsuLi4odGhpcy5zdGF0ZS5jdXJyZW50UGF0aCA/PyBbXSksIC4uLihlcnIucGF0aCA/PyBbXSldO1xuICAgIGNvbnN0IGZlcnI6IENoZWNrZXJFcnJvciA9IHtcbiAgICAgIHBhdGg6IGZ1bGxQYXRoLFxuICAgICAgbXNnOiBlcnIubXNnLFxuICAgIH07XG4gICAgdGhpcy5zdGF0ZS5lcnJvcnMucHVzaChmZXJyKTtcbiAgICB0aGlzLmNoZWNrRXJyb3JzTGltaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tFcnJvcnNMaW1pdChsaW1pdCA9IHRoaXMub3B0aW9ucy5tYXhFcnJvcnNSZXBvcnQpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5lcnJvcnMubGVuZ3RoID4gbGltaXQpIHtcbiAgICAgIGNvbnN0IHJlcG9ydCA9IHRoaXMubWFrZVJlcG9ydCgpO1xuICAgICAgdGhyb3cgbmV3IEV4cGVjdEVycm9yKHJlcG9ydCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYWtlUmVwb3J0KCkge1xuICAgIGNvbnN0IG1zZyA9IHRoaXMuc3RhdGUuZXJyb3JzLm1hcCgoZSkgPT4ge1xuICAgICAgY29uc3QgcHJlZml4ID0gKGUucGF0aCA/PyBbXSkubWFwKChhKSA9PiBgWycke1N0cmluZyhhKX0nXWApLmpvaW4oJy4nKTtcbiAgICAgIGNvbnN0IG1zZyA9IHByZWZpeCA/IGAke3ByZWZpeH06ICR7ZS5tc2d9YCA6IGUubXNnO1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5wcmVmaXggPyBgJHt0aGlzLm9wdGlvbnMucHJlZml4fTogJHttc2d9YCA6IG1zZztcbiAgICB9KS5zbGljZSgwLCB0aGlzLm9wdGlvbnMubWF4RXJyb3JzUmVwb3J0KS5qb2luKCdcXG4nKTtcbiAgICByZXR1cm4gbXNnO1xuICB9XG59XG4iXX0=
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXhwZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFvQnRDLDRDQUE0QztBQUM1QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBa0I7SUFDOUMsRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBQztJQUM5RCxFQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFDO0lBQy9ELEVBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUM7SUFDaEUsRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFDO0lBQ2xFLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUM7SUFDakUsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBQztJQUNqRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUM7SUFDMUUsRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUM7SUFDN0UsRUFBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBQztDQUNyRSxDQUFDO0FBR0YsbUNBQW1DO0FBQ25DLE1BQU0sT0FBTyxXQUFZLFNBQVEsS0FBSztDQUFHO0FBV3pDLGFBQWE7QUFD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QU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVPLFVBQVU7UUFDaEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7O1lBQ3RDLE1BQU0sTUFBTSxHQUFHLENBQUMsTUFBQSxDQUFDLENBQUMsSUFBSSxtQ0FBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkUsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDbkQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3RFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuXG4vLyBjdXN0b20gY2hlY2tlcnMgaW50ZXJmYWNlcyBBUEkgZm9yIGFkZGluZyBjdXN0b20gY2hlY2tzXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrZXJFcnJvciB7XG4gIHBhdGg/OiBzdHJpbmdbXSxcbiAgbXNnOiBzdHJpbmcsXG59XG5cbmV4cG9ydCB0eXBlIE5lc3RlZENoZWNrZXIgPSAocGF0aDogc3RyaW5nW10sIGFjdHVhbDogYW55LCBleHBlY3RlZDogYW55KSA9PiB2b2lkXG5leHBvcnQgdHlwZSBFeHBlY3RQcmVkaWNhdGUgPSAoYWN0dWFsOiBhbnksIGV4cGVjdGVkOiBhbnkpID0+IGJvb2xlYW47XG5leHBvcnQgdHlwZSBFeHBlY3RDaGVja2VyID1cbiAgKGFjdHVhbDogYW55LCBleHBlY3RlZDogYW55LCBzdGF0ZTogUmVhZG9ubHk8RXhwZWN0UnVubmVyU3RhdGU+LCBjaGVja05lc3RlZDogTmVzdGVkQ2hlY2tlcikgPT4gQ2hlY2tlckVycm9yW10gfCB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrZXJJdGVtIHtcbiAgbmFtZTogc3RyaW5nO1xuICBwcmVkaWNhdGU6IEV4cGVjdFByZWRpY2F0ZTtcbiAgY2hlY2tlcjogRXhwZWN0Q2hlY2tlcjtcbn1cblxuXG4vLyBkZWZhdWx0IGNoZWNrZXJzIHNlcXVlbmNlLCBvcmRlciBtYXR0ZXJzIVxuZXhwb3J0IGNvbnN0IGRlZmF1bENoZWNrZXJzU2VxOiBDaGVja2VySXRlbVtdID0gW1xuICB7bmFtZTogJ051bGwnLCBwcmVkaWNhdGU6IG51bGxQcmVkaWNhdGUsIGNoZWNrZXI6IG51bGxDaGVja2VyfSxcbiAge25hbWU6ICdCb29sZWFuJywgcHJlZGljYXRlOiBib29sUHJlZGljYXRlLCBjaGVja2VyOiBlcUNoZWNrZXJ9LFxuICB7bmFtZTogJ1N0cmluZycsIHByZWRpY2F0ZTogc3RyaW5nUHJlZGljYXRlLCBjaGVja2VyOiBlcUNoZWNrZXJ9LFxuICB7bmFtZTogJ0ludGVnZXInLCBwcmVkaWNhdGU6IGludGVnZXJQcmVkaWNhdGUsIGNoZWNrZXI6IGVxQ2hlY2tlcn0sXG4gIHtuYW1lOiAnRmxvYXQnLCBwcmVkaWNhdGU6IGZsb2F0UHJlZGljYXRlLCBjaGVja2VyOiBmbG9hdENoZWNrZXJ9LFxuICB7bmFtZTogJ0FycmF5JywgcHJlZGljYXRlOiBhcnJheVByZWRpY2F0ZSwgY2hlY2tlcjogYXJyYXlDaGVja2VyfSxcbiAge25hbWU6ICdGdW5jQ2FsbCcsIHByZWRpY2F0ZTogZnVuY2NhbGxQcmVkaWNhdGUsIGNoZWNrZXI6IGZ1bmNjYWxsQ2hlY2tlcn0sXG4gIHtuYW1lOiAnRGF0YUZyYW1lJywgcHJlZGljYXRlOiBkYXRhZnJhbWVQcmVkaWNhdGUsIGNoZWNrZXI6IGRhdGFmcmFtZUNoZWNrZXJ9LFxuICB7bmFtZTogJ09iamVjdCcsIHByZWRpY2F0ZTogb2JqZWN0UHJlZGljYXRlLCBjaGVja2VyOiBvYmplY3RDaGVja2VyfSxcbl07XG5cblxuLy8gY3VzdG9tIGVycm9yIGNsYXNzLCBqdXN0IGluIGNhc2VcbmV4cG9ydCBjbGFzcyBFeHBlY3RFcnJvciBleHRlbmRzIEVycm9yIHt9XG5cbi8vIGV4cGVjdERlZXBFcXVhbCBvcHRpb25zXG5leHBvcnQgaW50ZXJmYWNlIEV4cGVjdERlZXBFcXVhbE9wdGlvbnMge1xuICBmbG9hdFRvbGVyYW5jZT86IG51bWJlcixcbiAgbWF4RXJyb3JzUmVwb3J0PzogbnVtYmVyLFxuICBtYXhEZXB0aD86IG51bWJlcixcbiAgcHJlZml4Pzogc3RyaW5nLFxuICBjaGVja2Vyc1NlcT86IENoZWNrZXJJdGVtW10sXG59XG5cbi8vIHB1YmxpYyBBUElcbmV4cG9ydCBmdW5jdGlvbiBleHBlY3REZWVwRXF1YWwoYWN0dWFsOiBhbnksIGV4cGVjdGVkOiBhbnksIG9wdGlvbnM/OiBFeHBlY3REZWVwRXF1YWxPcHRpb25zKTogdm9pZCB7XG4gIGNvbnN0IHJ1bm5lciA9IG5ldyBFeHBlY3RSdW5uZXIob3B0aW9ucyk7XG4gIHJ1bm5lci5ydW4oYWN0dWFsLCBleHBlY3RlZCk7XG59XG5cbi8vIGltcGxlbWVudGF0aW9uIGRldGFpbHNcbmV4cG9ydCBpbnRlcmZhY2UgRXhwZWN0UnVubmVyU3RhdGUge1xuICBvcHRpb25zOiBSZXF1aXJlZDxFeHBlY3REZWVwRXF1YWxPcHRpb25zPjtcbiAgZXJyb3JzOiBDaGVja2VyRXJyb3JbXTtcbiAgY3VycmVudFBhdGg6IHN0cmluZ1tdO1xufVxuXG5cbmZ1bmN0aW9uIG51bGxQcmVkaWNhdGUoYWN0dWFsOiBhbnksIGV4cGVjdGVkOiBhbnkpIHtcbiAgcmV0dXJuIGFjdHVhbCA9PSBudWxsICYmIGV4cGVjdGVkID09IG51bGw7XG59XG5cbmZ1bmN0aW9uIG51bGxDaGVja2VyKCkge1xuICByZXR1cm47XG59XG5cblxuZnVuY3Rpb24gaW50ZWdlclByZWRpY2F0ZShhY3R1YWw6IGFueSwgZXhwZWN0ZWQ6IGFueSkge1xuICByZXR1cm4gKE51bWJlci5pc0ludGVnZXIoYWN0dWFsKSAmJiBOdW1iZXIuaXNJbnRlZ2VyKGV4cGVjdGVkKSk7XG59XG5cbmZ1bmN0aW9uIHN0cmluZ1ByZWRpY2F0ZShhY3R1YWw6IGFueSwgZXhwZWN0ZWQ6IGFueSkge1xuICByZXR1cm4gKHR5cGVvZiBhY3R1YWwgPT09ICdzdHJpbmcnICYmIHR5cGVvZiBleHBlY3RlZCA9PT0gJ3N0cmluZycpO1xufVxuXG5mdW5jdGlvbiBib29sUHJlZGljYXRlKGFjdHVhbDogYW55LCBleHBlY3RlZDogYW55KSB7XG4gIHJldHVybiAodHlwZW9mIGFjdHVhbCA9PT0gJ2Jvb2xlYW4nICYmIHR5cGVvZiBleHBlY3RlZCA9PT0gJ2Jvb2xlYW4nKTtcbn1cblxuZnVuY3Rpb24gZXFDaGVja2VyKGFjdHVhbDogYW55LCBleHBlY3RlZDogYW55KSB7XG4gIGNvbnN0IGFyZUVxdWFsID0gYWN0dWFsID09PSBleHBlY3RlZDtcbiAgaWYgKCFhcmVFcXVhbCkge1xuICAgIGNvbnN0IG1zZyA9IGBFeHBlY3RlZCAke2V4cGVjdGVkfSwgZ290ICR7YWN0dWFsfWA7XG4gICAgcmV0dXJuIFt7bXNnfV07XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBmbG9hdFByZWRpY2F0ZShhY3R1YWw6IGFueSwgZXhwZWN0ZWQ6IGFueSkge1xuICByZXR1cm4gKHR5cGVvZiBhY3R1YWwgPT09ICdudW1iZXInICYmIHR5cGVvZiBleHBlY3RlZCA9PT0gJ251bWJlcicpO1xufVxuXG5mdW5jdGlvbiBmbG9hdENoZWNrZXIoYWN0dWFsOiBhbnksIGV4cGVjdGVkOiBhbnksIHN0YXRlOiBSZWFkb25seTxFeHBlY3RSdW5uZXJTdGF0ZT4pOiBDaGVja2VyRXJyb3JbXSB8IHVuZGVmaW5lZCB7XG4gIGlmICgoYWN0dWFsID09PSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgJiYgZXhwZWN0ZWQgPT09IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSkgfHxcbiAgICAoYWN0dWFsID09PSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkgJiYgZXhwZWN0ZWQgPT09IE51bWJlci5ORUdBVElWRV9JTkZJTklUWSkgfHxcbiAgICAoaXNOYU4oYWN0dWFsKSAmJiBpc05hTihleHBlY3RlZCkpKVxuICAgIHJldHVybjtcbiAgY29uc3QgYXJlRXF1YWwgPSBNYXRoLmFicyhhY3R1YWwgLSBleHBlY3RlZCkgPCBzdGF0ZS5vcHRpb25zLmZsb2F0VG9sZXJhbmNlO1xuICBpZiAoIWFyZUVxdWFsKSB7XG4gICAgY29uc3QgbXNnID0gYEV4cGVjdGVkICR7ZXhwZWN0ZWR9LCBnb3QgJHthY3R1YWx9ICh0b2xlcmFuY2UgPSAke3N0YXRlLm9wdGlvbnMuZmxvYXRUb2xlcmFuY2V9KWA7XG4gICAgcmV0dXJuIFt7bXNnfV07XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBhcnJheVByZWRpY2F0ZShhY3R1YWw6IGFueSwgZXhwZWN0ZWQ6IGFueSkge1xuICByZXR1cm4gKGFjdHVhbCBpbnN0YW5jZW9mIEFycmF5ICYmIGV4cGVjdGVkIGluc3RhbmNlb2YgQXJyYXkpO1xufVxuXG5mdW5jdGlvbiBhcnJheUNoZWNrZXIoYWN0dWFsOiBhbnlbXSwgZXhwZWN0ZWQ6IGFueVtdLFxuICBfc3RhdGU6IFJlYWRvbmx5PEV4cGVjdFJ1bm5lclN0YXRlPiwgY2hlY2tEZWVwOiBOZXN0ZWRDaGVja2VyKTogQ2hlY2tlckVycm9yW10ge1xuICBjb25zdCBlcnJvcnM6IENoZWNrZXJFcnJvcltdID0gW107XG4gIGlmIChhY3R1YWwubGVuZ3RoICE9PSBleHBlY3RlZC5sZW5ndGgpIHtcbiAgICBjb25zdCBlcnIgPSB7bXNnOiBgQXJyYXlzIGFyZSBvZiBkaWZmZXJlbnQgbGVuZ3RoOiBhY3R1YWwgYXJyYXkgbGVuZ3RoIGlzICR7YWN0dWFsLmxlbmd0aH0gYCArXG4gICAgICBgYW5kIGV4cGVjdGVkIGFycmF5IGxlbmd0aCBpcyAke2V4cGVjdGVkLmxlbmd0aH1gfTtcbiAgICBlcnJvcnMucHVzaChlcnIpO1xuICB9XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYWN0dWFsLmxlbmd0aDsgaSsrKVxuICAgIGNoZWNrRGVlcChbU3RyaW5nKGkpXSwgYWN0dWFsW2ldLCBleHBlY3RlZFtpXSk7XG5cbiAgcmV0dXJuIGVycm9ycztcbn1cblxuXG5mdW5jdGlvbiBkYXRhZnJhbWVQcmVkaWNhdGUoYWN0dWFsOiBhbnksIGV4cGVjdGVkOiBhbnkpIHtcbiAgcmV0dXJuIChhY3R1YWwgaW5zdGFuY2VvZiBERy5EYXRhRnJhbWUgJiYgZXhwZWN0ZWQgaW5zdGFuY2VvZiBERy5EYXRhRnJhbWUpO1xufVxuXG5mdW5jdGlvbiBkYXRhZnJhbWVDaGVja2VyKGFjdHVhbDogREcuRGF0YUZyYW1lLCBleHBlY3RlZDogREcuRGF0YUZyYW1lLFxuICBfc3RhdGU6IFJlYWRvbmx5PEV4cGVjdFJ1bm5lclN0YXRlPiwgY2hlY2tEZWVwOiBOZXN0ZWRDaGVja2VyKTogQ2hlY2tlckVycm9yW10ge1xuICBjb25zdCBlcnJvcnM6IENoZWNrZXJFcnJvcltdID0gW107XG4gIGlmIChhY3R1YWwucm93Q291bnQgIT09IGV4cGVjdGVkLnJvd0NvdW50KSB7XG4gICAgY29uc3QgZXJyID0ge21zZzogYERhdGFmcmFtZXMgaGFzIGRpZmZlcmVudCByb3cgY291bnQ6IGFjdHVhbCByb3cgY291bnQgaXMgJHthY3R1YWwucm93Q291bnR9IGAgK1xuICAgICAgYGFuZCBleHBlY3RlZCByb3cgY291bnQgaXMgJHtleHBlY3RlZC5yb3dDb3VudH1gfTtcbiAgICBlcnJvcnMucHVzaChlcnIpO1xuICB9XG4gIGZvciAoY29uc3QgY29sdW1uIG9mIGV4cGVjdGVkLmNvbHVtbnMpIHtcbiAgICBjb25zdCBhY3R1YWxDb2x1bW4gPSBhY3R1YWwuY29sdW1ucy5ieU5hbWUoY29sdW1uLm5hbWUpO1xuICAgIGlmICghYWN0dWFsQ29sdW1uKSB7XG4gICAgICBjb25zdCBlcnIgPSB7bXNnOiBgQ29sdW1uICR7Y29sdW1uLm5hbWV9IG5vdCBmb3VuZGB9O1xuICAgICAgZXJyb3JzLnB1c2goZXJyKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoYWN0dWFsQ29sdW1uLnR5cGUgIT09IGNvbHVtbi50eXBlKSB7XG4gICAgICBjb25zdCBlcnIgPSB7bXNnOiBgQ29sdW1uICR7Y29sdW1uLm5hbWV9IHR5cGUgZXhwZWN0ZWQgJHtjb2x1bW4udHlwZX0gZ290ICR7YWN0dWFsQ29sdW1uLnR5cGV9YH07XG4gICAgICBlcnJvcnMucHVzaChlcnIpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXhwZWN0ZWQucm93Q291bnQ7IGkrKykge1xuICAgICAgY29uc3QgYWN0dWFsVmFsdWUgPSBhY3R1YWxDb2x1bW4uZ2V0KGkpO1xuICAgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZSA9IGNvbHVtbi5nZXQoaSk7XG4gICAgICBjaGVja0RlZXAoW2NvbHVtbi5uYW1lLCBTdHJpbmcoaSldLCBhY3R1YWxWYWx1ZSwgZXhwZWN0ZWRWYWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBlcnJvcnM7XG59XG5cblxuZnVuY3Rpb24gZnVuY2NhbGxQcmVkaWNhdGUoYWN0dWFsOiBhbnksIGV4cGVjdGVkOiBhbnkpIHtcbiAgcmV0dXJuIChhY3R1YWwgaW5zdGFuY2VvZiBERy5GdW5jQ2FsbCAmJiBleHBlY3RlZCBpbnN0YW5jZW9mIERHLkZ1bmNDYWxsKTtcbn1cblxuZnVuY3Rpb24gZnVuY2NhbGxDaGVja2VyKGFjdHVhbDogREcuRnVuY0NhbGwsIGV4cGVjdGVkOiBERy5GdW5jQ2FsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICBfc3RhdGU6IFJlYWRvbmx5PEV4cGVjdFJ1bm5lclN0YXRlPiwgY2hlY2tEZWVwOiBOZXN0ZWRDaGVja2VyKSB7XG4gIGNoZWNrRGVlcChbJ2lucHV0cyddLCBbLi4uYWN0dWFsLmlucHV0cy5lbnRyaWVzKCldLCBbLi4uZXhwZWN0ZWQuaW5wdXRzLmVudHJpZXMoKV0pO1xuICBjaGVja0RlZXAoWydvdXRwdXRzJ10sIFsuLi5hY3R1YWwub3V0cHV0cy5lbnRyaWVzKCldLCBbLi4uZXhwZWN0ZWQub3V0cHV0cy5lbnRyaWVzKCldKTtcbn1cblxuXG5mdW5jdGlvbiBvYmplY3RQcmVkaWNhdGUoYWN0dWFsOiBhbnksIGV4cGVjdGVkOiBhbnkpIHtcbiAgcmV0dXJuICh0eXBlb2YgYWN0dWFsID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgZXhwZWN0ZWQgPT09ICdvYmplY3QnKTtcbn1cblxuZnVuY3Rpb24gb2JqZWN0Q2hlY2tlcihhY3R1YWw6IFJlY29yZDxhbnksIGFueT4sIGV4cGVjdGVkOiBSZWNvcmQ8YW55LCBhbnk+LFxuICBfc3RhdGU6IFJlYWRvbmx5PEV4cGVjdFJ1bm5lclN0YXRlPiwgY2hlY2tEZWVwOiBOZXN0ZWRDaGVja2VyKTogQ2hlY2tlckVycm9yW10ge1xuICBjb25zdCBlcnJvcnM6IENoZWNrZXJFcnJvcltdID0gW107XG4gIGZvciAoY29uc3QgW2V4cGVjdGVkS2V5LCBleHBlY3RlZFZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhleHBlY3RlZCkpIHtcbiAgICBjb25zdCBhY3R1YWxWYWx1ZSA9IGFjdHVhbFtleHBlY3RlZEtleV07XG4gICAgY2hlY2tEZWVwKFtleHBlY3RlZEtleV0sIGFjdHVhbFZhbHVlLCBleHBlY3RlZFZhbHVlKTtcbiAgfVxuICByZXR1cm4gZXJyb3JzO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogUmVxdWlyZWQ8RXhwZWN0RGVlcEVxdWFsT3B0aW9ucz4gPSB7XG4gIGZsb2F0VG9sZXJhbmNlOiAwLjAwMSxcbiAgbWF4RXJyb3JzUmVwb3J0OiA1LFxuICBtYXhEZXB0aDogMTI4LFxuICBjaGVja2Vyc1NlcTogZGVmYXVsQ2hlY2tlcnNTZXEsXG4gIHByZWZpeDogJycsXG59O1xuXG5cbmNsYXNzIEV4cGVjdFJ1bm5lciB7XG4gIHByaXZhdGUgb3B0aW9uczogUmVxdWlyZWQ8RXhwZWN0RGVlcEVxdWFsT3B0aW9ucz47XG4gIHByaXZhdGUgc3RhdGU6IEV4cGVjdFJ1bm5lclN0YXRlO1xuXG4gIGNvbnN0cnVjdG9yKG9wczogRXhwZWN0RGVlcEVxdWFsT3B0aW9ucyA9IHt9KSB7XG4gICAgdGhpcy5vcHRpb25zID0gey4uLmRlZmF1bHRPcHRpb25zLCAuLi5vcHN9O1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBlcnJvcnM6IFtdLFxuICAgICAgY3VycmVudFBhdGg6IFtdLFxuICAgICAgb3B0aW9uczogdGhpcy5vcHRpb25zLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgcnVuKGFjdHVhbDogYW55LCBleHBlY3RlZDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5tYXRjaENoZWNrZXIoYWN0dWFsLCBleHBlY3RlZCk7XG4gICAgdGhpcy5jaGVja0Vycm9yc0xpbWl0KDApO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0RlZXAocGF0aDogc3RyaW5nW10sIGFjdHVhbDogYW55LCBleHBlY3RlZDogYW55KSB7XG4gICAgY29uc3QgcGF0aExlbmd0aCA9IHBhdGgubGVuZ3RoO1xuICAgIHRoaXMuc3RhdGUuY3VycmVudFBhdGgucHVzaCguLi5wYXRoKTtcbiAgICBpZiAodGhpcy5zdGF0ZS5jdXJyZW50UGF0aC5sZW5ndGggPiB0aGlzLm9wdGlvbnMubWF4RGVwdGgpXG4gICAgICB0aHJvdyBuZXcgRXhwZWN0RXJyb3IoYE1heCBkZXB0aCAke3RoaXMub3B0aW9ucy5tYXhEZXB0aH0gaXMgZXhjZWVkZWQsIHBvdGVudGlhbGx5IGEgY2lyY3VsYXIgc3RydWN0dXJlYCk7XG5cbiAgICB0aGlzLm1hdGNoQ2hlY2tlcihhY3R1YWwsIGV4cGVjdGVkKTtcbiAgICB0aGlzLnN0YXRlLmN1cnJlbnRQYXRoLnNwbGljZSgtcGF0aExlbmd0aCk7XG4gIH1cblxuICBwcml2YXRlIG1hdGNoQ2hlY2tlcihhY3R1YWw6IGFueSwgZXhwZWN0ZWQ6IGFueSkge1xuICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgIGZvciAoY29uc3Qge3ByZWRpY2F0ZSwgY2hlY2tlcn0gb2YgdGhpcy5vcHRpb25zLmNoZWNrZXJzU2VxKSB7XG4gICAgICBpZiAocHJlZGljYXRlKGFjdHVhbCwgZXhwZWN0ZWQpKSB7XG4gICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZXJyb3JzID0gY2hlY2tlcihhY3R1YWwsIGV4cGVjdGVkLCB0aGlzLnN0YXRlLCB0aGlzLmNoZWNrRGVlcC5iaW5kKHRoaXMpKTtcbiAgICAgICAgaWYgKGVycm9ycylcbiAgICAgICAgICBlcnJvcnMubWFwKChlKSA9PiB0aGlzLmFkZEVycm9yKGUpKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFmb3VuZCkge1xuICAgICAgY29uc3QgZXJyID0ge21zZzogYFR5cGUgbWlzbWF0Y2ggb3Igbm8gY2hlY2tlciBkZWZpbmVkOiBleHBlY3RlZCAke2V4cGVjdGVkfSwgZ290ICR7YWN0dWFsfWB9O1xuICAgICAgdGhpcy5hZGRFcnJvcihlcnIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkRXJyb3IoZXJyOiBDaGVja2VyRXJyb3IpOiB2b2lkIHtcbiAgICBjb25zdCBmdWxsUGF0aCA9IFsuLi4odGhpcy5zdGF0ZS5jdXJyZW50UGF0aCA/PyBbXSksIC4uLihlcnIucGF0aCA/PyBbXSldO1xuICAgIGNvbnN0IGZlcnI6IENoZWNrZXJFcnJvciA9IHtcbiAgICAgIHBhdGg6IGZ1bGxQYXRoLFxuICAgICAgbXNnOiBlcnIubXNnLFxuICAgIH07XG4gICAgdGhpcy5zdGF0ZS5lcnJvcnMucHVzaChmZXJyKTtcbiAgICB0aGlzLmNoZWNrRXJyb3JzTGltaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tFcnJvcnNMaW1pdChsaW1pdCA9IHRoaXMub3B0aW9ucy5tYXhFcnJvcnNSZXBvcnQpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5lcnJvcnMubGVuZ3RoID4gbGltaXQpIHtcbiAgICAgIGNvbnN0IHJlcG9ydCA9IHRoaXMubWFrZVJlcG9ydCgpO1xuICAgICAgdGhyb3cgbmV3IEV4cGVjdEVycm9yKHJlcG9ydCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYWtlUmVwb3J0KCkge1xuICAgIGNvbnN0IG1zZyA9IHRoaXMuc3RhdGUuZXJyb3JzLm1hcCgoZSkgPT4ge1xuICAgICAgY29uc3QgcHJlZml4ID0gKGUucGF0aCA/PyBbXSkubWFwKChhKSA9PiBgWycke1N0cmluZyhhKX0nXWApLmpvaW4oJy4nKTtcbiAgICAgIGNvbnN0IG1zZyA9IHByZWZpeCA/IGAke3ByZWZpeH06ICR7ZS5tc2d9YCA6IGUubXNnO1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5wcmVmaXggPyBgJHt0aGlzLm9wdGlvbnMucHJlZml4fTogJHttc2d9YCA6IG1zZztcbiAgICB9KS5zbGljZSgwLCB0aGlzLm9wdGlvbnMubWF4RXJyb3JzUmVwb3J0KS5qb2luKCdcXG4nKTtcbiAgICByZXR1cm4gbXNnO1xuICB9XG59XG4iXX0=
package/src/transform.js CHANGED
@@ -53,13 +53,13 @@ export class Viewport {
53
53
  return this.screen.left + this.xt.worldToScreen(world, this.screen.width, this.world.minX, this.world.maxX, this.inverseX);
54
54
  }
55
55
  yToScreen(world) {
56
- return this.screen.top + this.yt.worldToScreen(world, this.screen.height, this.world.minY, this.world.maxY, this.inverseY);
56
+ return this.screen.top + this.yt.worldToScreen(world, this.screen.height, this.world.minY, this.world.maxY, !this.inverseY);
57
57
  }
58
58
  xToWorld(screen) {
59
59
  return this.xt.screenToWorld(screen - this.screen.left, this.screen.width, this.world.minX, this.world.maxX, this.inverseX);
60
60
  }
61
61
  yToWorld(screen) {
62
- return this.yt.screenToWorld(screen - this.screen.top, this.screen.height, this.world.minY, this.world.maxY, this.inverseY);
62
+ return this.yt.screenToWorld(screen - this.screen.top, this.screen.height, this.world.minY, this.world.maxY, !this.inverseY);
63
63
  }
64
64
  toScreen(world) { return new DG.Point(this.xToScreen(world.x), this.yToScreen(world.y)); }
65
65
  toWorld(screen) { return new DG.Point(this.xToWorld(screen.x), this.yToWorld(screen.y)); }
@@ -72,4 +72,4 @@ export class Viewport {
72
72
  }
73
73
  }
74
74
  }
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidHJhbnNmb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFVdEMsNEJBQTRCO0FBQzVCLE1BQU0sZ0JBQWdCO0lBQ3BCLGFBQWEsQ0FBQyxNQUFjLEVBQUUsTUFBYyxFQUFFLEdBQVcsRUFBRSxHQUFXLEVBQUUsT0FBaUI7UUFDdkYsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQSxDQUFDLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUN6RCxPQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFhLEVBQUUsTUFBYyxFQUFFLEdBQVcsRUFBRSxHQUFXLEVBQUUsT0FBaUI7UUFDdEYsT0FBTyxPQUFPLENBQUMsQ0FBQztZQUNkLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNoRCxDQUFDLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FDRjtBQUdELHlCQUF5QjtBQUN6QixNQUFNLGFBQWE7SUFDakIsYUFBYSxDQUFDLE1BQWMsRUFBRSxNQUFjLEVBQUUsR0FBVyxFQUFFLEdBQVcsRUFBRSxPQUFpQjtRQUN2RixHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTVDLE1BQU0s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QUM7SUFDckQsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUN0RSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUFjO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUN2RSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUFjO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUN2RSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFlLElBQWMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUcsT0FBTyxDQUFDLE1BQWdCLElBQWMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFOUcsa0JBQWtCLENBQUMsQ0FBMkIsRUFBRSxLQUEwQixFQUFFLEtBQTBCO1FBQ3BHLElBQUksS0FBSyxFQUFFO1lBQ1QsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFDckUsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3hEO1FBQ0QsSUFBSSxLQUFLLEVBQUU7WUFDVCxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUNyRSxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDeEQ7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuXG5cbi8qKiBSZXByZXNlbnRzIDFEIHRyYW5zZm9ybWF0aW9uIGJldHdlZW4gc2NyZWVuIGFuZCB3b3JsZCBjb29yZGluYXRlcyAqL1xuaW50ZXJmYWNlIElUcmFuc2Zvcm0ge1xuICBzY3JlZW5Ub1dvcmxkKHNjcmVlbjogbnVtYmVyLCBsZW5ndGg6IG51bWJlciwgbWluOiBudW1iZXIsIG1heDogbnVtYmVyLCBpbnZlcnNlPzogYm9vbGVhbik6IG51bWJlcjtcbiAgd29ybGRUb1NjcmVlbih3b3JsZDogbnVtYmVyLCBsZW5ndGg6IG51bWJlciwgbWluOiBudW1iZXIsIG1heDogbnVtYmVyLCBpbnZlcnNlPzogYm9vbGVhbik6IG51bWJlcjtcbn1cblxuXG4vKiogTGluZWFyIHRyYW5zZm9ybWF0aW9uICovXG5jbGFzcyBfTGluZWFyVHJhbnNmb3JtIGltcGxlbWVudHMgSVRyYW5zZm9ybSB7XG4gIHNjcmVlblRvV29ybGQoc2NyZWVuOiBudW1iZXIsIGxlbmd0aDogbnVtYmVyLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIGludmVyc2U/OiBib29sZWFuKTogbnVtYmVyIHtcbiAgICBjb25zdCBkID0gaW52ZXJzZSA/IDEgLSBzY3JlZW4gLyBsZW5ndGg6IHNjcmVlbiAvIGxlbmd0aDtcbiAgICByZXR1cm4gbWluICsgZCAqIChtYXggLSBtaW4pO1xuICB9XG5cbiAgd29ybGRUb1NjcmVlbih3b3JsZDogbnVtYmVyLCBsZW5ndGg6IG51bWJlciwgbWluOiBudW1iZXIsIG1heDogbnVtYmVyLCBpbnZlcnNlPzogYm9vbGVhbik6IG51bWJlciB7XG4gICAgcmV0dXJuIGludmVyc2UgP1xuICAgICAgKCgxIC0gKCh3b3JsZCAtIG1pbikpIC8gKG1heCAtIG1pbikpICogbGVuZ3RoKSA6XG4gICAgICAoKHdvcmxkIC0gbWluKSAvIChtYXggLSBtaW4pICogbGVuZ3RoKTtcbiAgfVxufVxuXG5cbi8qKiBMb2cgdHJhbnNmb3JtYXRpb24gKi9cbmNsYXNzIF9Mb2dUcmFuc2Zvcm0gaW1wbGVtZW50cyBJVHJhbnNmb3JtIHtcbiAgc2NyZWVuVG9Xb3JsZChzY3JlZW46IG51bWJlciwgbGVuZ3RoOiBudW1iZXIsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciwgaW52ZXJzZT86IGJvb2xlYW4pOiBudW1iZXIge1xuICAgIG1pbiA9IChtaW4gPCAwLjAwMDAwMDAxID8gMC4wMDAwMDAwMSA6IG1pbik7XG5cbiAgICBjb25zdCBtYXhMb2cgPSBNYXRoLmxvZyhtYXgpO1xuICAgIGNvbnN0IG1pbkxvZyA9IE1hdGgubG9nKG1pbik7XG4gICAgcmV0dXJuIE1hdGguZXhwKG1pbkxvZyArIChtYXhMb2cgLSBtaW5Mb2cpICogKGludmVyc2UgPyBsZW5ndGggLSBzY3JlZW4gOiBzY3JlZW4pIC8gbGVuZ3RoKTtcbiAgfVxuXG4gIHdvcmxkVG9TY3JlZW4od29ybGQ6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciwgaW52ZXJzZT86IGJvb2xlYW4pOiBudW1iZXIge1xuICAgIGlmICh3b3JsZCA8PSAwKSByZXR1cm4gTmFOO1xuXG4gICAgLy9lbGltaW5hdGVzIHByb2JsZW1zIHdpdGggcm91bmRpbmdcbiAgICBpZiAod29ybGQgPT09IG1pbikgcmV0dXJuIGludmVyc2UgPyBsZW5ndGggOiAwLjA7XG4gICAgaWYgKHdvcmxkID09PSBtYXgpIHJldHVybiBpbnZlcnNlID8gMC4wIDogbGVuZ3RoO1xuXG4gICAgbWluID0gKG1pbiA8IDAuMDAwMDAwMDEgPyAwLjAwMDAwMDAxIDogbWluKTtcbiAgICB3b3JsZCA9ICh3b3JsZCA8IDAuMDAwMDAwMDEgPyAwLjAwMDAwMDAxIDogd29ybGQpO1xuXG4gICAgY29uc3QgcmVzID0gKGxlbmd0aCAqIE1hdGgubG9nKHdvcmxkIC8gbWluKSAvIE1hdGgubG9nKG1heCAvIG1pbikpO1xuICAgIHJldHVybiBpbnZlcnNlID8gbGVuZ3RoIC0gcmVzIDogcmVzO1xuICB9XG59XG5cbmNvbnN0IGxpbmVhclRyYW5zZm9ybSA9IG5ldyBfTGluZWFyVHJhbnNmb3JtKCk7XG5jb25zdCBsb2dUcmFuc2Zvcm0gPSBuZXcgX0xvZ1RyYW5zZm9ybSgpO1xuXG5cbi8qKiBQcm92aWRlcyBjb252ZW5pZW50IG1ldGhvZHMgZm9yIG1hcHBpbmcgYmV0d2VlbiBzY3JlZW4gYW5kIHdvcmxkIGNvb3JkaW5hdGVzICovXG5leHBvcnQgY2xhc3MgVmlld3BvcnQge1xuICB3b3JsZDogREcuUmVjdDtcbiAgc2NyZWVuOiBERy5SZWN0O1xuICBsb2dYOiBib29sZWFuID0gZmFsc2U7XG4gIGxvZ1k6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaW52ZXJzZVg6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaW52ZXJzZVk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBnZXQgeHQoKTogSVRyYW5zZm9ybSB7IHJldHVybiB0aGlzLmxvZ1ggPyBsb2dUcmFuc2Zvcm0gOiBsaW5lYXJUcmFuc2Zvcm07IH1cbiAgZ2V0IHl0KCk6IElUcmFuc2Zvcm0geyByZXR1cm4gdGhpcy5sb2dZID8gbG9nVHJhbnNmb3JtIDogbGluZWFyVHJhbnNmb3JtOyB9XG5cbiAgY29uc3RydWN0b3Iod29ybGQ6IERHLlJlY3QsIHNjcmVlbjogREcuUmVjdCwgbG9nWCA9IGZhbHNlLCBsb2dZID0gZmFsc2UpIHtcbiAgICB0aGlzLndvcmxkID0gd29ybGQ7XG4gICAgdGhpcy5zY3JlZW4gPSBzY3JlZW47XG4gICAgdGhpcy5sb2dYID0gbG9nWDtcbiAgICB0aGlzLmxvZ1kgPSBsb2dZO1xuICB9XG5cbiAgeFRvU2NyZWVuKHdvcmxkOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnNjcmVlbi5sZWZ0ICsgdGhpcy54dC53b3JsZFRvU2NyZWVuKHdvcmxkLCB0aGlzLnNjcmVlbi53aWR0aCxcbiAgICAgIHRoaXMud29ybGQubWluWCwgdGhpcy53b3JsZC5tYXhYLCB0aGlzLmludmVyc2VYKTtcbiAgfVxuXG4gIHlUb1NjcmVlbih3b3JsZDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zY3JlZW4udG9wICsgdGhpcy55dC53b3JsZFRvU2NyZWVuKHdvcmxkLCB0aGlzLnNjcmVlbi5oZWlnaHQsXG4gICAgICB0aGlzLndvcmxkLm1pblksIHRoaXMud29ybGQubWF4WSwgdGhpcy5pbnZlcnNlWSk7XG4gIH1cblxuICB4VG9Xb3JsZChzY3JlZW46IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMueHQuc2NyZWVuVG9Xb3JsZChzY3JlZW4gLSB0aGlzLnNjcmVlbi5sZWZ0LCB0aGlzLnNjcmVlbi53aWR0aCxcbiAgICAgIHRoaXMud29ybGQubWluWCwgdGhpcy53b3JsZC5tYXhYLCB0aGlzLmludmVyc2VYKTtcbiAgfVxuXG4gIHlUb1dvcmxkKHNjcmVlbjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy55dC5zY3JlZW5Ub1dvcmxkKHNjcmVlbiAtIHRoaXMuc2NyZWVuLnRvcCwgdGhpcy5zY3JlZW4uaGVpZ2h0LFxuICAgICAgdGhpcy53b3JsZC5taW5ZLCB0aGlzLndvcmxkLm1heFksIHRoaXMuaW52ZXJzZVkpO1xuICB9XG5cbiAgdG9TY3JlZW4od29ybGQ6IERHLlBvaW50KTogREcuUG9pbnQgeyByZXR1cm4gbmV3IERHLlBvaW50KHRoaXMueFRvU2NyZWVuKHdvcmxkLngpLCB0aGlzLnlUb1NjcmVlbih3b3JsZC55KSk7IH1cbiAgdG9Xb3JsZChzY3JlZW46IERHLlBvaW50KTogREcuUG9pbnQgeyByZXR1cm4gbmV3IERHLlBvaW50KHRoaXMueFRvV29ybGQoc2NyZWVuLngpLCB0aGlzLnlUb1dvcmxkKHNjcmVlbi55KSk7IH1cblxuICBkcmF3Q29vcmRpbmF0ZUdyaWQoZzogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCB4QXhpczogREcuUmVjdCB8IHVuZGVmaW5lZCwgeUF4aXM6IERHLlJlY3QgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBpZiAoeEF4aXMpIHtcbiAgICAgIERHLlBhaW50LmhvcnpBeGlzKGcsIHRoaXMud29ybGQubWluWCwgdGhpcy53b3JsZC5tYXhYLCB4QXhpcy54LCB4QXhpcy55LFxuICAgICAgICB4QXhpcy53aWR0aCwgeEF4aXMuaGVpZ2h0LCB0aGlzLmxvZ1gsIHRoaXMuaW52ZXJzZVgpO1xuICAgIH1cbiAgICBpZiAoeUF4aXMpIHtcbiAgICAgIERHLlBhaW50LnZlcnRBeGlzKGcsIHRoaXMud29ybGQubWluWSwgdGhpcy53b3JsZC5tYXhZLCB5QXhpcy54LCB5QXhpcy55LFxuICAgICAgICB5QXhpcy53aWR0aCwgeUF4aXMuaGVpZ2h0LCB0aGlzLmxvZ1ksIHRoaXMuaW52ZXJzZVkpO1xuICAgIH1cbiAgfVxufVxuIl19
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidHJhbnNmb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFVdEMsNEJBQTRCO0FBQzVCLE1BQU0sZ0JBQWdCO0lBQ3BCLGFBQWEsQ0FBQyxNQUFjLEVBQUUsTUFBYyxFQUFFLEdBQVcsRUFBRSxHQUFXLEVBQUUsT0FBaUI7UUFDdkYsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQSxDQUFDLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUN6RCxPQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFhLEVBQUUsTUFBYyxFQUFFLEdBQVcsRUFBRSxHQUFXLEVBQUUsT0FBaUI7UUFDdEYsT0FBTyxPQUFPLENBQUMsQ0FBQztZQUNkLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNoRCxDQUFDLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FDRjtBQUdELHlCQUF5QjtBQUN6QixNQUFNLGFBQWE7SUFDakIsYUFBYSxDQUFDLE1BQWMsRUFBRSxNQUFjLEVBQUUsR0FBVyxFQUFFLEdBQVcsRUFBRSxPQUFpQjtRQUN2RixHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTVDLE1BQU0s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SUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTlHLGtCQUFrQixDQUFDLENBQTJCLEVBQUUsS0FBMEIsRUFBRSxLQUEwQjtRQUNwRyxJQUFJLEtBQUssRUFBRTtZQUNULEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQ3JFLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN4RDtRQUNELElBQUksS0FBSyxFQUFFO1lBQ1QsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFDckUsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3hEO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcblxuXG4vKiogUmVwcmVzZW50cyAxRCB0cmFuc2Zvcm1hdGlvbiBiZXR3ZWVuIHNjcmVlbiBhbmQgd29ybGQgY29vcmRpbmF0ZXMgKi9cbmludGVyZmFjZSBJVHJhbnNmb3JtIHtcbiAgc2NyZWVuVG9Xb3JsZChzY3JlZW46IG51bWJlciwgbGVuZ3RoOiBudW1iZXIsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciwgaW52ZXJzZT86IGJvb2xlYW4pOiBudW1iZXI7XG4gIHdvcmxkVG9TY3JlZW4od29ybGQ6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciwgaW52ZXJzZT86IGJvb2xlYW4pOiBudW1iZXI7XG59XG5cblxuLyoqIExpbmVhciB0cmFuc2Zvcm1hdGlvbiAqL1xuY2xhc3MgX0xpbmVhclRyYW5zZm9ybSBpbXBsZW1lbnRzIElUcmFuc2Zvcm0ge1xuICBzY3JlZW5Ub1dvcmxkKHNjcmVlbjogbnVtYmVyLCBsZW5ndGg6IG51bWJlciwgbWluOiBudW1iZXIsIG1heDogbnVtYmVyLCBpbnZlcnNlPzogYm9vbGVhbik6IG51bWJlciB7XG4gICAgY29uc3QgZCA9IGludmVyc2UgPyAxIC0gc2NyZWVuIC8gbGVuZ3RoOiBzY3JlZW4gLyBsZW5ndGg7XG4gICAgcmV0dXJuIG1pbiArIGQgKiAobWF4IC0gbWluKTtcbiAgfVxuXG4gIHdvcmxkVG9TY3JlZW4od29ybGQ6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciwgaW52ZXJzZT86IGJvb2xlYW4pOiBudW1iZXIge1xuICAgIHJldHVybiBpbnZlcnNlID9cbiAgICAgICgoMSAtICgod29ybGQgLSBtaW4pKSAvIChtYXggLSBtaW4pKSAqIGxlbmd0aCkgOlxuICAgICAgKCh3b3JsZCAtIG1pbikgLyAobWF4IC0gbWluKSAqIGxlbmd0aCk7XG4gIH1cbn1cblxuXG4vKiogTG9nIHRyYW5zZm9ybWF0aW9uICovXG5jbGFzcyBfTG9nVHJhbnNmb3JtIGltcGxlbWVudHMgSVRyYW5zZm9ybSB7XG4gIHNjcmVlblRvV29ybGQoc2NyZWVuOiBudW1iZXIsIGxlbmd0aDogbnVtYmVyLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIGludmVyc2U/OiBib29sZWFuKTogbnVtYmVyIHtcbiAgICBtaW4gPSAobWluIDwgMC4wMDAwMDAwMSA/IDAuMDAwMDAwMDEgOiBtaW4pO1xuXG4gICAgY29uc3QgbWF4TG9nID0gTWF0aC5sb2cobWF4KTtcbiAgICBjb25zdCBtaW5Mb2cgPSBNYXRoLmxvZyhtaW4pO1xuICAgIHJldHVybiBNYXRoLmV4cChtaW5Mb2cgKyAobWF4TG9nIC0gbWluTG9nKSAqIChpbnZlcnNlID8gbGVuZ3RoIC0gc2NyZWVuIDogc2NyZWVuKSAvIGxlbmd0aCk7XG4gIH1cblxuICB3b3JsZFRvU2NyZWVuKHdvcmxkOiBudW1iZXIsIGxlbmd0aDogbnVtYmVyLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIGludmVyc2U/OiBib29sZWFuKTogbnVtYmVyIHtcbiAgICBpZiAod29ybGQgPD0gMCkgcmV0dXJuIE5hTjtcblxuICAgIC8vZWxpbWluYXRlcyBwcm9ibGVtcyB3aXRoIHJvdW5kaW5nXG4gICAgaWYgKHdvcmxkID09PSBtaW4pIHJldHVybiBpbnZlcnNlID8gbGVuZ3RoIDogMC4wO1xuICAgIGlmICh3b3JsZCA9PT0gbWF4KSByZXR1cm4gaW52ZXJzZSA/IDAuMCA6IGxlbmd0aDtcblxuICAgIG1pbiA9IChtaW4gPCAwLjAwMDAwMDAxID8gMC4wMDAwMDAwMSA6IG1pbik7XG4gICAgd29ybGQgPSAod29ybGQgPCAwLjAwMDAwMDAxID8gMC4wMDAwMDAwMSA6IHdvcmxkKTtcblxuICAgIGNvbnN0IHJlcyA9IChsZW5ndGggKiBNYXRoLmxvZyh3b3JsZCAvIG1pbikgLyBNYXRoLmxvZyhtYXggLyBtaW4pKTtcbiAgICByZXR1cm4gaW52ZXJzZSA/IGxlbmd0aCAtIHJlcyA6IHJlcztcbiAgfVxufVxuXG5jb25zdCBsaW5lYXJUcmFuc2Zvcm0gPSBuZXcgX0xpbmVhclRyYW5zZm9ybSgpO1xuY29uc3QgbG9nVHJhbnNmb3JtID0gbmV3IF9Mb2dUcmFuc2Zvcm0oKTtcblxuXG4vKiogUHJvdmlkZXMgY29udmVuaWVudCBtZXRob2RzIGZvciBtYXBwaW5nIGJldHdlZW4gc2NyZWVuIGFuZCB3b3JsZCBjb29yZGluYXRlcyAqL1xuZXhwb3J0IGNsYXNzIFZpZXdwb3J0IHtcbiAgd29ybGQ6IERHLlJlY3Q7XG4gIHNjcmVlbjogREcuUmVjdDtcbiAgbG9nWDogYm9vbGVhbiA9IGZhbHNlO1xuICBsb2dZOiBib29sZWFuID0gZmFsc2U7XG4gIGludmVyc2VYOiBib29sZWFuID0gZmFsc2U7XG4gIGludmVyc2VZOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZ2V0IHh0KCk6IElUcmFuc2Zvcm0geyByZXR1cm4gdGhpcy5sb2dYID8gbG9nVHJhbnNmb3JtIDogbGluZWFyVHJhbnNmb3JtOyB9XG4gIGdldCB5dCgpOiBJVHJhbnNmb3JtIHsgcmV0dXJuIHRoaXMubG9nWSA/IGxvZ1RyYW5zZm9ybSA6IGxpbmVhclRyYW5zZm9ybTsgfVxuXG4gIGNvbnN0cnVjdG9yKHdvcmxkOiBERy5SZWN0LCBzY3JlZW46IERHLlJlY3QsIGxvZ1ggPSBmYWxzZSwgbG9nWSA9IGZhbHNlKSB7XG4gICAgdGhpcy53b3JsZCA9IHdvcmxkO1xuICAgIHRoaXMuc2NyZWVuID0gc2NyZWVuO1xuICAgIHRoaXMubG9nWCA9IGxvZ1g7XG4gICAgdGhpcy5sb2dZID0gbG9nWTtcbiAgfVxuXG4gIHhUb1NjcmVlbih3b3JsZDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zY3JlZW4ubGVmdCArIHRoaXMueHQud29ybGRUb1NjcmVlbih3b3JsZCwgdGhpcy5zY3JlZW4ud2lkdGgsXG4gICAgICB0aGlzLndvcmxkLm1pblgsIHRoaXMud29ybGQubWF4WCwgdGhpcy5pbnZlcnNlWCk7XG4gIH1cblxuICB5VG9TY3JlZW4od29ybGQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2NyZWVuLnRvcCArIHRoaXMueXQud29ybGRUb1NjcmVlbih3b3JsZCwgdGhpcy5zY3JlZW4uaGVpZ2h0LFxuICAgICAgdGhpcy53b3JsZC5taW5ZLCB0aGlzLndvcmxkLm1heFksICF0aGlzLmludmVyc2VZKTtcbiAgfVxuXG4gIHhUb1dvcmxkKHNjcmVlbjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy54dC5zY3JlZW5Ub1dvcmxkKHNjcmVlbiAtIHRoaXMuc2NyZWVuLmxlZnQsIHRoaXMuc2NyZWVuLndpZHRoLFxuICAgICAgdGhpcy53b3JsZC5taW5YLCB0aGlzLndvcmxkLm1heFgsIHRoaXMuaW52ZXJzZVgpO1xuICB9XG5cbiAgeVRvV29ybGQoc2NyZWVuOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnl0LnNjcmVlblRvV29ybGQoc2NyZWVuIC0gdGhpcy5zY3JlZW4udG9wLCB0aGlzLnNjcmVlbi5oZWlnaHQsXG4gICAgICB0aGlzLndvcmxkLm1pblksIHRoaXMud29ybGQubWF4WSwgIXRoaXMuaW52ZXJzZVkpO1xuICB9XG5cbiAgdG9TY3JlZW4od29ybGQ6IERHLlBvaW50KTogREcuUG9pbnQgeyByZXR1cm4gbmV3IERHLlBvaW50KHRoaXMueFRvU2NyZWVuKHdvcmxkLngpLCB0aGlzLnlUb1NjcmVlbih3b3JsZC55KSk7IH1cbiAgdG9Xb3JsZChzY3JlZW46IERHLlBvaW50KTogREcuUG9pbnQgeyByZXR1cm4gbmV3IERHLlBvaW50KHRoaXMueFRvV29ybGQoc2NyZWVuLngpLCB0aGlzLnlUb1dvcmxkKHNjcmVlbi55KSk7IH1cblxuICBkcmF3Q29vcmRpbmF0ZUdyaWQoZzogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCB4QXhpczogREcuUmVjdCB8IHVuZGVmaW5lZCwgeUF4aXM6IERHLlJlY3QgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBpZiAoeEF4aXMpIHtcbiAgICAgIERHLlBhaW50LmhvcnpBeGlzKGcsIHRoaXMud29ybGQubWluWCwgdGhpcy53b3JsZC5tYXhYLCB4QXhpcy54LCB4QXhpcy55LFxuICAgICAgICB4QXhpcy53aWR0aCwgeEF4aXMuaGVpZ2h0LCB0aGlzLmxvZ1gsIHRoaXMuaW52ZXJzZVgpO1xuICAgIH1cbiAgICBpZiAoeUF4aXMpIHtcbiAgICAgIERHLlBhaW50LnZlcnRBeGlzKGcsIHRoaXMud29ybGQubWluWSwgdGhpcy53b3JsZC5tYXhZLCB5QXhpcy54LCB5QXhpcy55LFxuICAgICAgICB5QXhpcy53aWR0aCwgeUF4aXMuaGVpZ2h0LCB0aGlzLmxvZ1ksIHRoaXMuaW52ZXJzZVkpO1xuICAgIH1cbiAgfVxufVxuIl19