@libs-ui/utils 0.2.311-0 → 0.2.312-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/esm2022/dangerous-object.mjs +2 -2
- package/esm2022/download.mjs +5 -1
- package/esm2022/helpers.mjs +6 -10
- package/esm2022/two-way-signal-object.mjs +7 -1
- package/fesm2022/libs-ui-utils.mjs +16 -10
- package/fesm2022/libs-ui-utils.mjs.map +1 -1
- package/package.json +2 -2
- package/two-way-signal-object.d.ts +1 -0
package/README.md
CHANGED
|
@@ -79,7 +79,7 @@ export const isBuiltInObject = (obj) => {
|
|
|
79
79
|
if (obj === null || typeof obj !== 'object') {
|
|
80
80
|
return false;
|
|
81
81
|
}
|
|
82
|
-
return obj instanceof Date || obj instanceof RegExp || obj instanceof HttpParams;
|
|
82
|
+
return obj instanceof Date || obj instanceof RegExp || obj instanceof HttpParams || ('hasOwnProperty' in obj && '__ngContext__' in obj);
|
|
83
83
|
};
|
|
84
84
|
/**
|
|
85
85
|
* Kiểm tra đối tượng có phải là Async object không
|
|
@@ -140,4 +140,4 @@ export const isReturnAsIsObject = (obj) => {
|
|
|
140
140
|
export const isSafeToProcess = (obj) => {
|
|
141
141
|
return !isDangerousObject(obj);
|
|
142
142
|
};
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFuZ2Vyb3VzLW9iamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMtdWkvdXRpbHMvc3JjL2Rhbmdlcm91cy1vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RCxPQUFPLEtBQWdCLE1BQU0sT0FBTyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEM7O0dBRUc7QUFDSCxNQUFNLDJCQUEyQixHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFVLENBQUM7QUFFek07O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEdBQVEsRUFBb0UsRUFBRTtJQUNsSCxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDNUMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsT0FBTyxHQUFHLFlBQVksTUFBTSxJQUFJLEdBQUcsWUFBWSxRQUFRLElBQUksR0FBRyxLQUFLLE1BQU0sSUFBSSxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsS0FBSyxVQUFVLENBQUM7QUFDdEgsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFRLEVBQXVDLEVBQUU7SUFDM0UsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxD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QUFXLEdBQUcsQ0FBVSxHQUFRLEVBQWlCLEVBQUU7SUFDOUQsT0FBTyxHQUFHLFlBQVksR0FBRyxDQUFDO0FBQzVCLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQVUsR0FBUSxFQUFtQixFQUFFO0lBQ2xFLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEdBQVEsRUFBVyxFQUFFO0lBQ3RELE9BQU8saUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RELENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsR0FBUSxFQUFXLEVBQUU7SUFDbkQsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBUZW1wbGF0ZVJlZiwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IGRheWpzLCB7IERheWpzIH0gZnJvbSAnZGF5anMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIERhbmggc8OhY2ggY8OhYyBjb25zdHJ1Y3RvciBuYW1lIG5ndXkgaGnhu4NtXG4gKi9cbmNvbnN0IERBTkdFUk9VU19DT05TVFJVQ1RPUl9OQU1FUyA9IFsnV2luZG93JywgJ0RvY3VtZW50JywgJ0hUTUxEb2N1bWVudCcsICdIVE1MRWxlbWVudCcsICdFbGVtZW50JywgJ05vZGUnLCAnTG9jYXRpb24nLCAnTmF2aWdhdG9yJywgJ1NjcmVlbicsICdIaXN0b3J5JywgJ1N0b3JhZ2UnLCAnQ29uc29sZScsICdQZXJmb3JtYW5jZSddIGFzIGNvbnN0O1xuXG4vKipcbiAqIEtp4buDbSB0cmEgeGVtIMSR4buRaSB0xrDhu6NuZyBjw7MgcGjhuqNpIGzDoCBicm93c2VyIGdsb2JhbCBvYmplY3Qga2jDtG5nXG4gKi9cbmV4cG9ydCBjb25zdCBpc0Jyb3dzZXJHbG9iYWxPYmplY3QgPSAob2JqOiBhbnkpOiBvYmogaXMgV2luZG93IHwgRG9jdW1lbnQgfCBXaW5kb3cgfCBEb2N1bWVudCB8IHR5cGVvZiBnbG9iYWxUaGlzID0+IHtcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgV2luZG93IHx8IG9iaiBpbnN0YW5jZW9mIERvY3VtZW50IHx8IG9iaiA9PT0gd2luZG93IHx8IG9iaiA9PT0gZG9jdW1lbnQgfHwgb2JqID09PSBnbG9iYWxUaGlzO1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIHhlbSDEkeG7kWkgdMaw4bujbmcgY8OzIHBo4bqjaSBsw6AgRE9NIG9iamVjdCBraMO0bmdcbiAqL1xuZXhwb3J0IGNvbnN0IGlzRE9NT2JqZWN0ID0gKG9iajogYW55KTogb2JqIGlzIEhUTUxFbGVtZW50IHwgTm9kZSB8IEVsZW1lbnQgPT4ge1xuICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBvYmogaW5zdGFuY2VvZiBIVE1MRWxlbWVudCB8fCBvYmogaW5zdGFuY2VvZiBOb2RlIHx8IG9iaiBpbnN0YW5jZW9mIEVsZW1lbnQ7XG59O1xuXG4vKipcbiAqIEtp4buDbSB0cmEgeGVtIMSR4buRaSB0xrDhu6NuZyBjw7MgcGjhuqNpIGzDoCBicm93c2VyIEFQSSBvYmplY3Qga2jDtG5nXG4gKi9cbmV4cG9ydCBjb25zdCBpc0Jyb3dzZXJBUElPYmplY3QgPSAob2JqOiBhbnkpOiBib29sZWFuID0+IHtcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gb2JqID09PSB3aW5kb3cubG9jYXRpb24gfHwgb2JqID09PSB3aW5kb3cubmF2aWdhdG9yIHx8IG9iaiA9PT0gd2luZG93LnNjcmVlbiB8fCBvYmogPT09IHdpbmRvdy5oaXN0b3J5IHx8IG9iaiA9PT0gd2luZG93LmxvY2FsU3RvcmFnZSB8fCBvYmogPT09IHdpbmRvdy5zZXNzaW9uU3RvcmFnZSB8fCBvYmogPT09IHdpbmRvdy5jb25zb2xlIHx8IG9iaiA9PT0gd2luZG93LnBlcmZvcm1hbmNlO1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIGNvbnN0cnVjdG9yIG5hbWUgY8OzIG7hurFtIHRyb25nIGRhbmggc8OhY2ggbmd1eSBoaeG7g20ga2jDtG5nXG4gKi9cbmV4cG9ydCBjb25zdCBoYXNEYW5nZXJvdXNDb25zdHJ1Y3Rvck5hbWUgPSAob2JqOiBhbnkpOiBib29sZWFuID0+IHtcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBjb25zdHJ1Y3Rvck5hbWUgPSBvYmouY29uc3RydWN0b3I/Lm5hbWU7XG4gIHJldHVybiBjb25zdHJ1Y3Rvck5hbWUgJiYgREFOR0VST1VTX0NPTlNUUlVDVE9SX05BTUVTLmluY2x1ZGVzKGNvbnN0cnVjdG9yTmFtZSBhcyBhbnkpO1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIHhlbSDEkeG7kWkgdMaw4bujbmcgY8OzIHBo4bqjaSBsw6AgRE9NIG9iamVjdCBob+G6t2MgYnJvd3NlciBvYmplY3Qgbmd1eSBoaeG7g20ga2jDtG5nXG4gKiBOaOG7r25nIMSR4buRaSB0xrDhu6NuZyBuw6B5IGPDsyB0aOG7gyBnw6J5IHJhIGNpcmN1bGFyIHJlZmVyZW5jZSB2w6AgbWF4aW11bSBjYWxsIHN0YWNrXG4gKi9cbmV4cG9ydCBjb25zdCBpc0Rhbmdlcm91c09iamVjdCA9IChvYmo6IGFueSk6IGJvb2xlYW4gPT4ge1xuICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGlzQnJvd3Nlckdsb2JhbE9iamVjdChvYmopIHx8IGlzRE9NT2JqZWN0KG9iaikgfHwgaXNCcm93c2VyQVBJT2JqZWN0KG9iaikgfHwgaGFzRGFuZ2Vyb3VzQ29uc3RydWN0b3JOYW1lKG9iaik7XG59O1xuXG4vKipcbiAqIEtp4buDbSB0cmEgxJHhu5FpIHTGsOG7o25nIGPDsyBwaOG6o2kgbMOgIEFuZ3VsYXIvRnJhbWV3b3JrIG9iamVjdCBraMO0bmdcbiAqL1xuZXhwb3J0IGNvbnN0IGlzRnJhbWV3b3JrT2JqZWN0ID0gPFQgPSBhbnk+KG9iajogYW55KTogb2JqIGlzIFRlbXBsYXRlUmVmPFQ+IHwgRWxlbWVudFJlZjxUPiA9PiB7XG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmIHx8IG9iaiBpbnN0YW5jZW9mIEVsZW1lbnRSZWY7XG59O1xuXG4vKipcbiAqIEtp4buDbSB0cmEgxJHhu5FpIHTGsOG7o25nIGPDsyBwaOG6o2kgbMOgIEZpbGUvQmxvYiBvYmplY3Qga2jDtG5nXG4gKi9cbmV4cG9ydCBjb25zdCBpc0ZpbGVPYmplY3QgPSAob2JqOiBhbnkpOiBvYmogaXMgRmlsZSB8IEJsb2IgPT4ge1xuICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBvYmogaW5zdGFuY2VvZiBGaWxlIHx8IG9iaiBpbnN0YW5jZW9mIEJsb2IgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IEZpbGVdJztcbn07XG5cbi8qKlxuICogS2nhu4NtIHRyYSDEkeG7kWkgdMaw4bujbmcgY8OzIHBo4bqjaSBsw6AgQnVpbHQtaW4gb2JqZWN0IGtow7RuZ1xuICovXG5leHBvcnQgY29uc3QgaXNCdWlsdEluT2JqZWN0ID0gKG9iajogYW55KTogb2JqIGlzIERhdGUgfCBSZWdFeHAgfCBIdHRwUGFyYW1zID0+IHtcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgRGF0ZSB8fCBvYmogaW5zdGFuY2VvZiBSZWdFeHAgfHwgb2JqIGluc3RhbmNlb2YgSHR0cFBhcmFtcztcbn07XG5cbi8qKlxuICogS2nhu4NtIHRyYSDEkeG7kWkgdMaw4bujbmcgY8OzIHBo4bqjaSBsw6AgQXN5bmMgb2JqZWN0IGtow7RuZ1xuICovXG5leHBvcnQgY29uc3QgaXNBc3luY09iamVjdCA9IDxUID0gYW55PihvYmo6IGFueSk6IG9iaiBpcyBQcm9taXNlPFQ+IHwgT2JzZXJ2YWJsZTxUPiA9PiB7XG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIFByb21pc2UgfHwgb2JqIGluc3RhbmNlb2YgT2JzZXJ2YWJsZTtcbn07XG5cbi8qKlxuICogS2nhu4NtIHRyYSDEkeG7kWkgdMaw4bujbmcgY8OzIHBo4bqjaSBsw6AgU3BlY2lhbCBvYmplY3QgY+G6p24gYuG7jyBxdWEga2jDtG5nXG4gKiBCYW8gZ+G7k206IEZyYW1ld29yayBvYmplY3RzLCBGaWxlIG9iamVjdHMsIEJ1aWx0LWluIG9iamVjdHMsIEFzeW5jIG9iamVjdHNcbiAqL1xuZXhwb3J0IGNvbnN0IGlzU3BlY2lhbE9iamVjdCA9IChvYmo6IGFueSk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gaXNGcmFtZXdvcmtPYmplY3Qob2JqKSB8fCBpc0ZpbGVPYmplY3Qob2JqKSB8fCBpc0J1aWx0SW5PYmplY3Qob2JqKSB8fCBpc0FzeW5jT2JqZWN0KG9iaik7XG59O1xuXG4vKipcbiAqIEtp4buDbSB0cmEgxJHhu5FpIHTGsOG7o25nIGPDsyBwaOG6o2kgbMOgIGRheWpzIG9iamVjdCBraMO0bmdcbiAqL1xuZXhwb3J0IGNvbnN0IGlzRGF5anNPYmplY3QgPSAob2JqOiBhbnkpOiBvYmogaXMgRGF5anMgPT4ge1xuICByZXR1cm4gZGF5anMuaXNEYXlqcyhvYmopO1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIMSR4buRaSB0xrDhu6NuZyBjw7MgcGjhuqNpIGzDoCBvYmplY3QgY+G6p24gYuG7jyBxdWEgdHJvbmcgcXXDoSB0csOsbmggY29udmVydCBraMO0bmdcbiAqL1xuZXhwb3J0IGNvbnN0IGlzU2tpcHBhYmxlT2JqZWN0ID0gKG9iajogYW55KTogYm9vbGVhbiA9PiB7XG4gIHJldHVybiBpc0Rhbmdlcm91c09iamVjdChvYmopIHx8IGlzU3BlY2lhbE9iamVjdChvYmopO1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIMSR4buRaSB0xrDhu6NuZyBjw7MgcGjhuqNpIGzDoCBNYXAgb2JqZWN0IGtow7RuZ1xuICovXG5leHBvcnQgY29uc3QgaXNNYXBPYmplY3QgPSA8VCA9IGFueT4ob2JqOiBhbnkpOiBvYmogaXMgTWFwPHN0cmluZywgVD4gPT4ge1xuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgTWFwO1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIMSR4buRaSB0xrDhu6NuZyBjw7MgcGjhuqNpIGzDoCBTZXQgb2JqZWN0IGtow7RuZ1xuICovXG5leHBvcnQgY29uc3QgaXNTZXRPYmplY3QgPSA8VCA9IGFueT4ob2JqOiBhbnkpOiBvYmogaXMgU2V0PFQ+ID0+IHtcbiAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIFNldDtcbn07XG5cbi8qKlxuICogS2nhu4NtIHRyYSDEkeG7kWkgdMaw4bujbmcgY8OzIHBo4bqjaSBsw6AgQXJyYXkgb2JqZWN0IGtow7RuZ1xuICovXG5leHBvcnQgY29uc3QgaXNBcnJheU9iamVjdCA9IDxUID0gYW55PihvYmo6IGFueSk6IG9iaiBpcyBBcnJheTxUPiA9PiB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KG9iaik7XG59O1xuXG4vKipcbiAqIEtp4buDbSB0cmEgxJHhu5FpIHTGsOG7o25nIGPDsyBwaOG6o2kgbMOgIG9iamVjdCBj4bqnbiB0cuG6oyB24buBIG5ndXnDqm4gdHLhuqFuZyBraMO0bmdcbiAqIEJhbyBn4buTbTogZGFuZ2Vyb3VzIG9iamVjdHMsIHNwZWNpYWwgb2JqZWN0cywgZGF5anMgb2JqZWN0c1xuICovXG5leHBvcnQgY29uc3QgaXNSZXR1cm5Bc0lzT2JqZWN0ID0gKG9iajogYW55KTogYm9vbGVhbiA9PiB7XG4gIHJldHVybiBpc1NraXBwYWJsZU9iamVjdChvYmopIHx8IGlzRGF5anNPYmplY3Qob2JqKTtcbn07XG5cbi8qKlxuICogS2nhu4NtIHRyYSB4ZW0gxJHhu5FpIHTGsOG7o25nIGPDsyBhbiB0b8OgbiDEkeG7gyBjbG9uZS9jb252ZXJ0IGtow7RuZ1xuICovXG5leHBvcnQgY29uc3QgaXNTYWZlVG9Qcm9jZXNzID0gKG9iajogYW55KTogYm9vbGVhbiA9PiB7XG4gIHJldHVybiAhaXNEYW5nZXJvdXNPYmplY3Qob2JqKTtcbn07XG4iXX0=
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFuZ2Vyb3VzLW9iamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMtdWkvdXRpbHMvc3JjL2Rhbmdlcm91cy1vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RCxPQUFPLEtBQWdCLE1BQU0sT0FBTyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEM7O0dBRUc7QUFDSCxNQUFNLDJCQUEyQixHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFVLENBQUM7QUFFek07O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEdBQVEsRUFBb0UsRUFBRTtJQUNsSCxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDNUMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsT0FBTyxHQUFHLFlBQVksTUFBTSxJQUFJLEdBQUcsWUFBWSxRQUFRLElBQUksR0FBRyxLQUFLLE1BQU0sSUFBSSxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsS0FBSyxVQUFVLENBQUM7QUFDdEgsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFRLEVBQXVDLEVBQUU7SUFDM0UsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxD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QUFDO0FBQzVCLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQVUsR0FBUSxFQUFpQixFQUFFO0lBQzlELE9BQU8sR0FBRyxZQUFZLEdBQUcsQ0FBQztBQUM1QixDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFVLEdBQVEsRUFBbUIsRUFBRTtJQUNsRSxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUIsQ0FBQyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxHQUFRLEVBQVcsRUFBRTtJQUN0RCxPQUFPLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0RCxDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLEdBQVEsRUFBVyxFQUFFO0lBQ25ELE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgVGVtcGxhdGVSZWYsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBkYXlqcywgeyBEYXlqcyB9IGZyb20gJ2RheWpzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBEYW5oIHPDoWNoIGPDoWMgY29uc3RydWN0b3IgbmFtZSBuZ3V5IGhp4buDbVxuICovXG5jb25zdCBEQU5HRVJPVVNfQ09OU1RSVUNUT1JfTkFNRVMgPSBbJ1dpbmRvdycsICdEb2N1bWVudCcsICdIVE1MRG9jdW1lbnQnLCAnSFRNTEVsZW1lbnQnLCAnRWxlbWVudCcsICdOb2RlJywgJ0xvY2F0aW9uJywgJ05hdmlnYXRvcicsICdTY3JlZW4nLCAnSGlzdG9yeScsICdTdG9yYWdlJywgJ0NvbnNvbGUnLCAnUGVyZm9ybWFuY2UnXSBhcyBjb25zdDtcblxuLyoqXG4gKiBLaeG7g20gdHJhIHhlbSDEkeG7kWkgdMaw4bujbmcgY8OzIHBo4bqjaSBsw6AgYnJvd3NlciBnbG9iYWwgb2JqZWN0IGtow7RuZ1xuICovXG5leHBvcnQgY29uc3QgaXNCcm93c2VyR2xvYmFsT2JqZWN0ID0gKG9iajogYW55KTogb2JqIGlzIFdpbmRvdyB8IERvY3VtZW50IHwgV2luZG93IHwgRG9jdW1lbnQgfCB0eXBlb2YgZ2xvYmFsVGhpcyA9PiB7XG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIFdpbmRvdyB8fCBvYmogaW5zdGFuY2VvZiBEb2N1bWVudCB8fCBvYmogPT09IHdpbmRvdyB8fCBvYmogPT09IGRvY3VtZW50IHx8IG9iaiA9PT0gZ2xvYmFsVGhpcztcbn07XG5cbi8qKlxuICogS2nhu4NtIHRyYSB4ZW0gxJHhu5FpIHTGsOG7o25nIGPDsyBwaOG6o2kgbMOgIERPTSBvYmplY3Qga2jDtG5nXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RPTU9iamVjdCA9IChvYmo6IGFueSk6IG9iaiBpcyBIVE1MRWxlbWVudCB8IE5vZGUgfCBFbGVtZW50ID0+IHtcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgb2JqIGluc3RhbmNlb2YgTm9kZSB8fCBvYmogaW5zdGFuY2VvZiBFbGVtZW50O1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIHhlbSDEkeG7kWkgdMaw4bujbmcgY8OzIHBo4bqjaSBsw6AgYnJvd3NlciBBUEkgb2JqZWN0IGtow7RuZ1xuICovXG5leHBvcnQgY29uc3QgaXNCcm93c2VyQVBJT2JqZWN0ID0gKG9iajogYW55KTogYm9vbGVhbiA9PiB7XG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIG9iaiA9PT0gd2luZG93LmxvY2F0aW9uIHx8IG9iaiA9PT0gd2luZG93Lm5hdmlnYXRvciB8fCBvYmogPT09IHdpbmRvdy5zY3JlZW4gfHwgb2JqID09PSB3aW5kb3cuaGlzdG9yeSB8fCBvYmogPT09IHdpbmRvdy5sb2NhbFN0b3JhZ2UgfHwgb2JqID09PSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UgfHwgb2JqID09PSB3aW5kb3cuY29uc29sZSB8fCBvYmogPT09IHdpbmRvdy5wZXJmb3JtYW5jZTtcbn07XG5cbi8qKlxuICogS2nhu4NtIHRyYSBjb25zdHJ1Y3RvciBuYW1lIGPDsyBu4bqxbSB0cm9uZyBkYW5oIHPDoWNoIG5ndXkgaGnhu4NtIGtow7RuZ1xuICovXG5leHBvcnQgY29uc3QgaGFzRGFuZ2Vyb3VzQ29uc3RydWN0b3JOYW1lID0gKG9iajogYW55KTogYm9vbGVhbiA9PiB7XG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgY29uc3RydWN0b3JOYW1lID0gb2JqLmNvbnN0cnVjdG9yPy5uYW1lO1xuICByZXR1cm4gY29uc3RydWN0b3JOYW1lICYmIERBTkdFUk9VU19DT05TVFJVQ1RPUl9OQU1FUy5pbmNsdWRlcyhjb25zdHJ1Y3Rvck5hbWUgYXMgYW55KTtcbn07XG5cbi8qKlxuICogS2nhu4NtIHRyYSB4ZW0gxJHhu5FpIHTGsOG7o25nIGPDsyBwaOG6o2kgbMOgIERPTSBvYmplY3QgaG/hurdjIGJyb3dzZXIgb2JqZWN0IG5ndXkgaGnhu4NtIGtow7RuZ1xuICogTmjhu69uZyDEkeG7kWkgdMaw4bujbmcgbsOgeSBjw7MgdGjhu4MgZ8OieSByYSBjaXJjdWxhciByZWZlcmVuY2UgdsOgIG1heGltdW0gY2FsbCBzdGFja1xuICovXG5leHBvcnQgY29uc3QgaXNEYW5nZXJvdXNPYmplY3QgPSAob2JqOiBhbnkpOiBib29sZWFuID0+IHtcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBpc0Jyb3dzZXJHbG9iYWxPYmplY3Qob2JqKSB8fCBpc0RPTU9iamVjdChvYmopIHx8IGlzQnJvd3NlckFQSU9iamVjdChvYmopIHx8IGhhc0Rhbmdlcm91c0NvbnN0cnVjdG9yTmFtZShvYmopO1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIMSR4buRaSB0xrDhu6NuZyBjw7MgcGjhuqNpIGzDoCBBbmd1bGFyL0ZyYW1ld29yayBvYmplY3Qga2jDtG5nXG4gKi9cbmV4cG9ydCBjb25zdCBpc0ZyYW1ld29ya09iamVjdCA9IDxUID0gYW55PihvYmo6IGFueSk6IG9iaiBpcyBUZW1wbGF0ZVJlZjxUPiB8IEVsZW1lbnRSZWY8VD4gPT4ge1xuICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBvYmogaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZiB8fCBvYmogaW5zdGFuY2VvZiBFbGVtZW50UmVmO1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIMSR4buRaSB0xrDhu6NuZyBjw7MgcGjhuqNpIGzDoCBGaWxlL0Jsb2Igb2JqZWN0IGtow7RuZ1xuICovXG5leHBvcnQgY29uc3QgaXNGaWxlT2JqZWN0ID0gKG9iajogYW55KTogb2JqIGlzIEZpbGUgfCBCbG9iID0+IHtcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgRmlsZSB8fCBvYmogaW5zdGFuY2VvZiBCbG9iIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBGaWxlXSc7XG59O1xuXG4vKipcbiAqIEtp4buDbSB0cmEgxJHhu5FpIHTGsOG7o25nIGPDsyBwaOG6o2kgbMOgIEJ1aWx0LWluIG9iamVjdCBraMO0bmdcbiAqL1xuZXhwb3J0IGNvbnN0IGlzQnVpbHRJbk9iamVjdCA9IChvYmo6IGFueSk6IG9iaiBpcyBEYXRlIHwgUmVnRXhwIHwgSHR0cFBhcmFtcyA9PiB7XG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIERhdGUgfHwgb2JqIGluc3RhbmNlb2YgUmVnRXhwIHx8IG9iaiBpbnN0YW5jZW9mIEh0dHBQYXJhbXMgfHwgKCdoYXNPd25Qcm9wZXJ0eScgaW4gb2JqICYmICdfX25nQ29udGV4dF9fJyBpbiBvYmopO1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIMSR4buRaSB0xrDhu6NuZyBjw7MgcGjhuqNpIGzDoCBBc3luYyBvYmplY3Qga2jDtG5nXG4gKi9cbmV4cG9ydCBjb25zdCBpc0FzeW5jT2JqZWN0ID0gPFQgPSBhbnk+KG9iajogYW55KTogb2JqIGlzIFByb21pc2U8VD4gfCBPYnNlcnZhYmxlPFQ+ID0+IHtcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgUHJvbWlzZSB8fCBvYmogaW5zdGFuY2VvZiBPYnNlcnZhYmxlO1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIMSR4buRaSB0xrDhu6NuZyBjw7MgcGjhuqNpIGzDoCBTcGVjaWFsIG9iamVjdCBj4bqnbiBi4buPIHF1YSBraMO0bmdcbiAqIEJhbyBn4buTbTogRnJhbWV3b3JrIG9iamVjdHMsIEZpbGUgb2JqZWN0cywgQnVpbHQtaW4gb2JqZWN0cywgQXN5bmMgb2JqZWN0c1xuICovXG5leHBvcnQgY29uc3QgaXNTcGVjaWFsT2JqZWN0ID0gKG9iajogYW55KTogYm9vbGVhbiA9PiB7XG4gIHJldHVybiBpc0ZyYW1ld29ya09iamVjdChvYmopIHx8IGlzRmlsZU9iamVjdChvYmopIHx8IGlzQnVpbHRJbk9iamVjdChvYmopIHx8IGlzQXN5bmNPYmplY3Qob2JqKTtcbn07XG5cbi8qKlxuICogS2nhu4NtIHRyYSDEkeG7kWkgdMaw4bujbmcgY8OzIHBo4bqjaSBsw6AgZGF5anMgb2JqZWN0IGtow7RuZ1xuICovXG5leHBvcnQgY29uc3QgaXNEYXlqc09iamVjdCA9IChvYmo6IGFueSk6IG9iaiBpcyBEYXlqcyA9PiB7XG4gIHJldHVybiBkYXlqcy5pc0RheWpzKG9iaik7XG59O1xuXG4vKipcbiAqIEtp4buDbSB0cmEgxJHhu5FpIHTGsOG7o25nIGPDsyBwaOG6o2kgbMOgIG9iamVjdCBj4bqnbiBi4buPIHF1YSB0cm9uZyBxdcOhIHRyw6xuaCBjb252ZXJ0IGtow7RuZ1xuICovXG5leHBvcnQgY29uc3QgaXNTa2lwcGFibGVPYmplY3QgPSAob2JqOiBhbnkpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIGlzRGFuZ2Vyb3VzT2JqZWN0KG9iaikgfHwgaXNTcGVjaWFsT2JqZWN0KG9iaik7XG59O1xuXG4vKipcbiAqIEtp4buDbSB0cmEgxJHhu5FpIHTGsOG7o25nIGPDsyBwaOG6o2kgbMOgIE1hcCBvYmplY3Qga2jDtG5nXG4gKi9cbmV4cG9ydCBjb25zdCBpc01hcE9iamVjdCA9IDxUID0gYW55PihvYmo6IGFueSk6IG9iaiBpcyBNYXA8c3RyaW5nLCBUPiA9PiB7XG4gIHJldHVybiBvYmogaW5zdGFuY2VvZiBNYXA7XG59O1xuXG4vKipcbiAqIEtp4buDbSB0cmEgxJHhu5FpIHTGsOG7o25nIGPDsyBwaOG6o2kgbMOgIFNldCBvYmplY3Qga2jDtG5nXG4gKi9cbmV4cG9ydCBjb25zdCBpc1NldE9iamVjdCA9IDxUID0gYW55PihvYmo6IGFueSk6IG9iaiBpcyBTZXQ8VD4gPT4ge1xuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgU2V0O1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIMSR4buRaSB0xrDhu6NuZyBjw7MgcGjhuqNpIGzDoCBBcnJheSBvYmplY3Qga2jDtG5nXG4gKi9cbmV4cG9ydCBjb25zdCBpc0FycmF5T2JqZWN0ID0gPFQgPSBhbnk+KG9iajogYW55KTogb2JqIGlzIEFycmF5PFQ+ID0+IHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkob2JqKTtcbn07XG5cbi8qKlxuICogS2nhu4NtIHRyYSDEkeG7kWkgdMaw4bujbmcgY8OzIHBo4bqjaSBsw6Agb2JqZWN0IGPhuqduIHRy4bqjIHbhu4Egbmd1ecOqbiB0cuG6oW5nIGtow7RuZ1xuICogQmFvIGfhu5NtOiBkYW5nZXJvdXMgb2JqZWN0cywgc3BlY2lhbCBvYmplY3RzLCBkYXlqcyBvYmplY3RzXG4gKi9cbmV4cG9ydCBjb25zdCBpc1JldHVybkFzSXNPYmplY3QgPSAob2JqOiBhbnkpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIGlzU2tpcHBhYmxlT2JqZWN0KG9iaikgfHwgaXNEYXlqc09iamVjdChvYmopO1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIHhlbSDEkeG7kWkgdMaw4bujbmcgY8OzIGFuIHRvw6BuIMSR4buDIGNsb25lL2NvbnZlcnQga2jDtG5nXG4gKi9cbmV4cG9ydCBjb25zdCBpc1NhZmVUb1Byb2Nlc3MgPSAob2JqOiBhbnkpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuICFpc0Rhbmdlcm91c09iamVjdChvYmopO1xufTtcbiJdfQ==
|
package/esm2022/download.mjs
CHANGED
|
@@ -3,6 +3,10 @@ export const downloadFileByUrlUseXmlRequest = (fileUrl, filename) => {
|
|
|
3
3
|
const xmlRequest = new XMLHttpRequest();
|
|
4
4
|
xmlRequest.open('GET', fileUrl, true);
|
|
5
5
|
xmlRequest.responseType = 'blob';
|
|
6
|
+
xmlRequest.onerror = () => {
|
|
7
|
+
const url = window.URL.createObjectURL(xmlRequest.response);
|
|
8
|
+
downloadFileByUrl(url, filename);
|
|
9
|
+
};
|
|
6
10
|
xmlRequest.onload = () => {
|
|
7
11
|
const url = window.URL.createObjectURL(xmlRequest.response);
|
|
8
12
|
downloadFileByUrl(url, filename);
|
|
@@ -34,4 +38,4 @@ export const downloadImageFromELement = (imageElement, typeFileDownload, nameFil
|
|
|
34
38
|
link.download = nameFile || 'barcode';
|
|
35
39
|
link.click();
|
|
36
40
|
};
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL3V0aWxzL3NyYy9kb3dubG9hZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsQ0FBQyxPQUFlLEVBQUUsUUFBZ0IsRUFBRSxFQUFFO0lBQ2xGLE1BQU0sVUFBVSxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7SUFFeEMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RDLFVBQVUsQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDO0lBQ2pDLFVBQVUsQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFO1FBQ3hCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU1RCxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbkMsQ0FBQyxDQUFDO0lBQ0YsVUFBVSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7UUFDdkIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTVELGlCQUFpQixDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNuQyxDQUFDLENBQUM7SUFDRixVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDcEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxFQUFFLE9BQWUsRUFBRSxRQUFnQixFQUFFLFFBQWtCLEVBQUUsRUFBRTtJQUMvRixNQUFNLG1CQUFtQixHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFeEQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2QsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdEMsSUFBSSxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFbkMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUM7SUFDRCxtQkFBbUIsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO0lBQ25DLG1CQUFtQixDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDeEMsbUJBQW1CLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztJQUN0QyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM1QixtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUMvQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLFlBQThCLEVBQUUsZ0JBQXlCLEVBQUUsUUFBaUIsRUFBRSxFQUFFO0lBQ3ZILE1BQU0sYUFBYSxHQUFHLFlBQVksRUFBRSxHQUFHLENBQUM7SUFDeEMsTUFBTSxRQUFRLEdBQUcsbUJBQW1CLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDcEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsSUFBSSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFekMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7SUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksU0FBUyxDQUFDO0lBQ3RDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNmLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbnZlcnRCYXNlNjRUb0Jsb2IgfSBmcm9tICcuL2Jhc2U2NCc7XG5cbmV4cG9ydCBjb25zdCBkb3dubG9hZEZpbGVCeVVybFVzZVhtbFJlcXVlc3QgPSAoZmlsZVVybDogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IHhtbFJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcblxuICB4bWxSZXF1ZXN0Lm9wZW4oJ0dFVCcsIGZpbGVVcmwsIHRydWUpO1xuICB4bWxSZXF1ZXN0LnJlc3BvbnNlVHlwZSA9ICdibG9iJztcbiAgeG1sUmVxdWVzdC5vbmVycm9yID0gKCkgPT4ge1xuICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKHhtbFJlcXVlc3QucmVzcG9uc2UpO1xuXG4gICAgZG93bmxvYWRGaWxlQnlVcmwodXJsLCBmaWxlbmFtZSk7XG4gIH07XG4gIHhtbFJlcXVlc3Qub25sb2FkID0gKCkgPT4ge1xuICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKHhtbFJlcXVlc3QucmVzcG9uc2UpO1xuXG4gICAgZG93bmxvYWRGaWxlQnlVcmwodXJsLCBmaWxlbmFtZSk7XG4gIH07XG4gIHhtbFJlcXVlc3Quc2VuZCgpO1xufTtcblxuZXhwb3J0IGNvbnN0IGRvd25sb2FkRmlsZUJ5VXJsID0gYXN5bmMgKGZpbGVVcmw6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZywgb25seU9wZW4/OiBib29sZWFuKSA9PiB7XG4gIGNvbnN0IGRvd25sb2FkRmlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG5cbiAgaWYgKCFvbmx5T3Blbikge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goZmlsZVVybCk7XG5cbiAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCByZXNwb25zZS5ibG9iKCk7XG5cbiAgICAgIGZpbGVVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgIH1cbiAgfVxuICBkb3dubG9hZEZpbGVFbGVtZW50LmhyZWYgPSBmaWxlVXJsO1xuICBkb3dubG9hZEZpbGVFbGVtZW50LmRvd25sb2FkID0gZmlsZW5hbWU7XG4gIGRvd25sb2FkRmlsZUVsZW1lbnQudGFyZ2V0ID0gJ19ibGFuayc7XG4gIGRvd25sb2FkRmlsZUVsZW1lbnQuY2xpY2soKTtcbiAgZG93bmxvYWRGaWxlRWxlbWVudC5yZW1vdmUoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBkb3dubG9hZEltYWdlRnJvbUVMZW1lbnQgPSAoaW1hZ2VFbGVtZW50OiBIVE1MSW1hZ2VFbGVtZW50LCB0eXBlRmlsZURvd25sb2FkPzogc3RyaW5nLCBuYW1lRmlsZT86IHN0cmluZykgPT4ge1xuICBjb25zdCBwYXJlbnRFbGVtZW50ID0gaW1hZ2VFbGVtZW50Py5zcmM7XG4gIGNvbnN0IGJsb2JEYXRhID0gY29udmVydEJhc2U2NFRvQmxvYihwYXJlbnRFbGVtZW50KTtcbiAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtibG9iRGF0YV0sIHsgdHlwZTogdHlwZUZpbGVEb3dubG9hZCB8fCAnaW1hZ2UvcG5nJyB9KTtcbiAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG5cbiAgbGluay5ocmVmID0gdXJsO1xuICBsaW5rLmRvd25sb2FkID0gbmFtZUZpbGUgfHwgJ2JhcmNvZGUnO1xuICBsaW5rLmNsaWNrKCk7XG59O1xuIl19
|
package/esm2022/helpers.mjs
CHANGED
|
@@ -5,7 +5,7 @@ import dayjs from 'dayjs';
|
|
|
5
5
|
import { isDangerousObject, isReturnAsIsObject } from './dangerous-object';
|
|
6
6
|
import { getDayjs } from './date';
|
|
7
7
|
import { UtilsHttpParamsRequest } from './http-params';
|
|
8
|
-
import { convertSignalToObject } from './two-way-signal-object';
|
|
8
|
+
import { convertSignalToObject, unwrapSignal } from './two-way-signal-object';
|
|
9
9
|
/**Các hàm tương tự thư viện lodash */
|
|
10
10
|
/**
|
|
11
11
|
* Kiểm tra xem một giá trị có phải là null hoặc undefined hay không
|
|
@@ -19,7 +19,7 @@ import { convertSignalToObject } from './two-way-signal-object';
|
|
|
19
19
|
*/
|
|
20
20
|
export const isNil = (value, options) => {
|
|
21
21
|
if (!options?.ignoreUnWrapSignal) {
|
|
22
|
-
value =
|
|
22
|
+
value = unwrapSignal(value);
|
|
23
23
|
}
|
|
24
24
|
return value === null || value === undefined;
|
|
25
25
|
};
|
|
@@ -38,7 +38,7 @@ export const isNil = (value, options) => {
|
|
|
38
38
|
*/
|
|
39
39
|
export const isEmpty = (value, options) => {
|
|
40
40
|
if (!options?.ignoreUnWrapSignal) {
|
|
41
|
-
value =
|
|
41
|
+
value = unwrapSignal(value);
|
|
42
42
|
}
|
|
43
43
|
if (options?.ignoreCheckTypePrimitive) {
|
|
44
44
|
return isEmptyTypeObject(value);
|
|
@@ -95,11 +95,7 @@ export const isTruthy = (value, options) => {
|
|
|
95
95
|
*/
|
|
96
96
|
export const isFalsy = (value, options) => {
|
|
97
97
|
if (!options?.ignoreUnWrapSignal) {
|
|
98
|
-
value =
|
|
99
|
-
}
|
|
100
|
-
const isFalse = !value;
|
|
101
|
-
if (!isFalse) {
|
|
102
|
-
return false;
|
|
98
|
+
value = unwrapSignal(value);
|
|
103
99
|
}
|
|
104
100
|
if (options?.ignoreZero && value === 0) {
|
|
105
101
|
return false;
|
|
@@ -107,7 +103,7 @@ export const isFalsy = (value, options) => {
|
|
|
107
103
|
if (options?.ignoreCheckString && value === '') {
|
|
108
104
|
return false;
|
|
109
105
|
}
|
|
110
|
-
return
|
|
106
|
+
return !value;
|
|
111
107
|
};
|
|
112
108
|
/**
|
|
113
109
|
* Loại bỏ các thuộc tính của đối tượng dựa trên một hàm điều kiện
|
|
@@ -640,4 +636,4 @@ export const generateInterface = (obj, interfaceName) => {
|
|
|
640
636
|
const interfaceStr = `interface ${interfaceName} ${generateType(obj)}`;
|
|
641
637
|
return interfaceStr;
|
|
642
638
|
};
|
|
643
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMtdWkvdXRpbHMvc3JjL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQWtCLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakUsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWhFLHNDQUFzQztBQUN0Qzs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxLQUFjLEVBQUUsT0FBMEMsRUFBNkIsRUFBRTtJQUM3RyxJQUFJLENBQUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLENBQUM7UUFDakMsS0FBSyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQztBQUMvQyxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUFjLEVBQUUsT0FBMkcsRUFBc0MsRUFBRTtJQUN6TCxJQUFJLENBQUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLENBQUM7UUFDakMsS0FBSyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxJQUFJLE9B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QUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekIsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN2QixPQUFPLFlBQVksQ0FBQztZQUN0QixDQUFDO1lBQ0QsT0FBTyxTQUFTLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQzVDLENBQUM7UUFFRCxJQUFJLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN0QixJQUFJLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDekIsS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3JELE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDM0MsWUFBWSxJQUFJLEtBQUssR0FBRyxLQUFLLFNBQVMsS0FBSyxDQUFDO2dCQUM5QyxDQUFDO1lBQ0gsQ0FBQztZQUNELFlBQVksSUFBSSxHQUFHLENBQUM7WUFDcEIsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0lBRUYsTUFBTSxZQUFZLEdBQUcsYUFBYSxhQUFhLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDdkUsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFdyaXRhYmxlU2lnbmFsLCBpc1NpZ25hbCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUWVBFX09CSkVDVCB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCB7IGlzRGFuZ2Vyb3VzT2JqZWN0LCBpc1JldHVybkFzSXNPYmplY3QgfSBmcm9tICcuL2Rhbmdlcm91cy1vYmplY3QnO1xuaW1wb3J0IHsgZ2V0RGF5anMgfSBmcm9tICcuL2RhdGUnO1xuaW1wb3J0IHsgVXRpbHNIdHRwUGFyYW1zUmVxdWVzdCB9IGZyb20gJy4vaHR0cC1wYXJhbXMnO1xuaW1wb3J0IHsgY29udmVydFNpZ25hbFRvT2JqZWN0IH0gZnJvbSAnLi90d28td2F5LXNpZ25hbC1vYmplY3QnO1xuXG4vKipDw6FjIGjDoG0gdMawxqFuZyB04buxIHRoxrAgdmnhu4duIGxvZGFzaCAqL1xuLyoqXG4gKiBLaeG7g20gdHJhIHhlbSBt4buZdCBnacOhIHRy4buLIGPDsyBwaOG6o2kgbMOgIG51bGwgaG/hurdjIHVuZGVmaW5lZCBoYXkga2jDtG5nXG4gKiBAcGFyYW0gdmFsdWUgR2nDoSB0cuG7iyBj4bqnbiBraeG7g20gdHJhXG4gKiBAcmV0dXJucyB0cnVlIG7hur91IGdpw6EgdHLhu4sgbMOgIG51bGwgaG/hurdjIHVuZGVmaW5lZCwgZmFsc2UgbuG6v3Uga2jDtG5nXG4gKiBAZXhhbXBsZVxuICogaXNOaWwobnVsbCk7IC8vIHRydWVcbiAqIGlzTmlsKHVuZGVmaW5lZCk7IC8vIHRydWVcbiAqIGlzTmlsKDApOyAvLyBmYWxzZVxuICogaXNOaWwoJ2hlbGxvJyk7IC8vIGZhbHNlXG4gKi9cbmV4cG9ydCBjb25zdCBpc05pbCA9ICh2YWx1ZTogdW5rbm93biwgb3B0aW9ucz86IHsgaWdub3JlVW5XcmFwU2lnbmFsPzogYm9vbGVhbiB9KTogdmFsdWUgaXMgbnVsbCB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmICghb3B0aW9ucz8uaWdub3JlVW5XcmFwU2lnbmFsKSB7XG4gICAgdmFsdWUgPSBjb252ZXJ0U2lnbmFsVG9PYmplY3QodmFsdWUpO1xuICB9XG4gIHJldHVybiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIHhlbSBt4buZdCBnacOhIHRy4buLIGPDsyBwaOG6o2kgbMOgIHLhu5duZyBoYXkga2jDtG5nXG4gKiBAcGFyYW0gdmFsdWUgR2nDoSB0cuG7iyBj4bqnbiBraeG7g20gdHJhXG4gKiBAcmV0dXJucyB0cnVlIG7hur91IGdpw6EgdHLhu4sgbMOgIG51bGwsIHLhu5duZyBob+G6t2MgdW5kZWZpbmVkLCBmYWxzZSBu4bq/dSBraMO0bmdcbiAqIEBleGFtcGxlXG4gKiBpc0VtcHR5KG51bGwpOyAvLyB0cnVlXG4gKiBpc0VtcHR5KCcnKTsgLy8gdHJ1ZVxuICogaXNFbXB0eSh1bmRlZmluZWQpOyAvLyB0cnVlXG4gKiBpc0VtcHR5KHt9KTsgLy8gdHJ1ZVxuICogaXNFbXB0eShbXSk7IC8vIHRydWVcbiAqIGlzRW1wdHkoWzEsIDIsIDNdKTsgLy8gZmFsc2VcbiAqIGlzRW1wdHkoeyBhOiAxIH0pOyAvLyBmYWxzZVxuICovXG5leHBvcnQgY29uc3QgaXNFbXB0eSA9ICh2YWx1ZTogdW5rbm93biwgb3B0aW9ucz86IHsgaWdub3JlQ2hlY2tUeXBlUHJpbWl0aXZlPzogYm9vbGVhbjsgaWdub3JlVW5XcmFwU2lnbmFsPzogYm9vbGVhbjsgaWdub3JlQ2hlY2tTdHJpbmc/OiBib29sZWFuIH0pOiB2YWx1ZSBpcyBudWxsIHwgdW5kZWZpbmVkIHwgJycgfCAwID0+IHtcbiAgaWYgKCFvcHRpb25zPy5pZ25vcmVVbldyYXBTaWduYWwpIHtcbiAgICB2YWx1ZSA9IGNvbnZlcnRTaWduYWxUb09iamVjdCh2YWx1ZSk7XG4gIH1cbiAgaWYgKG9wdGlvbnM/Lmlnbm9yZUNoZWNrVHlwZVByaW1pdGl2ZSkge1xuICAgIHJldHVybiBpc0VtcHR5VHlwZU9iamVjdCh2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gaXNFbXB0eVR5cGVQcmltaXRpdmUodmFsdWUsIHsgaWdub3JlQ2hlY2tTdHJpbmc6IG9wdGlvbnM/Lmlnbm9yZUNoZWNrU3RyaW5nIH0pIHx8IGlzRW1wdHlUeXBlT2JqZWN0KHZhbHVlKTtcbn07XG5cbi8qKlxuICogS2nhu4NtIHRyYSB4ZW0gbeG7mXQgZ2nDoSB0cuG7iyBjw7MgcGjhuqNpIGzDoCBvYmplY3QgcuG7l25nIGhheSBraMO0bmdcbiAqIEBwYXJhbSB2YWx1ZSBHacOhIHRy4buLIGPhuqduIGtp4buDbSB0cmFcbiAqIEByZXR1cm5zIHRydWUgbuG6v3UgZ2nDoSB0cuG7iyBsw6Agb2JqZWN0IHLhu5duZywgZmFsc2UgbuG6v3Uga2jDtG5nXG4gKiBAZXhhbXBsZVxuICogaXNFbXB0eVR5cGVPYmplY3Qoe30pOyAvLyB0cnVlXG4gKiBpc0VtcHR5VHlwZU9iamVjdCh7IGE6IDEgfSk7IC8vIGZhbHNlXG4gKi9cbmNvbnN0IGlzRW1wdHlUeXBlT2JqZWN0ID0gPFQgPSBudWxsPih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFQgPT4ge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAoSlNPTi5zdHJpbmdpZnkodmFsdWUpID09PSAne30nIHx8IEpTT04uc3RyaW5naWZ5KHZhbHVlKSA9PT0gJ1tdJyk7XG59O1xuXG5jb25zdCBpc0VtcHR5VHlwZVByaW1pdGl2ZSA9IDxUID0gbnVsbD4odmFsdWU6IHVua25vd24sIG9wdGlvbnM/OiB7IGlnbm9yZUNoZWNrU3RyaW5nPzogYm9vbGVhbiB9KTogdmFsdWUgaXMgVCA9PiB7XG4gIGlmIChvcHRpb25zPy5pZ25vcmVDaGVja1N0cmluZyAmJiB2YWx1ZSA9PT0gJycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdmFsdWUgPT09ICcnIHx8IGlzTmlsKHZhbHVlLCB7IGlnbm9yZVVuV3JhcFNpZ25hbDogdHJ1ZSB9KTtcbn07XG5cbi8qKlxuICogS2nhu4NtIHRyYSB4ZW0gbeG7mXQgZ2nDoSB0cuG7iyBjw7MgcGjhuqNpIGzDoCBudWxsLCBy4buXbmcsIHVuZGVmaW5lZCBob+G6t2MgMCBoYXkga2jDtG5nXG4gKiBAcGFyYW0gdmFsdWUgR2nDoSB0cuG7iyBj4bqnbiBraeG7g20gdHJhXG4gKiBAcGFyYW0gb3B0aW9ucyBD4bqldSBow6xuaCB0w7l5IGNo4buNblxuICogQHBhcmFtIG9wdGlvbnMuaWdub3JlWmVybyBO4bq/dSB0cnVlLCBz4bq9IGtow7RuZyBraeG7g20gdHJhIGdpw6EgdHLhu4sgMFxuICogQHJldHVybnMgdHJ1ZSBu4bq/dSBnacOhIHRy4buLIGzDoCBudWxsLCBy4buXbmcsIHVuZGVmaW5lZCBob+G6t2MgMCwgZmFsc2UgbuG6v3Uga2jDtG5nXG4gKiBAZXhhbXBsZVxuICogaXNUcnV0aHkobnVsbCk7IC8vIGZhbHNlXG4gKiBpc1RydXRoeSgnJyk7IC8vIGZhbHNlXG4gKiBpc1RydXRoeSh1bmRlZmluZWQpOyAvLyBmYWxzZVxuICogaXNUcnV0aHkoMCk7IC8vIGZhbHNlXG4gKiBpc1RydXRoeSh7fSk7IC8vIHRydWVcbiAqIGlzVHJ1dGh5KDAsIHsgaWdub3JlWmVybzogdHJ1ZSB9KTsgLy8gdHJ1ZVxuICovXG5cbmV4cG9ydCBjb25zdCBpc1RydXRoeSA9IDxUPih2YWx1ZTogVCwgb3B0aW9ucz86IHsgaWdub3JlWmVybz86IGJvb2xlYW47IGlnbm9yZUNoZWNrU3RyaW5nPzogYm9vbGVhbjsgaWdub3JlVW5XcmFwU2lnbmFsPzogYm9vbGVhbiB9KTogdmFsdWUgaXMgTm9uTnVsbGFibGU8VD4gPT4ge1xuICByZXR1cm4gIWlzRmFsc3kodmFsdWUsIG9wdGlvbnMpO1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIHhlbSBt4buZdCBnacOhIHRy4buLIGPDsyBwaOG6o2kgbMOgIG51bGwsIHLhu5duZywgdW5kZWZpbmVkIGhv4bq3YyAwIGhheSBraMO0bmdcbiAqIEBwYXJhbSB2YWx1ZSBHacOhIHRy4buLIGPhuqduIGtp4buDbSB0cmFcbiAqIEBwYXJhbSBvcHRpb25zIEPhuqV1IGjDrG5oIHTDuXkgY2jhu41uXG4gKiBAcGFyYW0gb3B0aW9ucy5pZ25vcmVaZXJvIE7hur91IHRydWUsIHPhur0ga2jDtG5nIGtp4buDbSB0cmEgZ2nDoSB0cuG7iyAwXG4gKiBAcmV0dXJucyB0cnVlIG7hur91IGdpw6EgdHLhu4sgbMOgIG51bGwsIHLhu5duZywgdW5kZWZpbmVkIGhv4bq3YyAwLCBmYWxzZSBu4bq/dSBraMO0bmdcbiAqIEBleGFtcGxlXG4gKiBpc0ZhbHN5KG51bGwpOyAvLyB0cnVlXG4gKiBpc0ZhbHN5KCcnKTsgLy8gdHJ1ZVxuICogaXNGYWxzeSh1bmRlZmluZWQpOyAvLyB0cnVlXG4gKiBpc0ZhbHN5KDApOyAvLyB0cnVlXG4gKiBpc0ZhbHN5KHt9KTsgLy8gZmFsc2VcbiAqIGlzRmFsc3koMCwgeyBpZ25vcmVaZXJvOiB0cnVlIH0pOyAvLyBmYWxzZVxuICovXG5leHBvcnQgY29uc3QgaXNGYWxzeSA9ICh2YWx1ZTogdW5rbm93biwgb3B0aW9ucz86IHsgaWdub3JlWmVybz86IGJvb2xlYW47IGlnbm9yZUNoZWNrU3RyaW5nPzogYm9vbGVhbjsgaWdub3JlVW5XcmFwU2lnbmFsPzogYm9vbGVhbiB9KTogdmFsdWUgaXMgbnVsbCB8IHVuZGVmaW5lZCB8ICcnIHwgMCA9PiB7XG4gIGlmICghb3B0aW9ucz8uaWdub3JlVW5XcmFwU2lnbmFsKSB7XG4gICAgdmFsdWUgPSBjb252ZXJ0U2lnbmFsVG9PYmplY3QodmFsdWUpO1xuICB9XG5cbiAgY29uc3QgaXNGYWxzZSA9ICF2YWx1ZTtcblxuICBpZiAoIWlzRmFsc2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAob3B0aW9ucz8uaWdub3JlWmVybyAmJiB2YWx1ZSA9PT0gMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAob3B0aW9ucz8uaWdub3JlQ2hlY2tTdHJpbmcgJiYgdmFsdWUgPT09ICcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGlzRmFsc2U7XG59O1xuXG4vKipcbiAqIExv4bqhaSBi4buPIGPDoWMgdGh14buZYyB0w61uaCBj4bunYSDEkeG7kWkgdMaw4bujbmcgZOG7sWEgdHLDqm4gbeG7mXQgaMOgbSDEkWnhu4F1IGtp4buHblxuICogQHBhcmFtIG9iakRhdGEgxJDhu5FpIHTGsOG7o25nIGPhuqduIHjhu60gbMO9XG4gKiBAcGFyYW0gcHJlZGljYXRlIEjDoG0gxJFp4buBdSBraeG7h24gxJHhu4Mga2nhu4NtIHRyYSBnacOhIHRy4buLIGPhu6dhIHRodeG7mWMgdMOtbmguIE7hur91IGjDoG0gdHLhuqMgduG7gSB0cnVlIHRow6wgdGh14buZYyB0w61uaCDEkcOzIHPhur0gYuG7iyBsb+G6oWkgYuG7j1xuICogQHJldHVybnMgxJDhu5FpIHTGsOG7o25nIG3hu5tpIHNhdSBraGkgxJHDoyBsb+G6oWkgYuG7jyBjw6FjIHRodeG7mWMgdMOtbmggdGjhu49hIG3Do24gxJFp4buBdSBraeG7h25cbiAqIEBleGFtcGxlXG4gKiBjb25zdCBvYmogPSB7IGE6IDEsIGI6IG51bGwsIGM6IDMsIGQ6IHVuZGVmaW5lZCB9O1xuICogb21pdEJ5KG9iaiwgaXNOaWwpOyAvLyB7IGE6IDEsIGM6IDMgfVxuICovXG5leHBvcnQgY29uc3Qgb21pdEJ5ID0gPFQ+KG9iakRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sIHByZWRpY2F0ZTogKHZhbDogYW55KSA9PiBib29sZWFuKTogVCA9PiB7XG4gIGlmICghb2JqRGF0YSB8fCB0eXBlb2Ygb2JqRGF0YSAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShvYmpEYXRhKSkge1xuICAgIHJldHVybiBvYmpEYXRhIGFzIFQ7XG4gIH1cbiAgY29uc3QgbmV3T2JqID0ge30gYXMgVDtcblxuICBPYmplY3Qua2V5cyhvYmpEYXRhKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICBjb25zdCB2YWx1ZU9mS2V5ID0gZ2V0KG9iakRhdGEsIGtleSk7XG4gICAgaWYgKCFwcmVkaWNhdGUodmFsdWVPZktleSkpIHtcbiAgICAgIHNldChuZXdPYmosIGtleSwgdmFsdWVPZktleSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIG5ld09iajtcbn07XG5cbi8qKlxuICogTOG6pXkgZ2nDoSB0cuG7iyB04burIMSR4buRaSB0xrDhu6NuZyB0aGVvIMSRxrDhu51uZyBk4bqrbiBjaOG7iSDEkeG7i25oXG4gKlxuICogSMOgbSBuw6B5IGdpw7pwIGLhuqFuIHRydXkgY+G6rXAgdsOgbyBjw6FjIHRodeG7mWMgdMOtbmggc8OidSBiw6puIHRyb25nIG3hu5l0IMSR4buRaSB0xrDhu6NuZyBt4buZdCBjw6FjaCBhbiB0b8OgbixcbiAqIHRyw6FuaCBs4buXaSBraGkgdGh14buZYyB0w61uaCBraMO0bmcgdOG7k24gdOG6oWkuXG4gKlxuICogQHBhcmFtIG9iaiDEkOG7kWkgdMaw4bujbmcgbmd14buTbiBj4bqnbiBs4bqleSBnacOhIHRy4buLXG4gKiBAcGFyYW0gcGF0aCDEkMaw4budbmcgZOG6q24gxJHhur9uIHRodeG7mWMgdMOtbmggY+G6p24gbOG6pXkuIEPDsyB0aOG7gyBsw6A6XG4gKiAgIC0gQ2h14buXaTogJ3VzZXIucHJvZmlsZS5uYW1lJyBob+G6t2MgJ2l0ZW1zWzBdLnRpdGxlJ1xuICogICAtIE3huqNuZzogWyd1c2VyJywgJ3Byb2ZpbGUnLCAnbmFtZSddIGhv4bq3YyBbJ2l0ZW1zJywgJzAnLCAndGl0bGUnXVxuICogICAtIENodeG7l2kgcuG7l25nICcnOiB0cuG6oyB24buBIGNow61uaCDEkeG7kWkgdMaw4bujbmcgZ+G7kWNcbiAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgR2nDoSB0cuG7iyBt4bq3YyDEkeG7i25oIHRy4bqjIHbhu4Ega2hpIGtow7RuZyB0w6xtIHRo4bqleSB0aHXhu5ljIHTDrW5oICht4bq3YyDEkeG7i25oOiB1bmRlZmluZWQpXG4gKiBAcGFyYW0ga2VlcExhc3RWYWx1ZUlmU2lnbmFsIEPDsyBnaeG7ryBuZ3V5w6puIHNpZ25hbCBjdeG7kWkgY8O5bmcgaGF5IGtow7RuZyAobeG6t2MgxJHhu4tuaDogZmFsc2UgLSBz4bq9IGfhu41pIHNpZ25hbCgpKVxuICogQHJldHVybnMgR2nDoSB0cuG7iyB0w6xtIMSRxrDhu6NjIGhv4bq3YyBnacOhIHRy4buLIG3hurdjIMSR4buLbmhcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVsOtIGThu6UgY8ahIGLhuqNuXG4gKiBjb25zdCB1c2VyID0geyBuYW1lOiAnSm9obicsIGFnZTogMzAgfTtcbiAqIGdldCh1c2VyLCAnbmFtZScpOyAvLyAnSm9obidcbiAqIGdldCh1c2VyLCAnZW1haWwnKTsgLy8gdW5kZWZpbmVkXG4gKiBnZXQodXNlciwgJ2VtYWlsJywgJ25vLWVtYWlsJyk7IC8vICduby1lbWFpbCdcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVHJ1eeG7gW4gcGF0aCBy4buXbmcgLSB0cuG6oyB24buBIGNow61uaCDEkeG7kWkgdMaw4bujbmcgZ+G7kWNcbiAqIGNvbnN0IGRhdGEgPSB7IG5hbWU6ICdBbGljZScsIGFnZTogMjUgfTtcbiAqIGdldChkYXRhLCAnJyk7IC8vIHsgbmFtZTogJ0FsaWNlJywgYWdlOiAyNSB9IChjaMOtbmggxJHhu5FpIHTGsOG7o25nIGRhdGEpXG4gKiBnZXQoZGF0YSwgJycsICdkZWZhdWx0Jyk7IC8vIHsgbmFtZTogJ0FsaWNlJywgYWdlOiAyNSB9IChi4buPIHF1YSBkZWZhdWx0VmFsdWUpXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRydXkgY+G6rXAgdGh14buZYyB0w61uaCBzw6J1XG4gKiBjb25zdCBkYXRhID0ge1xuICogICB1c2VyOiB7XG4gKiAgICAgcHJvZmlsZToge1xuICogICAgICAgbmFtZTogJ0FsaWNlJyxcbiAqICAgICAgIHNldHRpbmdzOiB7IHRoZW1lOiAnZGFyaycgfVxuICogICAgIH1cbiAqICAgfVxuICogfTtcbiAqIGdldChkYXRhLCAndXNlci5wcm9maWxlLm5hbWUnKTsgLy8gJ0FsaWNlJ1xuICogZ2V0KGRhdGEsICd1c2VyLnByb2ZpbGUuc2V0dGluZ3MudGhlbWUnKTsgLy8gJ2RhcmsnXG4gKiBnZXQoZGF0YSwgJ3VzZXIucHJvZmlsZS5hdmF0YXInLCAnZGVmYXVsdC5qcGcnKTsgLy8gJ2RlZmF1bHQuanBnJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUcnV5IGPhuq1wIG3huqNuZ1xuICogY29uc3QgaXRlbXMgPSBbXG4gKiAgIHsgbmFtZTogJ0l0ZW0gMScsIHByaWNlOiAxMDAgfSxcbiAqICAgeyBuYW1lOiAnSXRlbSAyJywgcHJpY2U6IDIwMCB9XG4gKiBdO1xuICogZ2V0KGl0ZW1zLCAnWzBdLm5hbWUnKTsgLy8gJ0l0ZW0gMSdcbiAqIGdldChpdGVtcywgJ1sxXS5uYW1lJyk7IC8vICdJdGVtIDInXG4gKiBnZXQoaXRlbXMsICdbMl0ubmFtZScsICdOb3QgZm91bmQnKTsgLy8gJ05vdCBmb3VuZCdcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU+G7rSBk4bulbmcgduG7m2kgbeG6o25nIHBhdGhcbiAqIGNvbnN0IG5lc3RlZCA9IHsgYTogeyBiOiB7IGM6ICdkZWVwIHZhbHVlJyB9IH0gfTtcbiAqIGdldChuZXN0ZWQsIFsnYScsICdiJywgJ2MnXSk7IC8vICdkZWVwIHZhbHVlJ1xuICogZ2V0KG5lc3RlZCwgWydhJywgJ2InLCAnZCddLCAnZGVmYXVsdCcpOyAvLyAnZGVmYXVsdCdcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVHLGsOG7nW5nIGjhu6NwIMSR4bq3YyBiaeG7h3RcbiAqIGdldChudWxsLCAnYW55LnBhdGgnKTsgLy8gdW5kZWZpbmVkXG4gKiBnZXQodW5kZWZpbmVkLCAnYW55LnBhdGgnLCAnZmFsbGJhY2snKTsgLy8gJ2ZhbGxiYWNrJ1xuICovXG5leHBvcnQgY29uc3QgZ2V0ID0gPFQgPSBhbnk+KG9iajogYW55LCBwYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSwgZGVmYXVsdFZhbHVlOiBhbnkgPSB1bmRlZmluZWQsIGtlZXBMYXN0VmFsdWVJZlNpZ25hbD86IGJvb2xlYW4pOiBUID0+IHtcbiAgaWYgKGlzTmlsKG9iaikpIHtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICB9XG4gIHdoaWxlIChpc1NpZ25hbChvYmopKSB7XG4gICAgb2JqID0gb2JqKCk7XG4gIH1cbiAgaWYgKHBhdGggPT09ICcnKSB7XG4gICAgcmV0dXJuIG9iaiBhcyBUO1xuICB9XG4gIGlmIChvYmogaW5zdGFuY2VvZiBIdHRwUGFyYW1zKSB7XG4gICAgcmV0dXJuIChvYmouZ2V0KGAke3BhdGh9YCkgPz8gZGVmYXVsdFZhbHVlKSBhcyBUO1xuICB9XG4gIGlmIChvYmogaW5zdGFuY2VvZiBET01SZWN0KSB7XG4gICAgcmV0dXJuIG9ialtwYXRoIGFzIGtleW9mIERPTVJlY3RdIGFzIFQ7XG4gIH1cblxuICBjb25zdCBwYXRocyA9IEFycmF5LmlzQXJyYXkocGF0aClcbiAgICA/IHBhdGhcbiAgICA6IHBhdGhcbiAgICAgICAgLnJlcGxhY2UoL1xcWyhcXGQrKV0vZywgJy4kMScpXG4gICAgICAgIC5zcGxpdCgnLicpXG4gICAgICAgIC5maWx0ZXIoKGtleSkgPT4ga2V5KTtcbiAgZm9yIChjb25zdCBpbmRleCBpbiBwYXRocykge1xuICAgIGNvbnN0IGtleSA9IHBhdGhzW2luZGV4XTtcbiAgICBpZiAob2JqIGluc3RhbmNlb2YgQ1NTU3R5bGVEZWNsYXJhdGlvbikge1xuICAgICAgb2JqID0gb2JqW2tleSBhcyBrZXlvZiBDU1NTdHlsZURlY2xhcmF0aW9uXSBhcyBUO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICBvYmogPSBvYmpba2V5IGFzIGtleW9mIEhUTUxFbGVtZW50XSBhcyBUO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChpc05pbChvYmopIHx8ICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbCA9IGlzU2lnbmFsKG9ialtrZXldKSAmJiAha2VlcExhc3RWYWx1ZUlmU2lnbmFsID8gb2JqW2tleV0oKSA6IG9ialtrZXldO1xuXG4gICAgb2JqID0gdmFsO1xuICB9XG5cbiAgcmV0dXJuIG9iaiA/PyBkZWZhdWx0VmFsdWU7XG59O1xuXG4vKipcbiAqIFRoaeG6v3QgbOG6rXAgZ2nDoSB0cuG7iyBjaG8gbeG7mXQgdGh14buZYyB0w61uaCB0cm9uZyDEkeG7kWkgdMaw4bujbmcgdGhlbyDEkcaw4budbmcgZOG6q24gY2jhu4kgxJHhu4tuaFxuICogQHBhcmFtIG9iaiDEkOG7kWkgdMaw4bujbmcgY+G6p24gdGhp4bq/dCBs4bqtcCBnacOhIHRy4buLXG4gKiBAcGFyYW0gcGF0aCDEkMaw4budbmcgZOG6q24gxJHhur9uIHRodeG7mWMgdMOtbmgsIGPDsyB0aOG7gyBsw6AgY2h14buXaSAodmQ6ICdhLmIuYycpIGhv4bq3YyBt4bqjbmcgKHZkOiBbJ2EnLCAnYicsICdjJ10pXG4gKiBAcGFyYW0gdmFsdWUgR2nDoSB0cuG7iyBj4bqnbiB0aGnhur90IGzhuq1wXG4gKiBAcmV0dXJucyDEkOG7kWkgdMaw4bujbmcgc2F1IGtoaSDEkcOjIHRoaeG6v3QgbOG6rXAgZ2nDoSB0cuG7i1xuICogQHRocm93cyBFcnJvciBu4bq/dSB0aGFtIHPhu5EgxJHhuqd1IHRpw6puIGtow7RuZyBwaOG6o2kgbMOgIMSR4buRaSB0xrDhu6NuZ1xuICogQGV4YW1wbGVcbiAqIGNvbnN0IG9iaiA9IHsgYTogeyBiOiAxIH0gfTtcbiAqIHNldChvYmosICdhLmInLCAyKTsgLy8geyBhOiB7IGI6IDIgfSB9XG4gKi9cbmV4cG9ydCBjb25zdCBzZXQgPSA8VCA9IGFueT4ob2JqOiBhbnksIHBhdGg6IHN0cmluZyB8IHN0cmluZ1tdLCB2YWx1ZTogYW55LCBvcHRpb25zPzogeyB2YWx1ZURlZmF1bHRQYXRoT2JqZWN0VW5kZWZpbmVkPzogYW55OyB2YWx1ZURlZmF1bHRQYXRoQXJyYXlVbmRlZmluZWQ/OiBhbnkgfSk6IFQgPT4ge1xuICBpZiAoIW9iaiB8fCAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgJiYgIWlzU2lnbmFsKG9iaikpIHx8IChpc1NpZ25hbChvYmopICYmIHR5cGVvZiBvYmooKSAhPT0gJ29iamVjdCcpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgfVxuXG4gIGlmIChvYmogaW5zdGFuY2VvZiBIdHRwUGFyYW1zKSB7XG4gICAgcmV0dXJuIG9iai5zZXQoYCR7cGF0aH1gLCB2YWx1ZSkgYXMgVDtcbiAgfVxuXG4gIGNvbnN0IHBhdGhBcnJheSA9IEFycmF5LmlzQXJyYXkocGF0aClcbiAgICA/IHBhdGhcbiAgICA6IHBhdGhcbiAgICAgICAgLnJlcGxhY2UoL1xcWyhcXGQrKV0vZywgJy5bJDFdJylcbiAgICAgICAgLnNwbGl0KCcuJylcbiAgICAgICAgLmZpbHRlcigoa2V5KSA9PiBrZXkpO1xuXG4gIGxldCBjdXJyZW50T2JqZWN0QnlLZXk6IGFueSA9IGlzU2lnbmFsKG9iaikgPyBvYmooKSA6IG9iajtcbiAgbGV0IHByZU9iamVjdEJ5S2V5ID0gb2JqO1xuXG4gIHBhdGhBcnJheS5mb3JFYWNoKChrZXksIGluZGV4KSA9PiB7XG4gICAgaWYgKGluZGV4IDwgcGF0aEFycmF5Lmxlbmd0aCAtIDEpIHtcbiAgICAgIGlmICghKGtleSBpbiBjdXJyZW50T2JqZWN0QnlLZXkpIHx8ICh0eXBlb2YgY3VycmVudE9iamVjdEJ5S2V5W2tleV0gIT09ICdvYmplY3QnICYmICFpc1NpZ25hbChjdXJyZW50T2JqZWN0QnlLZXlba2V5XSkpKSB7XG4gICAgICAgIGNvbnN0IG5leHRLZXkgPSBwYXRoQXJyYXlbaW5kZXggKyAxXTtcbiAgICAgICAga2V5ID0ga2V5LnJlcGxhY2UoL1xcWyhcXGQrKV0vZywgJyQxJyk7XG4gICAgICAgIGlmIChpc05pbChjdXJyZW50T2JqZWN0QnlLZXlba2V5XSkpIHtcbiAgICAgICAgICBjdXJyZW50T2JqZWN0QnlLZXlba2V5XSA9IC9cXFsoXFxkKyldL2cudGVzdChuZXh0S2V5KSA/IChvcHRpb25zPy52YWx1ZURlZmF1bHRQYXRoQXJyYXlVbmRlZmluZWQgPz8gW10pIDogKG9wdGlvbnM/LnZhbHVlRGVmYXVsdFBhdGhPYmplY3RVbmRlZmluZWQgPz8ge30pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjdXJyZW50T2JqZWN0QnlLZXkgPSBrZXkgPyBjdXJyZW50T2JqZWN0QnlLZXlba2V5XSA6IGN1cnJlbnRPYmplY3RCeUtleTtcbiAgICAgIHByZU9iamVjdEJ5S2V5ID0gY3VycmVudE9iamVjdEJ5S2V5O1xuICAgICAgY3VycmVudE9iamVjdEJ5S2V5ID0gaXNTaWduYWwoY3VycmVudE9iamVjdEJ5S2V5KSA/IGN1cnJlbnRPYmplY3RCeUtleSgpIDogY3VycmVudE9iamVjdEJ5S2V5O1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY3VycmVudE9iamVjdEJ5S2V5ICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEfDoW4gZ2nDoSB0cuG7iyDhu58gY3Xhu5FpIMSRxrDhu51uZyBk4bqrblxuICAgIGtleSA9IGtleS5yZXBsYWNlKC9cXFsoXFxkKyldL2csICckMScpO1xuICAgIGNvbnN0IHZhbHVlT2ZLZXkgPSBjdXJyZW50T2JqZWN0QnlLZXlba2V5XTtcbiAgICBjb25zdCB2YWx1ZU9mS2V5SXNTaWduYWwgPSBpc1NpZ25hbCh2YWx1ZU9mS2V5KTtcblxuICAgIGlmICh2YWx1ZU9mS2V5SXNTaWduYWwgJiYgKHR5cGVvZiB2YWx1ZU9mS2V5KCkgIT09ICdvYmplY3QnIHx8IHZhbHVlT2ZLZXkoKSA9PT0gbnVsbCkpIHtcbiAgICAgICh2YWx1ZU9mS2V5IGFzIFdyaXRhYmxlU2lnbmFsPGFueT4pLnNldChpc1NpZ25hbCh2YWx1ZSkgPyB2YWx1ZSgpIDogdmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaXNTaWduYWwocHJlT2JqZWN0QnlLZXkpKSB7XG4gICAgICAocHJlT2JqZWN0QnlLZXkgYXMgV3JpdGFibGVTaWduYWw8YW55PikudXBkYXRlKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgZGF0YU9mS2V5ID0gZGF0YVtrZXldO1xuICAgICAgICBpZiAoaXNOaWwoZGF0YU9mS2V5KSB8fCAhdmFsdWVPZktleUlzU2lnbmFsKSB7XG4gICAgICAgICAgZGF0YVtrZXldID0gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWVPZktleUlzU2lnbmFsKSB7XG4gICAgICAgICAgKHZhbHVlT2ZLZXkgYXMgV3JpdGFibGVTaWduYWw8YW55Pikuc2V0KGlzU2lnbmFsKHZhbHVlKSA/IHZhbHVlKCkgOiB2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgICAgIHJldHVybiBbLi4uZGF0YV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgLi4uZGF0YSB9O1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh2YWx1ZU9mS2V5SXNTaWduYWwpIHtcbiAgICAgICh2YWx1ZU9mS2V5IGFzIFdyaXRhYmxlU2lnbmFsPGFueT4pLnNldChpc1NpZ25hbCh2YWx1ZSkgPyB2YWx1ZSgpIDogdmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjdXJyZW50T2JqZWN0QnlLZXlba2V5XSA9IHZhbHVlO1xuICB9KTtcblxuICByZXR1cm4gb2JqO1xufTtcblxuLyoqXG4gKiBU4bqhbyBt4buZdCBi4bqjbiBzYW8gc8OidSBj4bunYSBt4buZdCDEkeG7kWkgdMaw4bujbmcgaG/hurdjIGdpw6EgdHLhu4sgYuG6pXQga+G7s1xuICogQHBhcmFtIGRhdGEgROG7ryBsaeG7h3UgY+G6p24gc2FvIGNow6lwXG4gKiBAcGFyYW0gb3B0aW9ucyBUw7l5IGNo4buNbiBj4bqldSBow6xuaFxuICogQHBhcmFtIG9wdGlvbnMuaWdub3JlU2lnbmFsIE7hur91IHRydWUsIHPhur0ga2jDtG5nIHNhbyBjaMOpcCBjw6FjIHNpZ25hbCBtw6AgdHLhuqMgduG7gSBzaWduYWwgZ+G7kWNcbiAqIEBwYXJhbSBzZWVuIFdlYWtNYXAgxJHhu4MgdGhlbyBkw7VpIGPDoWMgdGhhbSBjaGnhur91IMSRw6MgxJHGsOG7o2Mgc2FvIGNow6lwLCB0csOhbmggbOG6t3AgdsO0IGjhuqFuIHbhu5tpIGPDoWMgdGhhbSBjaGnhur91IHbDsm5nXG4gKiBAcmV0dXJucyBC4bqjbiBzYW8gc8OidSBj4bunYSBk4buvIGxp4buHdSDEkeG6p3UgdsOgb1xuICogQGV4YW1wbGVcbiAqIGNvbnN0IG9iaiA9IHtcbiAqICAgYTogMSxcbiAqICAgYjogeyBjOiAyIH0sXG4gKiAgIGQ6IFsxLCAyLCAzXVxuICogfTtcbiAqIGNvbnN0IGNsb25lID0gY2xvbmVEZWVwKG9iaik7XG4gKiAvLyBjbG9uZSBsw6AgbeG7mXQgYuG6o24gc2FvIGhvw6BuIHRvw6BuIMSR4buZYyBs4bqtcCBj4bunYSBvYmpcbiAqL1xuZXhwb3J0IGNvbnN0IGNsb25lRGVlcCA9IDxUID0gYW55PihkYXRhOiBhbnksIG9wdGlvbnMgPSB7IGlnbm9yZVNpZ25hbDogZmFsc2UgfSwgc2VlbiA9IG5ldyBXZWFrTWFwKCkpOiBUID0+IHtcbiAgaWYgKGRhdGEgPT09IG51bGwgfHwgKHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0JyAmJiAhaXNTaWduYWwoZGF0YSkpIHx8IGlzRGFuZ2Vyb3VzT2JqZWN0KGRhdGEpKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBpZiAoc2Vlbi5oYXMoZGF0YSkpIHtcbiAgICByZXR1cm4gc2Vlbi5nZXQoZGF0YSk7XG4gIH1cblxuICBpZiAoZGF0YSBpbnN0YW5jZW9mIEh0dHBQYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFV0aWxzSHR0cFBhcmFtc1JlcXVlc3QodW5kZWZpbmVkLCBkYXRhKSBhcyBUO1xuICB9XG5cbiAgaWYgKGRhdGEgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGEuZ2V0VGltZSgpKSBhcyBUO1xuICB9XG5cbiAgaWYgKGRheWpzLmlzRGF5anMoZGF0YSkpIHtcbiAgICByZXR1cm4gZ2V0RGF5anMoeyBkYXRlOiBkYXRhLnZhbHVlT2YoKSB9KSBhcyBUO1xuICB9XG5cbiAgaWYgKGRhdGEgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChkYXRhLnNvdXJjZSwgZGF0YS5mbGFncykgYXMgVDtcbiAgfVxuXG4gIGlmIChkYXRhIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgY29uc3QgbWFwQ29weSA9IG5ldyBNYXAoKTtcbiAgICBzZWVuLnNldChkYXRhLCBtYXBDb3B5KTtcbiAgICBkYXRhLmZvckVhY2goKHZhbCwga2V5KSA9PiB7XG4gICAgICBtYXBDb3B5LnNldChjbG9uZURlZXAoa2V5LCBvcHRpb25zLCBzZWVuKSwgY2xvbmVEZWVwKHZhbCwgb3B0aW9ucywgc2VlbikpO1xuICAgIH0pO1xuICAgIHJldHVybiBtYXBDb3B5IGFzIFQ7XG4gIH1cblxuICBpZiAoZGF0YSBpbnN0YW5jZW9mIFNldCkge1xuICAgIGNvbnN0IHNldENvcHkgPSBuZXcgU2V0KCk7XG4gICAgc2Vlbi5zZXQoZGF0YSwgc2V0Q29weSk7XG4gICAgZGF0YS5mb3JFYWNoKCh2YWwpID0+IHtcbiAgICAgIHNldENvcHkuYWRkKGNsb25lRGVlcCh2YWwsIG9wdGlvbnMsIHNlZW4pKTtcbiAgICB9KTtcbiAgICByZXR1cm4gc2V0Q29weSBhcyBUO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICBzZWVuLnNldChkYXRhLCBkYXRhLm1hcCgoaXRlbSkgPT4gY2xvbmVEZWVwKGl0ZW0sIG9wdGlvbnMsIHNlZW4pKSBhcyBUKTtcbiAgICByZXR1cm4gc2Vlbi5nZXQoZGF0YSkgYXMgVDtcbiAgfVxuXG4gIGlmIChpc1JldHVybkFzSXNPYmplY3QoZGF0YSkpIHtcbiAgICByZXR1cm4gZGF0YSBhcyBUO1xuICB9XG5cbiAgaWYgKGlzU2lnbmFsKGRhdGEpKSB7XG4gICAgaWYgKG9wdGlvbnM/Lmlnbm9yZVNpZ25hbCkge1xuICAgICAgcmV0dXJuIGRhdGEgYXMgVDtcbiAgICB9XG4gICAgc2Vlbi5zZXQoZGF0YSwgc2lnbmFsKGNsb25lRGVlcChkYXRhKCksIG9wdGlvbnMsIHNlZW4pKSk7XG4gICAgcmV0dXJuIHNlZW4uZ2V0KGRhdGEpIGFzIFQ7XG4gIH1cblxuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgc2Vlbi5zZXQoZGF0YSwgcmVzdWx0KTtcbiAgZm9yIChjb25zdCBrZXkgaW4gZGF0YSkge1xuICAgIGNvbnN0IHZhbHVlID0gZGF0YVtrZXldO1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEh0dHBQYXJhbXMpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gbmV3IFV0aWxzSHR0cFBhcmFtc1JlcXVlc3QodW5kZWZpbmVkLCB2YWx1ZSkgYXMgVDtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gbmV3IERhdGUodmFsdWUuZ2V0VGltZSgpKSBhcyBUO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGRheWpzLmlzRGF5anModmFsdWUpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IGdldERheWpzKHsgZGF0ZTogdmFsdWUudmFsdWVPZigpIH0pIGFzIFQ7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgIHJlc3VsdFtrZXldID0gbmV3IFJlZ0V4cCh2YWx1ZS5zb3VyY2UsIHZhbHVlLmZsYWdzKSBhcyBUO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChpc1JldHVybkFzSXNPYmplY3QoZGF0YSkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gdmFsdWU7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gY2xvbmVEZWVwKHZhbHVlLCBvcHRpb25zLCBzZWVuKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0IGFzIFQ7XG59O1xuXG4vKipcbiAqIENodXnhu4NuIMSR4buVaSBt4buZdCBt4bqjbmcgY8OhYyDEkeG7kWkgdMaw4bujbmcgdGjDoG5oIG3hu5l0IMSR4buRaSB0xrDhu6NuZyB24bubaSBraMOzYSDEkcaw4bujYyBjaOG7iSDEkeG7i25oXG4gKiBAcGFyYW0gZGF0YSBN4bqjbmcgY8OhYyDEkeG7kWkgdMaw4bujbmcgY+G6p24gY2h1eeG7g24gxJHhu5VpXG4gKiBAcGFyYW0ga2V5IFTDqm4gdGh14buZYyB0w61uaCDEkcaw4bujYyBz4butIGThu6VuZyBsw6BtIGtow7NhIHRyb25nIMSR4buRaSB0xrDhu6NuZyBr4bq/dCBxdeG6o1xuICogQHJldHVybnMgxJDhu5FpIHTGsOG7o25nIHbhu5tpIGPDoWMgZ2nDoSB0cuG7iyB04burIG3huqNuZyDEkcaw4bujYyDEkcOhbmgga2V5IHRoZW8gdGh14buZYyB0w61uaCDEkcOjIGNo4buJIMSR4buLbmhcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBkYXRhID0gW1xuICogICB7IGlkOiAxLCBuYW1lOiAnSm9obicgfSxcbiAqICAgeyBpZDogMiwgbmFtZTogJ0phbmUnIH1cbiAqIF07XG4gKiBrZXlCeShkYXRhLCAnaWQnKTtcbiAqIC8vIEvhur90IHF14bqjOiB7XG4gKiAvLyAgICcxJzogeyBpZDogMSwgbmFtZTogJ0pvaG4nIH0sXG4gKiAvLyAgICcyJzogeyBpZDogMiwgbmFtZTogJ0phbmUnIH1cbiAqIC8vIH1cbiAqL1xuZXhwb3J0IGNvbnN0IGtleUJ5ID0gKGRhdGE6IEFycmF5PFRZUEVfT0JKRUNUPiwga2V5OiBzdHJpbmcpOiBUWVBFX09CSkVDVCA9PiB7XG4gIGlmICghZGF0YSB8fCAhZGF0YS5sZW5ndGggfHwgIWtleSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICByZXR1cm4gZGF0YS5yZWR1Y2UoKGRpciwgbmV4dEl0ZW0pID0+IHtcbiAgICBjb25zdCB2YWx1ZU9mS2V5ID0gZ2V0KG5leHRJdGVtLCBrZXkpO1xuICAgIGlmICh0eXBlb2YgdmFsdWVPZktleSAhPT0gJ3N0cmluZycgJiYgdHlwZW9mIHZhbHVlT2ZLZXkgIT09ICdudW1iZXInICYmIHR5cGVvZiB2YWx1ZU9mS2V5ICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybiBkaXI7XG4gICAgfVxuICAgIGlmICghT2JqZWN0LmtleXMoZGlyKS5pbmNsdWRlcyhgJHt2YWx1ZU9mS2V5fWApKSB7XG4gICAgICBkaXJbYCR7dmFsdWVPZktleX1gXSA9IG5leHRJdGVtO1xuICAgIH1cbiAgICByZXR1cm4gZGlyO1xuICB9LCB7fSk7XG59O1xuXG4vKipcbiAqIE5ow7NtIGPDoWMgxJHhu5FpIHTGsOG7o25nIHRyb25nIG3hu5l0IG3huqNuZyB0aMOgbmggY8OhYyBuaMOzbSBk4buxYSB0csOqbiBt4buZdCB0aHXhu5ljIHTDrW5oIGPhu6UgdGjhu4NcbiAqIEBwYXJhbSBkYXRhIE3huqNuZyBjw6FjIMSR4buRaSB0xrDhu6NuZyBj4bqnbiBuaMOzbVxuICogQHBhcmFtIGtleSBUw6puIHRodeG7mWMgdMOtbmggxJHGsOG7o2Mgc+G7rSBk4bulbmcgbMOgbSBraMOzYSBuaMOzbVxuICogQHJldHVybnMgxJDhu5FpIHTGsOG7o25nIHbhu5tpIGPDoWMgZ2nDoSB0cuG7iyB04burIG3huqNuZyDEkcaw4bujYyBuaMOzbSB0aGVvIHRodeG7mWMgdMOtbmggxJHDoyBjaOG7iSDEkeG7i25oXG4gKiBAZXhhbXBsZVxuICogY29uc3QgZGF0YSA9IFtcbiAqICAgeyBpZDogMSwgbmFtZTogJ0pvaG4nIH0sXG4gKiAgIHsgaWQ6IDIsIG5hbWU6ICdKYW5lJyB9LFxuICogICB7IGlkOiAxLCBuYW1lOiAnSm9obicgfVxuICogXTtcbiAqIGdyb3VwQnkoZGF0YSwgJ2lkJyk7XG4gKiAvLyBL4bq/dCBxdeG6ozoge1xuICogLy8gICAnMSc6IFtcbiAqIC8vICAgICB7IGlkOiAxLCBuYW1lOiAnSm9obicgfSxcbiAqIC8vICAgICB7IGlkOiAxLCBuYW1lOiAnSm9obicgfVxuICogLy8gICBdLFxuICogLy8gICAnMic6IFtcbiAqIC8vICAgICB7IGlkOiAyLCBuYW1lOiAnSmFuZScgfVxuICogLy8gfVxuICovXG5leHBvcnQgY29uc3QgZ3JvdXBCeSA9IChkYXRhOiBBcnJheTxUWVBFX09CSkVDVD4sIGtleTogc3RyaW5nKTogVFlQRV9PQkpFQ1QgPT4ge1xuICBpZiAoIWRhdGEgfHwgIWRhdGEubGVuZ3RoIHx8ICFPYmplY3Qua2V5cyhnZXQoZGF0YSwgJzAnKSkubGVuZ3RoIHx8ICFrZXkpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgcmV0dXJuIGRhdGEucmVkdWNlKChkaXIsIG5leHRJdGVtKSA9PiB7XG4gICAgY29uc3QgdmFsdWVPZktleSA9IGdldChuZXh0SXRlbSwga2V5KTtcbiAgICBpZiAodHlwZW9mIHZhbHVlT2ZLZXkgIT09ICdzdHJpbmcnICYmIHR5cGVvZiB2YWx1ZU9mS2V5ICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgdmFsdWVPZktleSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gZGlyO1xuICAgIH1cbiAgICBpZiAoIU9iamVjdC5rZXlzKGRpcikuaW5jbHVkZXMoYCR7dmFsdWVPZktleX1gKSkge1xuICAgICAgZGlyW2Ake3ZhbHVlT2ZLZXl9YF0gPSBbXTtcbiAgICB9XG4gICAgZGlyW2Ake3ZhbHVlT2ZLZXl9YF0ucHVzaChuZXh0SXRlbSk7XG4gICAgcmV0dXJuIGRpcjtcbiAgfSwge30pO1xufTtcblxuLyoqXG4gKiBU4bqhbyBt4buZdCBt4bqjbmcgY8OhYyBz4buRIHThu6sgZ2nDoSB0cuG7iyBi4bqvdCDEkeG6p3UgxJHhur9uIGdpw6EgdHLhu4sga+G6v3QgdGjDumMgduG7m2kgYsaw4bubYyBuaOG6o3kgdMO5eSBjaOG7jW5cbiAqIEBwYXJhbSBzdGFydCBHacOhIHRy4buLIGLhuq90IMSR4bqndSBj4bunYSBkw6N5IHPhu5EuIE7hur91IGNo4buJIGPDsyBt4buZdCB0aGFtIHPhu5EsIMSRw6J5IHPhur0gbMOgIGdpw6EgdHLhu4sga+G6v3QgdGjDumMgdsOgIGdpw6EgdHLhu4sgYuG6r3QgxJHhuqd1IHPhur0gbMOgIDBcbiAqIEBwYXJhbSBlbmQgR2nDoSB0cuG7iyBr4bq/dCB0aMO6YyBj4bunYSBkw6N5IHPhu5EgKHTDuXkgY2jhu41uKVxuICogQHBhcmFtIHN0ZXAgQsaw4bubYyBuaOG6o3kgZ2nhu69hIGPDoWMgc+G7kSB0cm9uZyBkw6N5ICh0w7l5IGNo4buNbikuIE3hurdjIMSR4buLbmggbMOgIDEgbuG6v3UgZW5kID4gc3RhcnQsIC0xIG7hur91IGVuZCA8IHN0YXJ0XG4gKiBAcmV0dXJucyBN4bqjbmcgY8OhYyBz4buRIHThu6sgc3RhcnQgxJHhur9uIGVuZCB24bubaSBixrDhu5tjIG5o4bqjeSBzdGVwXG4gKiBAZXhhbXBsZVxuICogcmFuZ2UoNCk7ICAgICAgLy8gWzAsIDEsIDIsIDNdXG4gKiByYW5nZSgxLCA1KTsgICAvLyBbMSwgMiwgMywgNF1cbiAqIHJhbmdlKDAsIDIwLCA1KTsgLy8gWzAsIDUsIDEwLCAxNV1cbiAqIHJhbmdlKDUsIDIpOyAgIC8vIFs1LCA0LCAzXVxuICovXG5leHBvcnQgY29uc3QgcmFuZ2UgPSAoc3RhcnQ6IG51bWJlciwgZW5kPzogbnVtYmVyLCBzdGVwPzogbnVtYmVyKTogQXJyYXk8bnVtYmVyPiA9PiB7XG4gIGlmIChlbmQgPT09IHVuZGVmaW5lZCB8fCBlbmQgPT09IG51bGwpIHtcbiAgICBlbmQgPSBzdGFydDtcbiAgICBzdGFydCA9IDA7XG4gIH1cblxuICBpZiAoIXN0ZXApIHtcbiAgICBzdGVwID0gZW5kIDwgMCA/IC0xIDogMTtcbiAgfVxuXG4gIGlmIChlbmQgPCBzdGFydCAmJiBzdGVwID4gMCkge1xuICAgIHN0ZXAgKj0gLTE7XG4gIH1cblxuICBjb25zdCB2YWx1ZVN0YXJ0QnlTdGVwID0gc3RlcCArIHN0YXJ0O1xuICBjb25zdCBkaXJlY3Rpb24gPSBzdGFydCA8IGVuZCA/ICdhc2MnIDogJ2Rlc2MnO1xuICBpZiAoKGRpcmVjdGlvbiA9PT0gJ2FzYycgJiYgKHZhbHVlU3RhcnRCeVN0ZXAgPCBzdGFydCB8fCB2YWx1ZVN0YXJ0QnlTdGVwID4gZW5kKSkgfHwgKGRpcmVjdGlvbiA9PT0gJ2Rlc2MnICYmICh2YWx1ZVN0YXJ0QnlTdGVwID4gc3RhcnQgfHwgdmFsdWVTdGFydEJ5U3RlcCA8IGVuZCkpKSB7XG4gICAgcmV0dXJuIFtzdGFydF07XG4gIH1cblxuICBjb25zdCBhcnIgPSBuZXcgQXJyYXk8bnVtYmVyPigpO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBNYXRoLmFicyhlbmQgLSBzdGFydCk7IGluZGV4KyspIHtcbiAgICBsZXQgdmFsdWUgPSBzdGFydCArIGluZGV4ICogc3RlcDtcbiAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgIHZhbHVlID0gc3RhcnQ7XG4gICAgfVxuXG4gICAgaWYgKChkaXJlY3Rpb24gPT09ICdhc2MnICYmICh2YWx1ZSA8IHN0YXJ0IHx8IHZhbHVlID4gZW5kKSkgfHwgKGRpcmVjdGlvbiA9PT0gJ2Rlc2MnICYmICh2YWx1ZSA+IHN0YXJ0IHx8IHZhbHVlIDwgZW5kKSkpIHtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfVxuXG4gICAgYXJyLnB1c2godmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIGFycjtcbn07XG5cbi8qKlxuICogU28gc8OhbmggaGFpIGdpw6EgdHLhu4sgYuG6pXQga+G7syBjw7MgYuG6sW5nIG5oYXUgaGF5IGtow7RuZ1xuICogQHBhcmFtIHZhbHVlMSBHacOhIHRy4buLIHRo4bupIG5o4bqldCBj4bqnbiBzbyBzw6FuaFxuICogQHBhcmFtIHZhbHVlMiBHacOhIHRy4buLIHRo4bupIGhhaSBj4bqnbiBzbyBzw6FuaFxuICogQHBhcmFtIGV4YWN0bHlQb3NpdGlvbiBDw7Mgc28gc8OhbmggY2jDrW5oIHjDoWMgduG7iyB0csOtIGPDoWMgcGjhuqduIHThu60gdHJvbmcgbeG6o25nIGhheSBraMO0bmdcbiAqIEByZXR1cm5zIHRydWUgbuG6v3UgaGFpIGdpw6EgdHLhu4sgYuG6sW5nIG5oYXUsIGZhbHNlIG7hur91IGtow7RuZyBi4bqxbmcgbmhhdVxuICogQGV4YW1wbGVcbiAqIGlzRXF1YWwoWzEsMiwzXSwgWzEsMiwzXSk7IC8vIHRydWVcbiAqIGlzRXF1YWwoWzEsMiwzXSwgWzMsMiwxXSk7IC8vIHRydWUga2hpIGV4YWN0bHlQb3NpdGlvbiA9IGZhbHNlXG4gKiBpc0VxdWFsKFsxLDIsM10sIFszLDIsMV0pOyAvLyBmYWxzZSBraGkgZXhhY3RseVBvc2l0aW9uID0gdHJ1ZVxuICogaXNFcXVhbCh7YToxfSwge2E6MX0pOyAvLyB0cnVlXG4gKi9cbmV4cG9ydCBjb25zdCBpc0VxdWFsID0gKFxuICB2YWx1ZTE6IGFueSxcbiAgdmFsdWUyOiBhbnksXG4gIG9wdGlvbnM/OiB7XG4gICAgZXhhY3RseVBvc2l0aW9uPzogYm9vbGVhbjtcbiAgICBpZ25vcmVFeGFjdGx5RGF0YVR5cGU/OiBib29sZWFuO1xuICAgIGlnbm9yZVVuV3JhcFNpZ25hbD86IGJvb2xlYW47XG4gIH1cbik6IGJvb2xlYW4gPT4ge1xuICAvLyBIYW5kbGUgc2lnbmFsc1xuICBpZiAoIW9wdGlvbnM/Lmlnbm9yZVVuV3JhcFNpZ25hbCkge1xuICAgIHZhbHVlMSA9IGNvbnZlcnRTaWduYWxUb09iamVjdCh2YWx1ZTEpO1xuICAgIHZhbHVlMiA9IGNvbnZlcnRTaWduYWxUb09iamVjdCh2YWx1ZTIpO1xuICB9XG4gIGNvbnN0IHsgZXhhY3RseVBvc2l0aW9uID0gZmFsc2UsIGlnbm9yZUV4YWN0bHlEYXRhVHlwZSA9IGZhbHNlIH0gPSBvcHRpb25zIHx8IHt9O1xuXG4gIGlmICh2YWx1ZTEgPT09IHZhbHVlMiB8fCAodmFsdWUxID09PSBudWxsICYmIHZhbHVlMiA9PT0gbnVsbCkgfHwgKHZhbHVlMSA9PT0gdW5kZWZpbmVkICYmIHZhbHVlMiA9PT0gdW5kZWZpbmVkKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKGlnbm9yZUV4YWN0bHlEYXRhVHlwZSkge1xuICAgIHJldHVybiBpc0VxdWFsKGlzTmlsKHZhbHVlMSkgPyB1bmRlZmluZWQgOiBgJHt2YWx1ZTF9YCwgaXNOaWwodmFsdWUyKSA/IHVuZGVmaW5lZCA6IGAke3ZhbHVlMn1gKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUxICE9PSAnb2JqZWN0JyB8fCB0eXBlb2YgdmFsdWUyICE9PSAnb2JqZWN0JyB8fCAoQXJyYXkuaXNBcnJheSh2YWx1ZTEpICYmICFBcnJheS5pc0FycmF5KHZhbHVlMikpIHx8ICghQXJyYXkuaXNBcnJheSh2YWx1ZTEpICYmIEFycmF5LmlzQXJyYXkodmFsdWUyKSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZTEpKSB7XG4gICAgaWYgKHZhbHVlMS5sZW5ndGggIT09IHZhbHVlMi5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFleGFjdGx5UG9zaXRpb24pIHtcbiAgICAgIHJldHVybiAhdmFsdWUxLnNvbWUoKGl0ZW0pID0+ICF2YWx1ZTIuaW5jbHVkZXMoaXRlbSkpO1xuICAgIH1cblxuICAgIHJldHVybiAhdmFsdWUxLnNvbWUoKGl0ZW0sIGluZGV4KSA9PiAhaXNFcXVhbChpdGVtLCB2YWx1ZTJbaW5kZXhdLCBvcHRpb25zKSk7XG4gIH1cblxuICBpZiAoT2JqZWN0LmtleXModmFsdWUxKS5sZW5ndGggIT09IE9iamVjdC5rZXlzKHZhbHVlMikubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiAhT2JqZWN0LmtleXModmFsdWUxKS5zb21lKChrZXkpID0+ICFpc0VxdWFsKHZhbHVlMVtrZXldLCB2YWx1ZTJba2V5XSwgb3B0aW9ucykpO1xufTtcblxuLyoqXG4gKiBMb+G6oWkgYuG7jyBjw6FjIHBo4bqnbiB04butIHRyw7luZyBs4bq3cCB0cm9uZyBt4bqjbmcgZOG7sWEgdHLDqm4gbeG7mXQgdGh14buZYyB0w61uaCBjaOG7iSDEkeG7i25oXG4gKiBAcGFyYW0gZGF0YSBN4bqjbmcgZOG7ryBsaeG7h3UgY+G6p24geOG7rSBsw71cbiAqIEBwYXJhbSBrZXkgVMOqbiB0aHXhu5ljIHTDrW5oIGTDuW5nIMSR4buDIHNvIHPDoW5oIHRyw7luZyBs4bq3cC4gTuG6v3Uga2jDtG5nIGPDsyBrZXkgdGjDrCBzbyBzw6FuaCB0cuG7sWMgdGnhur9wIGdpw6EgdHLhu4tcbiAqIEByZXR1cm5zIE3huqNuZyBt4bubaSBjaOG7qWEgY8OhYyBwaOG6p24gdOG7rSBraMO0bmcgdHLDuW5nIGzhurdwXG4gKiBAZXhhbXBsZVxuICogY29uc3QgYXJyID0gW1xuICogICB7IGlkOiAxLCBuYW1lOiAnQScgfSxcbiAqICAgeyBpZDogMiwgbmFtZTogJ0InIH0sXG4gKiAgIHsgaWQ6IDEsIG5hbWU6ICdDJyB9XG4gKiBdO1xuICogdW5pcUJ5KGFyciwgJ2lkJyk7IC8vIFt7IGlkOiAxLCBuYW1lOiAnQScgfSwgeyBpZDogMiwgbmFtZTogJ0InIH1dXG4gKlxuICogY29uc3QgbnVtYmVycyA9IFsxLCAyLCAyLCAzLCAzXTtcbiAqIHVuaXFCeShudW1iZXJzKTsgLy8gWzEsIDIsIDNdXG4gKlxuICogY29uc3QgbnVtYmVyc1NpZ25hbCA9IFtzaWduYWwoMSksIHNpZ25hbCgyKSwgc2lnbmFsKDMpLCBzaWduYWwoMiksIHNpZ25hbCg1KSwgc2lnbmFsKDQpLCBzaWduYWwoMSksIHNpZ25hbCg2KSwgc2lnbmFsKDcpLCBzaWduYWwoNildO1xuICogdW5pcUJ5KG51bWJlcnNTaWduYWwpOyAvLyBbc2lnbmFsKDEpLCBzaWduYWwoMiksIHNpZ25hbCgzKSwgc2lnbmFsKDUpLCBzaWduYWwoNCksIHNpZ25hbCg2KSwgc2lnbmFsKDcpXVxuICovXG5leHBvcnQgY29uc3QgdW5pcUJ5ID0gPFQ+KGRhdGE6IEFycmF5PFQ+LCBrZXk/OiBzdHJpbmcpOiBBcnJheTxUPiA9PiB7XG4gIGlmICgha2V5IHx8ICFkYXRhPy5sZW5ndGggfHwgdHlwZW9mIGdldChkYXRhLCAnMCcpICE9PSAnb2JqZWN0Jykge1xuICAgIC8vIFjhu60gbMO9IG3huqNuZyBjaOG7qWEgc2lnbmFsIHZhbHVlc1xuICAgIGlmIChkYXRhWzBdICYmIGlzU2lnbmFsKGRhdGFbMF0pKSB7XG4gICAgICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICAgIHJldHVybiBkYXRhLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGAke2dldChpdGVtLCAnJyl9YDtcbiAgICAgICAgaWYgKHNlZW4uaGFzKHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBzZWVuLmFkZCh2YWx1ZSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIFjhu60gbMO9IG3huqNuZyBwcmltaXRpdmUgdmFsdWVzXG4gICAgcmV0dXJuIEFycmF5LmZyb20obmV3IFNldChkYXRhKSk7XG4gIH1cblxuICBjb25zdCBkYXRhVW5pcXVlID0ga2V5QnkoZGF0YSBhcyBBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+Piwga2V5KTtcblxuICByZXR1cm4gT2JqZWN0LmtleXMoZGF0YVVuaXF1ZSkubWFwKChrZXkpID0+IGRhdGFVbmlxdWVba2V5XSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVJbnRlcmZhY2UgPSAob2JqOiBhbnksIGludGVyZmFjZU5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGdlbmVyYXRlVHlwZSA9ICh2YWx1ZTogYW55KTogc3RyaW5nID0+IHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiAnbnVsbCc7XG4gICAgfVxuICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgdmFsdWU7XG5cbiAgICBpZiAodHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiAnc3RyaW5nJztcbiAgICB9XG4gICAgaWYgKHR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gJ251bWJlcic7XG4gICAgfVxuICAgIGlmICh0eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybiAnYm9vbGVhbic7XG4gICAgfVxuICAgIGlmICh0eXBlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuICdhbnknO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHJldHVybiAnRGF0ZSc7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICByZXR1cm4gJ1JlZ0V4cCc7XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICBpZiAodmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiAnQXJyYXk8YW55Pic7XG4gICAgICB9XG4gICAgICByZXR1cm4gYEFycmF5PCR7Z2VuZXJhdGVUeXBlKHZhbHVlWzBdKX0+YDtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGxldCBpbnRlcmZhY2VTdHIgPSAne1xcbic7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB2YWx1ZSkge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWVUeXBlID0gZ2VuZXJhdGVUeXBlKHZhbHVlW2tleV0pO1xuICAgICAgICAgIGludGVyZmFjZVN0ciArPSBgICAke2tleX06ICR7dmFsdWVUeXBlfTtcXG5gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpbnRlcmZhY2VTdHIgKz0gJ30nO1xuICAgICAgcmV0dXJuIGludGVyZmFjZVN0cjtcbiAgICB9XG5cbiAgICByZXR1cm4gJ2FueSc7XG4gIH07XG5cbiAgY29uc3QgaW50ZXJmYWNlU3RyID0gYGludGVyZmFjZSAke2ludGVyZmFjZU5hbWV9ICR7Z2VuZXJhdGVUeXBlKG9iail9YDtcbiAgcmV0dXJuIGludGVyZmFjZVN0cjtcbn07XG4iXX0=
|
|
639
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMtdWkvdXRpbHMvc3JjL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQWtCLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakUsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RSxzQ0FBc0M7QUFDdEM7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBYyxFQUFFLE9BQTBDLEVBQTZCLEVBQUU7SUFDN0csSUFBSSxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxDQUFDO1FBQ2pDLEtBQUssR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNELE9BQU8sS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxDQUFDO0FBQy9DLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQWMsRUFBRSxPQUEyRyxFQUFzQyxFQUFFO0lBQ3pMLElBQUksQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztRQUNqQyxLQUFLLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFDRCxJ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QUcsTUFBTSxFQUFFLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNuRyxDQUFDO0lBRUQsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN2SyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUMxQixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNyQixPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUVELE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMs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QUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN2QixPQUFPLFlBQVksQ0FBQztZQUN0QixDQUFDO1lBQ0QsT0FBTyxTQUFTLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQzVDLENBQUM7UUFFRCxJQUFJLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN0QixJQUFJLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDekIsS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3JELE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDM0MsWUFBWSxJQUFJLEtBQUssR0FBRyxLQUFLLFNBQVMsS0FBSyxDQUFDO2dCQUM5QyxDQUFDO1lBQ0gsQ0FBQztZQUNELFlBQVksSUFBSSxHQUFHLENBQUM7WUFDcEIsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0lBRUYsTUFBTSxZQUFZLEdBQUcsYUFBYSxhQUFhLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDdkUsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFdyaXRhYmxlU2lnbmFsLCBpc1NpZ25hbCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUWVBFX09CSkVDVCB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCB7IGlzRGFuZ2Vyb3VzT2JqZWN0LCBpc1JldHVybkFzSXNPYmplY3QgfSBmcm9tICcuL2Rhbmdlcm91cy1vYmplY3QnO1xuaW1wb3J0IHsgZ2V0RGF5anMgfSBmcm9tICcuL2RhdGUnO1xuaW1wb3J0IHsgVXRpbHNIdHRwUGFyYW1zUmVxdWVzdCB9IGZyb20gJy4vaHR0cC1wYXJhbXMnO1xuaW1wb3J0IHsgY29udmVydFNpZ25hbFRvT2JqZWN0LCB1bndyYXBTaWduYWwgfSBmcm9tICcuL3R3by13YXktc2lnbmFsLW9iamVjdCc7XG5cbi8qKkPDoWMgaMOgbSB0xrDGoW5nIHThu7EgdGjGsCB2aeG7h24gbG9kYXNoICovXG4vKipcbiAqIEtp4buDbSB0cmEgeGVtIG3hu5l0IGdpw6EgdHLhu4sgY8OzIHBo4bqjaSBsw6AgbnVsbCBob+G6t2MgdW5kZWZpbmVkIGhheSBraMO0bmdcbiAqIEBwYXJhbSB2YWx1ZSBHacOhIHRy4buLIGPhuqduIGtp4buDbSB0cmFcbiAqIEByZXR1cm5zIHRydWUgbuG6v3UgZ2nDoSB0cuG7iyBsw6AgbnVsbCBob+G6t2MgdW5kZWZpbmVkLCBmYWxzZSBu4bq/dSBraMO0bmdcbiAqIEBleGFtcGxlXG4gKiBpc05pbChudWxsKTsgLy8gdHJ1ZVxuICogaXNOaWwodW5kZWZpbmVkKTsgLy8gdHJ1ZVxuICogaXNOaWwoMCk7IC8vIGZhbHNlXG4gKiBpc05pbCgnaGVsbG8nKTsgLy8gZmFsc2VcbiAqL1xuZXhwb3J0IGNvbnN0IGlzTmlsID0gKHZhbHVlOiB1bmtub3duLCBvcHRpb25zPzogeyBpZ25vcmVVbldyYXBTaWduYWw/OiBib29sZWFuIH0pOiB2YWx1ZSBpcyBudWxsIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKCFvcHRpb25zPy5pZ25vcmVVbldyYXBTaWduYWwpIHtcbiAgICB2YWx1ZSA9IHVud3JhcFNpZ25hbCh2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQ7XG59O1xuXG4vKipcbiAqIEtp4buDbSB0cmEgeGVtIG3hu5l0IGdpw6EgdHLhu4sgY8OzIHBo4bqjaSBsw6AgcuG7l25nIGhheSBraMO0bmdcbiAqIEBwYXJhbSB2YWx1ZSBHacOhIHRy4buLIGPhuqduIGtp4buDbSB0cmFcbiAqIEByZXR1cm5zIHRydWUgbuG6v3UgZ2nDoSB0cuG7iyBsw6AgbnVsbCwgcuG7l25nIGhv4bq3YyB1bmRlZmluZWQsIGZhbHNlIG7hur91IGtow7RuZ1xuICogQGV4YW1wbGVcbiAqIGlzRW1wdHkobnVsbCk7IC8vIHRydWVcbiAqIGlzRW1wdHkoJycpOyAvLyB0cnVlXG4gKiBpc0VtcHR5KHVuZGVmaW5lZCk7IC8vIHRydWVcbiAqIGlzRW1wdHkoe30pOyAvLyB0cnVlXG4gKiBpc0VtcHR5KFtdKTsgLy8gdHJ1ZVxuICogaXNFbXB0eShbMSwgMiwgM10pOyAvLyBmYWxzZVxuICogaXNFbXB0eSh7IGE6IDEgfSk7IC8vIGZhbHNlXG4gKi9cbmV4cG9ydCBjb25zdCBpc0VtcHR5ID0gKHZhbHVlOiB1bmtub3duLCBvcHRpb25zPzogeyBpZ25vcmVDaGVja1R5cGVQcmltaXRpdmU/OiBib29sZWFuOyBpZ25vcmVVbldyYXBTaWduYWw/OiBib29sZWFuOyBpZ25vcmVDaGVja1N0cmluZz86IGJvb2xlYW4gfSk6IHZhbHVlIGlzIG51bGwgfCB1bmRlZmluZWQgfCAnJyB8IDAgPT4ge1xuICBpZiAoIW9wdGlvbnM/Lmlnbm9yZVVuV3JhcFNpZ25hbCkge1xuICAgIHZhbHVlID0gdW53cmFwU2lnbmFsKHZhbHVlKTtcbiAgfVxuICBpZiAob3B0aW9ucz8uaWdub3JlQ2hlY2tUeXBlUHJpbWl0aXZlKSB7XG4gICAgcmV0dXJuIGlzRW1wdHlUeXBlT2JqZWN0KHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiBpc0VtcHR5VHlwZVByaW1pdGl2ZSh2YWx1ZSwgeyBpZ25vcmVDaGVja1N0cmluZzogb3B0aW9ucz8uaWdub3JlQ2hlY2tTdHJpbmcgfSkgfHwgaXNFbXB0eVR5cGVPYmplY3QodmFsdWUpO1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIHhlbSBt4buZdCBnacOhIHRy4buLIGPDsyBwaOG6o2kgbMOgIG9iamVjdCBy4buXbmcgaGF5IGtow7RuZ1xuICogQHBhcmFtIHZhbHVlIEdpw6EgdHLhu4sgY+G6p24ga2nhu4NtIHRyYVxuICogQHJldHVybnMgdHJ1ZSBu4bq/dSBnacOhIHRy4buLIGzDoCBvYmplY3QgcuG7l25nLCBmYWxzZSBu4bq/dSBraMO0bmdcbiAqIEBleGFtcGxlXG4gKiBpc0VtcHR5VHlwZU9iamVjdCh7fSk7IC8vIHRydWVcbiAqIGlzRW1wdHlUeXBlT2JqZWN0KHsgYTogMSB9KTsgLy8gZmFsc2VcbiAqL1xuY29uc3QgaXNFbXB0eVR5cGVPYmplY3QgPSA8VCA9IG51bGw+KHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgVCA9PiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIChKU09OLnN0cmluZ2lmeSh2YWx1ZSkgPT09ICd7fScgfHwgSlNPTi5zdHJpbmdpZnkodmFsdWUpID09PSAnW10nKTtcbn07XG5cbmNvbnN0IGlzRW1wdHlUeXBlUHJpbWl0aXZlID0gPFQgPSBudWxsPih2YWx1ZTogdW5rbm93biwgb3B0aW9ucz86IHsgaWdub3JlQ2hlY2tTdHJpbmc/OiBib29sZWFuIH0pOiB2YWx1ZSBpcyBUID0+IHtcbiAgaWYgKG9wdGlvbnM/Lmlnbm9yZUNoZWNrU3RyaW5nICYmIHZhbHVlID09PSAnJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZSA9PT0gJycgfHwgaXNOaWwodmFsdWUsIHsgaWdub3JlVW5XcmFwU2lnbmFsOiB0cnVlIH0pO1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIHhlbSBt4buZdCBnacOhIHRy4buLIGPDsyBwaOG6o2kgbMOgIG51bGwsIHLhu5duZywgdW5kZWZpbmVkIGhv4bq3YyAwIGhheSBraMO0bmdcbiAqIEBwYXJhbSB2YWx1ZSBHacOhIHRy4buLIGPhuqduIGtp4buDbSB0cmFcbiAqIEBwYXJhbSBvcHRpb25zIEPhuqV1IGjDrG5oIHTDuXkgY2jhu41uXG4gKiBAcGFyYW0gb3B0aW9ucy5pZ25vcmVaZXJvIE7hur91IHRydWUsIHPhur0ga2jDtG5nIGtp4buDbSB0cmEgZ2nDoSB0cuG7iyAwXG4gKiBAcmV0dXJucyB0cnVlIG7hur91IGdpw6EgdHLhu4sgbMOgIG51bGwsIHLhu5duZywgdW5kZWZpbmVkIGhv4bq3YyAwLCBmYWxzZSBu4bq/dSBraMO0bmdcbiAqIEBleGFtcGxlXG4gKiBpc1RydXRoeShudWxsKTsgLy8gZmFsc2VcbiAqIGlzVHJ1dGh5KCcnKTsgLy8gZmFsc2VcbiAqIGlzVHJ1dGh5KHVuZGVmaW5lZCk7IC8vIGZhbHNlXG4gKiBpc1RydXRoeSgwKTsgLy8gZmFsc2VcbiAqIGlzVHJ1dGh5KHt9KTsgLy8gdHJ1ZVxuICogaXNUcnV0aHkoMCwgeyBpZ25vcmVaZXJvOiB0cnVlIH0pOyAvLyB0cnVlXG4gKi9cblxuZXhwb3J0IGNvbnN0IGlzVHJ1dGh5ID0gPFQ+KHZhbHVlOiBULCBvcHRpb25zPzogeyBpZ25vcmVaZXJvPzogYm9vbGVhbjsgaWdub3JlQ2hlY2tTdHJpbmc/OiBib29sZWFuOyBpZ25vcmVVbldyYXBTaWduYWw/OiBib29sZWFuIH0pOiB2YWx1ZSBpcyBOb25OdWxsYWJsZTxUPiA9PiB7XG4gIHJldHVybiAhaXNGYWxzeSh2YWx1ZSwgb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIEtp4buDbSB0cmEgeGVtIG3hu5l0IGdpw6EgdHLhu4sgY8OzIHBo4bqjaSBsw6AgbnVsbCwgcuG7l25nLCB1bmRlZmluZWQgaG/hurdjIDAgaGF5IGtow7RuZ1xuICogQHBhcmFtIHZhbHVlIEdpw6EgdHLhu4sgY+G6p24ga2nhu4NtIHRyYVxuICogQHBhcmFtIG9wdGlvbnMgQ+G6pXUgaMOsbmggdMO5eSBjaOG7jW5cbiAqIEBwYXJhbSBvcHRpb25zLmlnbm9yZVplcm8gTuG6v3UgdHJ1ZSwgc+G6vSBraMO0bmcga2nhu4NtIHRyYSBnacOhIHRy4buLIDBcbiAqIEByZXR1cm5zIHRydWUgbuG6v3UgZ2nDoSB0cuG7iyBsw6AgbnVsbCwgcuG7l25nLCB1bmRlZmluZWQgaG/hurdjIDAsIGZhbHNlIG7hur91IGtow7RuZ1xuICogQGV4YW1wbGVcbiAqIGlzRmFsc3kobnVsbCk7IC8vIHRydWVcbiAqIGlzRmFsc3koJycpOyAvLyB0cnVlXG4gKiBpc0ZhbHN5KHVuZGVmaW5lZCk7IC8vIHRydWVcbiAqIGlzRmFsc3koMCk7IC8vIHRydWVcbiAqIGlzRmFsc3koe30pOyAvLyBmYWxzZVxuICogaXNGYWxzeSgwLCB7IGlnbm9yZVplcm86IHRydWUgfSk7IC8vIGZhbHNlXG4gKi9cbmV4cG9ydCBjb25zdCBpc0ZhbHN5ID0gKHZhbHVlOiB1bmtub3duLCBvcHRpb25zPzogeyBpZ25vcmVaZXJvPzogYm9vbGVhbjsgaWdub3JlQ2hlY2tTdHJpbmc/OiBib29sZWFuOyBpZ25vcmVVbldyYXBTaWduYWw/OiBib29sZWFuIH0pOiB2YWx1ZSBpcyBudWxsIHwgdW5kZWZpbmVkIHwgJycgfCAwID0+IHtcbiAgaWYgKCFvcHRpb25zPy5pZ25vcmVVbldyYXBTaWduYWwpIHtcbiAgICB2YWx1ZSA9IHVud3JhcFNpZ25hbCh2YWx1ZSk7XG4gIH1cblxuICBpZiAob3B0aW9ucz8uaWdub3JlWmVybyAmJiB2YWx1ZSA9PT0gMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChvcHRpb25zPy5pZ25vcmVDaGVja1N0cmluZyAmJiB2YWx1ZSA9PT0gJycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gIXZhbHVlO1xufTtcblxuLyoqXG4gKiBMb+G6oWkgYuG7jyBjw6FjIHRodeG7mWMgdMOtbmggY+G7p2EgxJHhu5FpIHTGsOG7o25nIGThu7FhIHRyw6puIG3hu5l0IGjDoG0gxJFp4buBdSBraeG7h25cbiAqIEBwYXJhbSBvYmpEYXRhIMSQ4buRaSB0xrDhu6NuZyBj4bqnbiB44butIGzDvVxuICogQHBhcmFtIHByZWRpY2F0ZSBIw6BtIMSRaeG7gXUga2nhu4duIMSR4buDIGtp4buDbSB0cmEgZ2nDoSB0cuG7iyBj4bunYSB0aHXhu5ljIHTDrW5oLiBO4bq/dSBow6BtIHRy4bqjIHbhu4EgdHJ1ZSB0aMOsIHRodeG7mWMgdMOtbmggxJHDsyBz4bq9IGLhu4sgbG/huqFpIGLhu49cbiAqIEByZXR1cm5zIMSQ4buRaSB0xrDhu6NuZyBt4bubaSBzYXUga2hpIMSRw6MgbG/huqFpIGLhu48gY8OhYyB0aHXhu5ljIHTDrW5oIHRo4buPYSBtw6NuIMSRaeG7gXUga2nhu4duXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgb2JqID0geyBhOiAxLCBiOiBudWxsLCBjOiAzLCBkOiB1bmRlZmluZWQgfTtcbiAqIG9taXRCeShvYmosIGlzTmlsKTsgLy8geyBhOiAxLCBjOiAzIH1cbiAqL1xuZXhwb3J0IGNvbnN0IG9taXRCeSA9IDxUPihvYmpEYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBwcmVkaWNhdGU6ICh2YWw6IGFueSkgPT4gYm9vbGVhbik6IFQgPT4ge1xuICBpZiAoIW9iakRhdGEgfHwgdHlwZW9mIG9iakRhdGEgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkob2JqRGF0YSkpIHtcbiAgICByZXR1cm4gb2JqRGF0YSBhcyBUO1xuICB9XG4gIGNvbnN0IG5ld09iaiA9IHt9IGFzIFQ7XG5cbiAgT2JqZWN0LmtleXMob2JqRGF0YSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgY29uc3QgdmFsdWVPZktleSA9IGdldChvYmpEYXRhLCBrZXkpO1xuICAgIGlmICghcHJlZGljYXRlKHZhbHVlT2ZLZXkpKSB7XG4gICAgICBzZXQobmV3T2JqLCBrZXksIHZhbHVlT2ZLZXkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBuZXdPYmo7XG59O1xuXG4vKipcbiAqIEzhuqV5IGdpw6EgdHLhu4sgdOG7qyDEkeG7kWkgdMaw4bujbmcgdGhlbyDEkcaw4budbmcgZOG6q24gY2jhu4kgxJHhu4tuaFxuICpcbiAqIEjDoG0gbsOgeSBnacO6cCBi4bqhbiB0cnV5IGPhuq1wIHbDoG8gY8OhYyB0aHXhu5ljIHTDrW5oIHPDonUgYsOqbiB0cm9uZyBt4buZdCDEkeG7kWkgdMaw4bujbmcgbeG7mXQgY8OhY2ggYW4gdG/DoG4sXG4gKiB0csOhbmggbOG7l2kga2hpIHRodeG7mWMgdMOtbmgga2jDtG5nIHThu5NuIHThuqFpLlxuICpcbiAqIEBwYXJhbSBvYmogxJDhu5FpIHTGsOG7o25nIG5ndeG7k24gY+G6p24gbOG6pXkgZ2nDoSB0cuG7i1xuICogQHBhcmFtIHBhdGggxJDGsOG7nW5nIGThuqtuIMSR4bq/biB0aHXhu5ljIHTDrW5oIGPhuqduIGzhuqV5LiBDw7MgdGjhu4MgbMOgOlxuICogICAtIENodeG7l2k6ICd1c2VyLnByb2ZpbGUubmFtZScgaG/hurdjICdpdGVtc1swXS50aXRsZSdcbiAqICAgLSBN4bqjbmc6IFsndXNlcicsICdwcm9maWxlJywgJ25hbWUnXSBob+G6t2MgWydpdGVtcycsICcwJywgJ3RpdGxlJ11cbiAqICAgLSBDaHXhu5dpIHLhu5duZyAnJzogdHLhuqMgduG7gSBjaMOtbmggxJHhu5FpIHTGsOG7o25nIGfhu5FjXG4gKiBAcGFyYW0gZGVmYXVsdFZhbHVlIEdpw6EgdHLhu4sgbeG6t2MgxJHhu4tuaCB0cuG6oyB24buBIGtoaSBraMO0bmcgdMOsbSB0aOG6pXkgdGh14buZYyB0w61uaCAobeG6t2MgxJHhu4tuaDogdW5kZWZpbmVkKVxuICogQHBhcmFtIGtlZXBMYXN0VmFsdWVJZlNpZ25hbCBDw7MgZ2nhu68gbmd1ecOqbiBzaWduYWwgY3Xhu5FpIGPDuW5nIGhheSBraMO0bmcgKG3hurdjIMSR4buLbmg6IGZhbHNlIC0gc+G6vSBn4buNaSBzaWduYWwoKSlcbiAqIEByZXR1cm5zIEdpw6EgdHLhu4sgdMOsbSDEkcaw4bujYyBob+G6t2MgZ2nDoSB0cuG7iyBt4bq3YyDEkeG7i25oXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFbDrSBk4bulIGPGoSBi4bqjblxuICogY29uc3QgdXNlciA9IHsgbmFtZTogJ0pvaG4nLCBhZ2U6IDMwIH07XG4gKiBnZXQodXNlciwgJ25hbWUnKTsgLy8gJ0pvaG4nXG4gKiBnZXQodXNlciwgJ2VtYWlsJyk7IC8vIHVuZGVmaW5lZFxuICogZ2V0KHVzZXIsICdlbWFpbCcsICduby1lbWFpbCcpOyAvLyAnbm8tZW1haWwnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRydXnhu4FuIHBhdGggcuG7l25nIC0gdHLhuqMgduG7gSBjaMOtbmggxJHhu5FpIHTGsOG7o25nIGfhu5FjXG4gKiBjb25zdCBkYXRhID0geyBuYW1lOiAnQWxpY2UnLCBhZ2U6IDI1IH07XG4gKiBnZXQoZGF0YSwgJycpOyAvLyB7IG5hbWU6ICdBbGljZScsIGFnZTogMjUgfSAoY2jDrW5oIMSR4buRaSB0xrDhu6NuZyBkYXRhKVxuICogZ2V0KGRhdGEsICcnLCAnZGVmYXVsdCcpOyAvLyB7IG5hbWU6ICdBbGljZScsIGFnZTogMjUgfSAoYuG7jyBxdWEgZGVmYXVsdFZhbHVlKVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUcnV5IGPhuq1wIHRodeG7mWMgdMOtbmggc8OidVxuICogY29uc3QgZGF0YSA9IHtcbiAqICAgdXNlcjoge1xuICogICAgIHByb2ZpbGU6IHtcbiAqICAgICAgIG5hbWU6ICdBbGljZScsXG4gKiAgICAgICBzZXR0aW5nczogeyB0aGVtZTogJ2RhcmsnIH1cbiAqICAgICB9XG4gKiAgIH1cbiAqIH07XG4gKiBnZXQoZGF0YSwgJ3VzZXIucHJvZmlsZS5uYW1lJyk7IC8vICdBbGljZSdcbiAqIGdldChkYXRhLCAndXNlci5wcm9maWxlLnNldHRpbmdzLnRoZW1lJyk7IC8vICdkYXJrJ1xuICogZ2V0KGRhdGEsICd1c2VyLnByb2ZpbGUuYXZhdGFyJywgJ2RlZmF1bHQuanBnJyk7IC8vICdkZWZhdWx0LmpwZydcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVHJ1eSBj4bqtcCBt4bqjbmdcbiAqIGNvbnN0IGl0ZW1zID0gW1xuICogICB7IG5hbWU6ICdJdGVtIDEnLCBwcmljZTogMTAwIH0sXG4gKiAgIHsgbmFtZTogJ0l0ZW0gMicsIHByaWNlOiAyMDAgfVxuICogXTtcbiAqIGdldChpdGVtcywgJ1swXS5uYW1lJyk7IC8vICdJdGVtIDEnXG4gKiBnZXQoaXRlbXMsICdbMV0ubmFtZScpOyAvLyAnSXRlbSAyJ1xuICogZ2V0KGl0ZW1zLCAnWzJdLm5hbWUnLCAnTm90IGZvdW5kJyk7IC8vICdOb3QgZm91bmQnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFPhu60gZOG7pW5nIHbhu5tpIG3huqNuZyBwYXRoXG4gKiBjb25zdCBuZXN0ZWQgPSB7IGE6IHsgYjogeyBjOiAnZGVlcCB2YWx1ZScgfSB9IH07XG4gKiBnZXQobmVzdGVkLCBbJ2EnLCAnYicsICdjJ10pOyAvLyAnZGVlcCB2YWx1ZSdcbiAqIGdldChuZXN0ZWQsIFsnYScsICdiJywgJ2QnXSwgJ2RlZmF1bHQnKTsgLy8gJ2RlZmF1bHQnXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRyxrDhu51uZyBo4bujcCDEkeG6t2MgYmnhu4d0XG4gKiBnZXQobnVsbCwgJ2FueS5wYXRoJyk7IC8vIHVuZGVmaW5lZFxuICogZ2V0KHVuZGVmaW5lZCwgJ2FueS5wYXRoJywgJ2ZhbGxiYWNrJyk7IC8vICdmYWxsYmFjaydcbiAqL1xuZXhwb3J0IGNvbnN0IGdldCA9IDxUID0gYW55PihvYmo6IGFueSwgcGF0aDogc3RyaW5nIHwgc3RyaW5nW10sIGRlZmF1bHRWYWx1ZTogYW55ID0gdW5kZWZpbmVkLCBrZWVwTGFzdFZhbHVlSWZTaWduYWw/OiBib29sZWFuKTogVCA9PiB7XG4gIGlmIChpc05pbChvYmopKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgfVxuICB3aGlsZSAoaXNTaWduYWwob2JqKSkge1xuICAgIG9iaiA9IG9iaigpO1xuICB9XG4gIGlmIChwYXRoID09PSAnJykge1xuICAgIHJldHVybiBvYmogYXMgVDtcbiAgfVxuICBpZiAob2JqIGluc3RhbmNlb2YgSHR0cFBhcmFtcykge1xuICAgIHJldHVybiAob2JqLmdldChgJHtwYXRofWApID8/IGRlZmF1bHRWYWx1ZSkgYXMgVDtcbiAgfVxuICBpZiAob2JqIGluc3RhbmNlb2YgRE9NUmVjdCkge1xuICAgIHJldHVybiBvYmpbcGF0aCBhcyBrZXlvZiBET01SZWN0XSBhcyBUO1xuICB9XG5cbiAgY29uc3QgcGF0aHMgPSBBcnJheS5pc0FycmF5KHBhdGgpXG4gICAgPyBwYXRoXG4gICAgOiBwYXRoXG4gICAgICAgIC5yZXBsYWNlKC9cXFsoXFxkKyldL2csICcuJDEnKVxuICAgICAgICAuc3BsaXQoJy4nKVxuICAgICAgICAuZmlsdGVyKChrZXkpID0+IGtleSk7XG4gIGZvciAoY29uc3QgaW5kZXggaW4gcGF0aHMpIHtcbiAgICBjb25zdCBrZXkgPSBwYXRoc1tpbmRleF07XG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIENTU1N0eWxlRGVjbGFyYXRpb24pIHtcbiAgICAgIG9iaiA9IG9ialtrZXkgYXMga2V5b2YgQ1NTU3R5bGVEZWNsYXJhdGlvbl0gYXMgVDtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChvYmogaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgb2JqID0gb2JqW2tleSBhcyBrZXlvZiBIVE1MRWxlbWVudF0gYXMgVDtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoaXNOaWwob2JqKSB8fCAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWwgPSBpc1NpZ25hbChvYmpba2V5XSkgJiYgIWtlZXBMYXN0VmFsdWVJZlNpZ25hbCA/IG9ialtrZXldKCkgOiBvYmpba2V5XTtcblxuICAgIG9iaiA9IHZhbDtcbiAgfVxuXG4gIHJldHVybiBvYmogPz8gZGVmYXVsdFZhbHVlO1xufTtcblxuLyoqXG4gKiBUaGnhur90IGzhuq1wIGdpw6EgdHLhu4sgY2hvIG3hu5l0IHRodeG7mWMgdMOtbmggdHJvbmcgxJHhu5FpIHTGsOG7o25nIHRoZW8gxJHGsOG7nW5nIGThuqtuIGNo4buJIMSR4buLbmhcbiAqIEBwYXJhbSBvYmogxJDhu5FpIHTGsOG7o25nIGPhuqduIHRoaeG6v3QgbOG6rXAgZ2nDoSB0cuG7i1xuICogQHBhcmFtIHBhdGggxJDGsOG7nW5nIGThuqtuIMSR4bq/biB0aHXhu5ljIHTDrW5oLCBjw7MgdGjhu4MgbMOgIGNodeG7l2kgKHZkOiAnYS5iLmMnKSBob+G6t2MgbeG6o25nICh2ZDogWydhJywgJ2InLCAnYyddKVxuICogQHBhcmFtIHZhbHVlIEdpw6EgdHLhu4sgY+G6p24gdGhp4bq/dCBs4bqtcFxuICogQHJldHVybnMgxJDhu5FpIHTGsOG7o25nIHNhdSBraGkgxJHDoyB0aGnhur90IGzhuq1wIGdpw6EgdHLhu4tcbiAqIEB0aHJvd3MgRXJyb3IgbuG6v3UgdGhhbSBz4buRIMSR4bqndSB0acOqbiBraMO0bmcgcGjhuqNpIGzDoCDEkeG7kWkgdMaw4bujbmdcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBvYmogPSB7IGE6IHsgYjogMSB9IH07XG4gKiBzZXQob2JqLCAnYS5iJywgMik7IC8vIHsgYTogeyBiOiAyIH0gfVxuICovXG5leHBvcnQgY29uc3Qgc2V0ID0gPFQgPSBhbnk+KG9iajogYW55LCBwYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSwgdmFsdWU6IGFueSwgb3B0aW9ucz86IHsgdmFsdWVEZWZhdWx0UGF0aE9iamVjdFVuZGVmaW5lZD86IGFueTsgdmFsdWVEZWZhdWx0UGF0aEFycmF5VW5kZWZpbmVkPzogYW55IH0pOiBUID0+IHtcbiAgaWYgKCFvYmogfHwgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnICYmICFpc1NpZ25hbChvYmopKSB8fCAoaXNTaWduYWwob2JqKSAmJiB0eXBlb2Ygb2JqKCkgIT09ICdvYmplY3QnKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gIH1cblxuICBpZiAob2JqIGluc3RhbmNlb2YgSHR0cFBhcmFtcykge1xuICAgIHJldHVybiBvYmouc2V0KGAke3BhdGh9YCwgdmFsdWUpIGFzIFQ7XG4gIH1cblxuICBjb25zdCBwYXRoQXJyYXkgPSBBcnJheS5pc0FycmF5KHBhdGgpXG4gICAgPyBwYXRoXG4gICAgOiBwYXRoXG4gICAgICAgIC5yZXBsYWNlKC9cXFsoXFxkKyldL2csICcuWyQxXScpXG4gICAgICAgIC5zcGxpdCgnLicpXG4gICAgICAgIC5maWx0ZXIoKGtleSkgPT4ga2V5KTtcblxuICBsZXQgY3VycmVudE9iamVjdEJ5S2V5OiBhbnkgPSBpc1NpZ25hbChvYmopID8gb2JqKCkgOiBvYmo7XG4gIGxldCBwcmVPYmplY3RCeUtleSA9IG9iajtcblxuICBwYXRoQXJyYXkuZm9yRWFjaCgoa2V5LCBpbmRleCkgPT4ge1xuICAgIGlmIChpbmRleCA8IHBhdGhBcnJheS5sZW5ndGggLSAxKSB7XG4gICAgICBpZiAoIShrZXkgaW4gY3VycmVudE9iamVjdEJ5S2V5KSB8fCAodHlwZW9mIGN1cnJlbnRPYmplY3RCeUtleVtrZXldICE9PSAnb2JqZWN0JyAmJiAhaXNTaWduYWwoY3VycmVudE9iamVjdEJ5S2V5W2tleV0pKSkge1xuICAgICAgICBjb25zdCBuZXh0S2V5ID0gcGF0aEFycmF5W2luZGV4ICsgMV07XG4gICAgICAgIGtleSA9IGtleS5yZXBsYWNlKC9cXFsoXFxkKyldL2csICckMScpO1xuICAgICAgICBpZiAoaXNOaWwoY3VycmVudE9iamVjdEJ5S2V5W2tleV0pKSB7XG4gICAgICAgICAgY3VycmVudE9iamVjdEJ5S2V5W2tleV0gPSAvXFxbKFxcZCspXS9nLnRlc3QobmV4dEtleSkgPyAob3B0aW9ucz8udmFsdWVEZWZhdWx0UGF0aEFycmF5VW5kZWZpbmVkID8/IFtdKSA6IChvcHRpb25zPy52YWx1ZURlZmF1bHRQYXRoT2JqZWN0VW5kZWZpbmVkID8/IHt9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY3VycmVudE9iamVjdEJ5S2V5ID0ga2V5ID8gY3VycmVudE9iamVjdEJ5S2V5W2tleV0gOiBjdXJyZW50T2JqZWN0QnlLZXk7XG4gICAgICBwcmVPYmplY3RCeUtleSA9IGN1cnJlbnRPYmplY3RCeUtleTtcbiAgICAgIGN1cnJlbnRPYmplY3RCeUtleSA9IGlzU2lnbmFsKGN1cnJlbnRPYmplY3RCeUtleSkgPyBjdXJyZW50T2JqZWN0QnlLZXkoKSA6IGN1cnJlbnRPYmplY3RCeUtleTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGN1cnJlbnRPYmplY3RCeUtleSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHw6FuIGdpw6EgdHLhu4sg4bufIGN14buRaSDEkcaw4budbmcgZOG6q25cbiAgICBrZXkgPSBrZXkucmVwbGFjZSgvXFxbKFxcZCspXS9nLCAnJDEnKTtcbiAgICBjb25zdCB2YWx1ZU9mS2V5ID0gY3VycmVudE9iamVjdEJ5S2V5W2tleV07XG4gICAgY29uc3QgdmFsdWVPZktleUlzU2lnbmFsID0gaXNTaWduYWwodmFsdWVPZktleSk7XG5cbiAgICBpZiAodmFsdWVPZktleUlzU2lnbmFsICYmICh0eXBlb2YgdmFsdWVPZktleSgpICE9PSAnb2JqZWN0JyB8fCB2YWx1ZU9mS2V5KCkgPT09IG51bGwpKSB7XG4gICAgICAodmFsdWVPZktleSBhcyBXcml0YWJsZVNpZ25hbDxhbnk+KS5zZXQoaXNTaWduYWwodmFsdWUpID8gdmFsdWUoKSA6IHZhbHVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGlzU2lnbmFsKHByZU9iamVjdEJ5S2V5KSkge1xuICAgICAgKHByZU9iamVjdEJ5S2V5IGFzIFdyaXRhYmxlU2lnbmFsPGFueT4pLnVwZGF0ZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGFPZktleSA9IGRhdGFba2V5XTtcbiAgICAgICAgaWYgKGlzTmlsKGRhdGFPZktleSkgfHwgIXZhbHVlT2ZLZXlJc1NpZ25hbCkge1xuICAgICAgICAgIGRhdGFba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlT2ZLZXlJc1NpZ25hbCkge1xuICAgICAgICAgICh2YWx1ZU9mS2V5IGFzIFdyaXRhYmxlU2lnbmFsPGFueT4pLnNldChpc1NpZ25hbCh2YWx1ZSkgPyB2YWx1ZSgpIDogdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgICByZXR1cm4gWy4uLmRhdGFdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLmRhdGEgfTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodmFsdWVPZktleUlzU2lnbmFsKSB7XG4gICAgICAodmFsdWVPZktleSBhcyBXcml0YWJsZVNpZ25hbDxhbnk+KS5zZXQoaXNTaWduYWwodmFsdWUpID8gdmFsdWUoKSA6IHZhbHVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY3VycmVudE9iamVjdEJ5S2V5W2tleV0gPSB2YWx1ZTtcbiAgfSk7XG5cbiAgcmV0dXJuIG9iajtcbn07XG5cbi8qKlxuICogVOG6oW8gbeG7mXQgYuG6o24gc2FvIHPDonUgY+G7p2EgbeG7mXQgxJHhu5FpIHTGsOG7o25nIGhv4bq3YyBnacOhIHRy4buLIGLhuqV0IGvhu7NcbiAqIEBwYXJhbSBkYXRhIEThu68gbGnhu4d1IGPhuqduIHNhbyBjaMOpcFxuICogQHBhcmFtIG9wdGlvbnMgVMO5eSBjaOG7jW4gY+G6pXUgaMOsbmhcbiAqIEBwYXJhbSBvcHRpb25zLmlnbm9yZVNpZ25hbCBO4bq/dSB0cnVlLCBz4bq9IGtow7RuZyBzYW8gY2jDqXAgY8OhYyBzaWduYWwgbcOgIHRy4bqjIHbhu4Egc2lnbmFsIGfhu5FjXG4gKiBAcGFyYW0gc2VlbiBXZWFrTWFwIMSR4buDIHRoZW8gZMO1aSBjw6FjIHRoYW0gY2hp4bq/dSDEkcOjIMSRxrDhu6NjIHNhbyBjaMOpcCwgdHLDoW5oIGzhurdwIHbDtCBo4bqhbiB24bubaSBjw6FjIHRoYW0gY2hp4bq/dSB2w7JuZ1xuICogQHJldHVybnMgQuG6o24gc2FvIHPDonUgY+G7p2EgZOG7ryBsaeG7h3UgxJHhuqd1IHbDoG9cbiAqIEBleGFtcGxlXG4gKiBjb25zdCBvYmogPSB7XG4gKiAgIGE6IDEsXG4gKiAgIGI6IHsgYzogMiB9LFxuICogICBkOiBbMSwgMiwgM11cbiAqIH07XG4gKiBjb25zdCBjbG9uZSA9IGNsb25lRGVlcChvYmopO1xuICogLy8gY2xvbmUgbMOgIG3hu5l0IGLhuqNuIHNhbyBob8OgbiB0b8OgbiDEkeG7mWMgbOG6rXAgY+G7p2Egb2JqXG4gKi9cbmV4cG9ydCBjb25zdCBjbG9uZURlZXAgPSA8VCA9IGFueT4oZGF0YTogYW55LCBvcHRpb25zID0geyBpZ25vcmVTaWduYWw6IGZhbHNlIH0sIHNlZW4gPSBuZXcgV2Vha01hcCgpKTogVCA9PiB7XG4gIGlmIChkYXRhID09PSBudWxsIHx8ICh0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcgJiYgIWlzU2lnbmFsKGRhdGEpKSB8fCBpc0Rhbmdlcm91c09iamVjdChkYXRhKSkge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgaWYgKHNlZW4uaGFzKGRhdGEpKSB7XG4gICAgcmV0dXJuIHNlZW4uZ2V0KGRhdGEpO1xuICB9XG5cbiAgaWYgKGRhdGEgaW5zdGFuY2VvZiBIdHRwUGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBVdGlsc0h0dHBQYXJhbXNSZXF1ZXN0KHVuZGVmaW5lZCwgZGF0YSkgYXMgVDtcbiAgfVxuXG4gIGlmIChkYXRhIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBuZXcgRGF0ZShkYXRhLmdldFRpbWUoKSkgYXMgVDtcbiAgfVxuXG4gIGlmIChkYXlqcy5pc0RheWpzKGRhdGEpKSB7XG4gICAgcmV0dXJuIGdldERheWpzKHsgZGF0ZTogZGF0YS52YWx1ZU9mKCkgfSkgYXMgVDtcbiAgfVxuXG4gIGlmIChkYXRhIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoZGF0YS5zb3VyY2UsIGRhdGEuZmxhZ3MpIGFzIFQ7XG4gIH1cblxuICBpZiAoZGF0YSBpbnN0YW5jZW9mIE1hcCkge1xuICAgIGNvbnN0IG1hcENvcHkgPSBuZXcgTWFwKCk7XG4gICAgc2Vlbi5zZXQoZGF0YSwgbWFwQ29weSk7XG4gICAgZGF0YS5mb3JFYWNoKCh2YWwsIGtleSkgPT4ge1xuICAgICAgbWFwQ29weS5zZXQoY2xvbmVEZWVwKGtleSwgb3B0aW9ucywgc2VlbiksIGNsb25lRGVlcCh2YWwsIG9wdGlvbnMsIHNlZW4pKTtcbiAgICB9KTtcbiAgICByZXR1cm4gbWFwQ29weSBhcyBUO1xuICB9XG5cbiAgaWYgKGRhdGEgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICBjb25zdCBzZXRDb3B5ID0gbmV3IFNldCgpO1xuICAgIHNlZW4uc2V0KGRhdGEsIHNldENvcHkpO1xuICAgIGRhdGEuZm9yRWFjaCgodmFsKSA9PiB7XG4gICAgICBzZXRDb3B5LmFkZChjbG9uZURlZXAodmFsLCBvcHRpb25zLCBzZWVuKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHNldENvcHkgYXMgVDtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgc2Vlbi5zZXQoZGF0YSwgZGF0YS5tYXAoKGl0ZW0pID0+IGNsb25lRGVlcChpdGVtLCBvcHRpb25zLCBzZWVuKSkgYXMgVCk7XG4gICAgcmV0dXJuIHNlZW4uZ2V0KGRhdGEpIGFzIFQ7XG4gIH1cblxuICBpZiAoaXNSZXR1cm5Bc0lzT2JqZWN0KGRhdGEpKSB7XG4gICAgcmV0dXJuIGRhdGEgYXMgVDtcbiAgfVxuXG4gIGlmIChpc1NpZ25hbChkYXRhKSkge1xuICAgIGlmIChvcHRpb25zPy5pZ25vcmVTaWduYWwpIHtcbiAgICAgIHJldHVybiBkYXRhIGFzIFQ7XG4gICAgfVxuICAgIHNlZW4uc2V0KGRhdGEsIHNpZ25hbChjbG9uZURlZXAoZGF0YSgpLCBvcHRpb25zLCBzZWVuKSkpO1xuICAgIHJldHVybiBzZWVuLmdldChkYXRhKSBhcyBUO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIHNlZW4uc2V0KGRhdGEsIHJlc3VsdCk7XG4gIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGRhdGFba2V5XTtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBIdHRwUGFyYW1zKSB7XG4gICAgICByZXN1bHRba2V5XSA9IG5ldyBVdGlsc0h0dHBQYXJhbXNSZXF1ZXN0KHVuZGVmaW5lZCwgdmFsdWUpIGFzIFQ7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICByZXN1bHRba2V5XSA9IG5ldyBEYXRlKHZhbHVlLmdldFRpbWUoKSkgYXMgVDtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChkYXlqcy5pc0RheWpzKHZhbHVlKSkge1xuICAgICAgcmVzdWx0W2tleV0gPSBnZXREYXlqcyh7IGRhdGU6IHZhbHVlLnZhbHVlT2YoKSB9KSBhcyBUO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICByZXN1bHRba2V5XSA9IG5ldyBSZWdFeHAodmFsdWUuc291cmNlLCB2YWx1ZS5mbGFncykgYXMgVDtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoaXNSZXR1cm5Bc0lzT2JqZWN0KGRhdGEpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IHZhbHVlO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IGNsb25lRGVlcCh2YWx1ZSwgb3B0aW9ucywgc2Vlbik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdCBhcyBUO1xufTtcblxuLyoqXG4gKiBDaHV54buDbiDEkeG7lWkgbeG7mXQgbeG6o25nIGPDoWMgxJHhu5FpIHTGsOG7o25nIHRow6BuaCBt4buZdCDEkeG7kWkgdMaw4bujbmcgduG7m2kga2jDs2EgxJHGsOG7o2MgY2jhu4kgxJHhu4tuaFxuICogQHBhcmFtIGRhdGEgTeG6o25nIGPDoWMgxJHhu5FpIHTGsOG7o25nIGPhuqduIGNodXnhu4NuIMSR4buVaVxuICogQHBhcmFtIGtleSBUw6puIHRodeG7mWMgdMOtbmggxJHGsOG7o2Mgc+G7rSBk4bulbmcgbMOgbSBraMOzYSB0cm9uZyDEkeG7kWkgdMaw4bujbmcga+G6v3QgcXXhuqNcbiAqIEByZXR1cm5zIMSQ4buRaSB0xrDhu6NuZyB24bubaSBjw6FjIGdpw6EgdHLhu4sgdOG7qyBt4bqjbmcgxJHGsOG7o2MgxJHDoW5oIGtleSB0aGVvIHRodeG7mWMgdMOtbmggxJHDoyBjaOG7iSDEkeG7i25oXG4gKiBAZXhhbXBsZVxuICogY29uc3QgZGF0YSA9IFtcbiAqICAgeyBpZDogMSwgbmFtZTogJ0pvaG4nIH0sXG4gKiAgIHsgaWQ6IDIsIG5hbWU6ICdKYW5lJyB9XG4gKiBdO1xuICoga2V5QnkoZGF0YSwgJ2lkJyk7XG4gKiAvLyBL4bq/dCBxdeG6ozoge1xuICogLy8gICAnMSc6IHsgaWQ6IDEsIG5hbWU6ICdKb2huJyB9LFxuICogLy8gICAnMic6IHsgaWQ6IDIsIG5hbWU6ICdKYW5lJyB9XG4gKiAvLyB9XG4gKi9cbmV4cG9ydCBjb25zdCBrZXlCeSA9IChkYXRhOiBBcnJheTxUWVBFX09CSkVDVD4sIGtleTogc3RyaW5nKTogVFlQRV9PQkpFQ1QgPT4ge1xuICBpZiAoIWRhdGEgfHwgIWRhdGEubGVuZ3RoIHx8ICFrZXkpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgcmV0dXJuIGRhdGEucmVkdWNlKChkaXIsIG5leHRJdGVtKSA9PiB7XG4gICAgY29uc3QgdmFsdWVPZktleSA9IGdldChuZXh0SXRlbSwga2V5KTtcbiAgICBpZiAodHlwZW9mIHZhbHVlT2ZLZXkgIT09ICdzdHJpbmcnICYmIHR5cGVvZiB2YWx1ZU9mS2V5ICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgdmFsdWVPZktleSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gZGlyO1xuICAgIH1cbiAgICBpZiAoIU9iamVjdC5rZXlzKGRpcikuaW5jbHVkZXMoYCR7dmFsdWVPZktleX1gKSkge1xuICAgICAgZGlyW2Ake3ZhbHVlT2ZLZXl9YF0gPSBuZXh0SXRlbTtcbiAgICB9XG4gICAgcmV0dXJuIGRpcjtcbiAgfSwge30pO1xufTtcblxuLyoqXG4gKiBOaMOzbSBjw6FjIMSR4buRaSB0xrDhu6NuZyB0cm9uZyBt4buZdCBt4bqjbmcgdGjDoG5oIGPDoWMgbmjDs20gZOG7sWEgdHLDqm4gbeG7mXQgdGh14buZYyB0w61uaCBj4bulIHRo4buDXG4gKiBAcGFyYW0gZGF0YSBN4bqjbmcgY8OhYyDEkeG7kWkgdMaw4bujbmcgY+G6p24gbmjDs21cbiAqIEBwYXJhbSBrZXkgVMOqbiB0aHXhu5ljIHTDrW5oIMSRxrDhu6NjIHPhu60gZOG7pW5nIGzDoG0ga2jDs2EgbmjDs21cbiAqIEByZXR1cm5zIMSQ4buRaSB0xrDhu6NuZyB24bubaSBjw6FjIGdpw6EgdHLhu4sgdOG7qyBt4bqjbmcgxJHGsOG7o2MgbmjDs20gdGhlbyB0aHXhu5ljIHTDrW5oIMSRw6MgY2jhu4kgxJHhu4tuaFxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGRhdGEgPSBbXG4gKiAgIHsgaWQ6IDEsIG5hbWU6ICdKb2huJyB9LFxuICogICB7IGlkOiAyLCBuYW1lOiAnSmFuZScgfSxcbiAqICAgeyBpZDogMSwgbmFtZTogJ0pvaG4nIH1cbiAqIF07XG4gKiBncm91cEJ5KGRhdGEsICdpZCcpO1xuICogLy8gS+G6v3QgcXXhuqM6IHtcbiAqIC8vICAgJzEnOiBbXG4gKiAvLyAgICAgeyBpZDogMSwgbmFtZTogJ0pvaG4nIH0sXG4gKiAvLyAgICAgeyBpZDogMSwgbmFtZTogJ0pvaG4nIH1cbiAqIC8vICAgXSxcbiAqIC8vICAgJzInOiBbXG4gKiAvLyAgICAgeyBpZDogMiwgbmFtZTogJ0phbmUnIH1cbiAqIC8vIH1cbiAqL1xuZXhwb3J0IGNvbnN0IGdyb3VwQnkgPSAoZGF0YTogQXJyYXk8VFlQRV9PQkpFQ1Q+LCBrZXk6IHN0cmluZyk6IFRZUEVfT0JKRUNUID0+IHtcbiAgaWYgKCFkYXRhIHx8ICFkYXRhLmxlbmd0aCB8fCAhT2JqZWN0LmtleXMoZ2V0KGRhdGEsICcwJykpLmxlbmd0aCB8fCAha2V5KSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIHJldHVybiBkYXRhLnJlZHVjZSgoZGlyLCBuZXh0SXRlbSkgPT4ge1xuICAgIGNvbnN0IHZhbHVlT2ZLZXkgPSBnZXQobmV4dEl0ZW0sIGtleSk7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZU9mS2V5ICE9PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsdWVPZktleSAhPT0gJ251bWJlcicgJiYgdHlwZW9mIHZhbHVlT2ZLZXkgIT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIGRpcjtcbiAgICB9XG4gICAgaWYgKCFPYmplY3Qua2V5cyhkaXIpLmluY2x1ZGVzKGAke3ZhbHVlT2ZLZXl9YCkpIHtcbiAgICAgIGRpcltgJHt2YWx1ZU9mS2V5fWBdID0gW107XG4gICAgfVxuICAgIGRpcltgJHt2YWx1ZU9mS2V5fWBdLnB1c2gobmV4dEl0ZW0pO1xuICAgIHJldHVybiBkaXI7XG4gIH0sIHt9KTtcbn07XG5cbi8qKlxuICogVOG6oW8gbeG7mXQgbeG6o25nIGPDoWMgc+G7kSB04burIGdpw6EgdHLhu4sgYuG6r3QgxJHhuqd1IMSR4bq/biBnacOhIHRy4buLIGvhur90IHRow7pjIHbhu5tpIGLGsOG7m2MgbmjhuqN5IHTDuXkgY2jhu41uXG4gKiBAcGFyYW0gc3RhcnQgR2nDoSB0cuG7iyBi4bqvdCDEkeG6p3UgY+G7p2EgZMOjeSBz4buRLiBO4bq/dSBjaOG7iSBjw7MgbeG7mXQgdGhhbSBz4buRLCDEkcOieSBz4bq9IGzDoCBnacOhIHRy4buLIGvhur90IHRow7pjIHbDoCBnacOhIHRy4buLIGLhuq90IMSR4bqndSBz4bq9IGzDoCAwXG4gKiBAcGFyYW0gZW5kIEdpw6EgdHLhu4sga+G6v3QgdGjDumMgY+G7p2EgZMOjeSBz4buRICh0w7l5IGNo4buNbilcbiAqIEBwYXJhbSBzdGVwIELGsOG7m2MgbmjhuqN5IGdp4buvYSBjw6FjIHPhu5EgdHJvbmcgZMOjeSAodMO5eSBjaOG7jW4pLiBN4bq3YyDEkeG7i25oIGzDoCAxIG7hur91IGVuZCA+IHN0YXJ0LCAtMSBu4bq/dSBlbmQgPCBzdGFydFxuICogQHJldHVybnMgTeG6o25nIGPDoWMgc+G7kSB04burIHN0YXJ0IMSR4bq/biBlbmQgduG7m2kgYsaw4bubYyBuaOG6o3kgc3RlcFxuICogQGV4YW1wbGVcbiAqIHJhbmdlKDQpOyAgICAgIC8vIFswLCAxLCAyLCAzXVxuICogcmFuZ2UoMSwgNSk7ICAgLy8gWzEsIDIsIDMsIDRdXG4gKiByYW5nZSgwLCAyMCwgNSk7IC8vIFswLCA1LCAxMCwgMTVdXG4gKiByYW5nZSg1LCAyKTsgICAvLyBbNSwgNCwgM11cbiAqL1xuZXhwb3J0IGNvbnN0IHJhbmdlID0gKHN0YXJ0OiBudW1iZXIsIGVuZD86IG51bWJlciwgc3RlcD86IG51bWJlcik6IEFycmF5PG51bWJlcj4gPT4ge1xuICBpZiAoZW5kID09PSB1bmRlZmluZWQgfHwgZW5kID09PSBudWxsKSB7XG4gICAgZW5kID0gc3RhcnQ7XG4gICAgc3RhcnQgPSAwO1xuICB9XG5cbiAgaWYgKCFzdGVwKSB7XG4gICAgc3RlcCA9IGVuZCA8IDAgPyAtMSA6IDE7XG4gIH1cblxuICBpZiAoZW5kIDwgc3RhcnQgJiYgc3RlcCA+IDApIHtcbiAgICBzdGVwICo9IC0xO1xuICB9XG5cbiAgY29uc3QgdmFsdWVTdGFydEJ5U3RlcCA9IHN0ZXAgKyBzdGFydDtcbiAgY29uc3QgZGlyZWN0aW9uID0gc3RhcnQgPCBlbmQgPyAnYXNjJyA6ICdkZXNjJztcbiAgaWYgKChkaXJlY3Rpb24gPT09ICdhc2MnICYmICh2YWx1ZVN0YXJ0QnlTdGVwIDwgc3RhcnQgfHwgdmFsdWVTdGFydEJ5U3RlcCA+IGVuZCkpIHx8IChkaXJlY3Rpb24gPT09ICdkZXNjJyAmJiAodmFsdWVTdGFydEJ5U3RlcCA+IHN0YXJ0IHx8IHZhbHVlU3RhcnRCeVN0ZXAgPCBlbmQpKSkge1xuICAgIHJldHVybiBbc3RhcnRdO1xuICB9XG5cbiAgY29uc3QgYXJyID0gbmV3IEFycmF5PG51bWJlcj4oKTtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgTWF0aC5hYnMoZW5kIC0gc3RhcnQpOyBpbmRleCsrKSB7XG4gICAgbGV0IHZhbHVlID0gc3RhcnQgKyBpbmRleCAqIHN0ZXA7XG4gICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICB2YWx1ZSA9IHN0YXJ0O1xuICAgIH1cblxuICAgIGlmICgoZGlyZWN0aW9uID09PSAnYXNjJyAmJiAodmFsdWUgPCBzdGFydCB8fCB2YWx1ZSA+IGVuZCkpIHx8IChkaXJlY3Rpb24gPT09ICdkZXNjJyAmJiAodmFsdWUgPiBzdGFydCB8fCB2YWx1ZSA8IGVuZCkpKSB7XG4gICAgICByZXR1cm4gYXJyO1xuICAgIH1cblxuICAgIGFyci5wdXNoKHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiBhcnI7XG59O1xuXG4vKipcbiAqIFNvIHPDoW5oIGhhaSBnacOhIHRy4buLIGLhuqV0IGvhu7MgY8OzIGLhurFuZyBuaGF1IGhheSBraMO0bmdcbiAqIEBwYXJhbSB2YWx1ZTEgR2nDoSB0cuG7iyB0aOG7qSBuaOG6pXQgY+G6p24gc28gc8OhbmhcbiAqIEBwYXJhbSB2YWx1ZTIgR2nDoSB0cuG7iyB0aOG7qSBoYWkgY+G6p24gc28gc8OhbmhcbiAqIEBwYXJhbSBleGFjdGx5UG9zaXRpb24gQ8OzIHNvIHPDoW5oIGNow61uaCB4w6FjIHbhu4sgdHLDrSBjw6FjIHBo4bqnbiB04butIHRyb25nIG3huqNuZyBoYXkga2jDtG5nXG4gKiBAcmV0dXJucyB0cnVlIG7hur91IGhhaSBnacOhIHRy4buLIGLhurFuZyBuaGF1LCBmYWxzZSBu4bq/dSBraMO0bmcgYuG6sW5nIG5oYXVcbiAqIEBleGFtcGxlXG4gKiBpc0VxdWFsKFsxLDIsM10sIFsxLDIsM10pOyAvLyB0cnVlXG4gKiBpc0VxdWFsKFsxLDIsM10sIFszLDIsMV0pOyAvLyB0cnVlIGtoaSBleGFjdGx5UG9zaXRpb24gPSBmYWxzZVxuICogaXNFcXVhbChbMSwyLDNdLCBbMywyLDFdKTsgLy8gZmFsc2Uga2hpIGV4YWN0bHlQb3NpdGlvbiA9IHRydWVcbiAqIGlzRXF1YWwoe2E6MX0sIHthOjF9KTsgLy8gdHJ1ZVxuICovXG5leHBvcnQgY29uc3QgaXNFcXVhbCA9IChcbiAgdmFsdWUxOiBhbnksXG4gIHZhbHVlMjogYW55LFxuICBvcHRpb25zPzoge1xuICAgIGV4YWN0bHlQb3NpdGlvbj86IGJvb2xlYW47XG4gICAgaWdub3JlRXhhY3RseURhdGFUeXBlPzogYm9vbGVhbjtcbiAgICBpZ25vcmVVbldyYXBTaWduYWw/OiBib29sZWFuO1xuICB9XG4pOiBib29sZWFuID0+IHtcbiAgLy8gSGFuZGxlIHNpZ25hbHNcbiAgaWYgKCFvcHRpb25zPy5pZ25vcmVVbldyYXBTaWduYWwpIHtcbiAgICB2YWx1ZTEgPSBjb252ZXJ0U2lnbmFsVG9PYmplY3QodmFsdWUxKTtcbiAgICB2YWx1ZTIgPSBjb252ZXJ0U2lnbmFsVG9PYmplY3QodmFsdWUyKTtcbiAgfVxuICBjb25zdCB7IGV4YWN0bHlQb3NpdGlvbiA9IGZhbHNlLCBpZ25vcmVFeGFjdGx5RGF0YVR5cGUgPSBmYWxzZSB9ID0gb3B0aW9ucyB8fCB7fTtcblxuICBpZiAodmFsdWUxID09PSB2YWx1ZTIgfHwgKHZhbHVlMSA9PT0gbnVsbCAmJiB2YWx1ZTIgPT09IG51bGwpIHx8ICh2YWx1ZTEgPT09IHVuZGVmaW5lZCAmJiB2YWx1ZTIgPT09IHVuZGVmaW5lZCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChpZ25vcmVFeGFjdGx5RGF0YVR5cGUpIHtcbiAgICByZXR1cm4gaXNFcXVhbChpc05pbCh2YWx1ZTEpID8gdW5kZWZpbmVkIDogYCR7dmFsdWUxfWAsIGlzTmlsKHZhbHVlMikgPyB1bmRlZmluZWQgOiBgJHt2YWx1ZTJ9YCk7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlMSAhPT0gJ29iamVjdCcgfHwgdHlwZW9mIHZhbHVlMiAhPT0gJ29iamVjdCcgfHwgKEFycmF5LmlzQXJyYXkodmFsdWUxKSAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZTIpKSB8fCAoIUFycmF5LmlzQXJyYXkodmFsdWUxKSAmJiBBcnJheS5pc0FycmF5KHZhbHVlMikpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUxKSkge1xuICAgIGlmICh2YWx1ZTEubGVuZ3RoICE9PSB2YWx1ZTIubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghZXhhY3RseVBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gIXZhbHVlMS5zb21lKChpdGVtKSA9PiAhdmFsdWUyLmluY2x1ZGVzKGl0ZW0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gIXZhbHVlMS5zb21lKChpdGVtLCBpbmRleCkgPT4gIWlzRXF1YWwoaXRlbSwgdmFsdWUyW2luZGV4XSwgb3B0aW9ucykpO1xuICB9XG5cbiAgaWYgKE9iamVjdC5rZXlzKHZhbHVlMSkubGVuZ3RoICE9PSBPYmplY3Qua2V5cyh2YWx1ZTIpLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gIU9iamVjdC5rZXlzKHZhbHVlMSkuc29tZSgoa2V5KSA9PiAhaXNFcXVhbCh2YWx1ZTFba2V5XSwgdmFsdWUyW2tleV0sIG9wdGlvbnMpKTtcbn07XG5cbi8qKlxuICogTG/huqFpIGLhu48gY8OhYyBwaOG6p24gdOG7rSB0csO5bmcgbOG6t3AgdHJvbmcgbeG6o25nIGThu7FhIHRyw6puIG3hu5l0IHRodeG7mWMgdMOtbmggY2jhu4kgxJHhu4tuaFxuICogQHBhcmFtIGRhdGEgTeG6o25nIGThu68gbGnhu4d1IGPhuqduIHjhu60gbMO9XG4gKiBAcGFyYW0ga2V5IFTDqm4gdGh14buZYyB0w61uaCBkw7luZyDEkeG7gyBzbyBzw6FuaCB0csO5bmcgbOG6t3AuIE7hur91IGtow7RuZyBjw7Mga2V5IHRow6wgc28gc8OhbmggdHLhu7FjIHRp4bq/cCBnacOhIHRy4buLXG4gKiBAcmV0dXJucyBN4bqjbmcgbeG7m2kgY2jhu6lhIGPDoWMgcGjhuqduIHThu60ga2jDtG5nIHRyw7luZyBs4bq3cFxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGFyciA9IFtcbiAqICAgeyBpZDogMSwgbmFtZTogJ0EnIH0sXG4gKiAgIHsgaWQ6IDIsIG5hbWU6ICdCJyB9LFxuICogICB7IGlkOiAxLCBuYW1lOiAnQycgfVxuICogXTtcbiAqIHVuaXFCeShhcnIsICdpZCcpOyAvLyBbeyBpZDogMSwgbmFtZTogJ0EnIH0sIHsgaWQ6IDIsIG5hbWU6ICdCJyB9XVxuICpcbiAqIGNvbnN0IG51bWJlcnMgPSBbMSwgMiwgMiwgMywgM107XG4gKiB1bmlxQnkobnVtYmVycyk7IC8vIFsxLCAyLCAzXVxuICpcbiAqIGNvbnN0IG51bWJlcnNTaWduYWwgPSBbc2lnbmFsKDEpLCBzaWduYWwoMiksIHNpZ25hbCgzKSwgc2lnbmFsKDIpLCBzaWduYWwoNSksIHNpZ25hbCg0KSwgc2lnbmFsKDEpLCBzaWduYWwoNiksIHNpZ25hbCg3KSwgc2lnbmFsKDYpXTtcbiAqIHVuaXFCeShudW1iZXJzU2lnbmFsKTsgLy8gW3NpZ25hbCgxKSwgc2lnbmFsKDIpLCBzaWduYWwoMyksIHNpZ25hbCg1KSwgc2lnbmFsKDQpLCBzaWduYWwoNiksIHNpZ25hbCg3KV1cbiAqL1xuZXhwb3J0IGNvbnN0IHVuaXFCeSA9IDxUPihkYXRhOiBBcnJheTxUPiwga2V5Pzogc3RyaW5nKTogQXJyYXk8VD4gPT4ge1xuICBpZiAoIWtleSB8fCAhZGF0YT8ubGVuZ3RoIHx8IHR5cGVvZiBnZXQoZGF0YSwgJzAnKSAhPT0gJ29iamVjdCcpIHtcbiAgICAvLyBY4butIGzDvSBt4bqjbmcgY2jhu6lhIHNpZ25hbCB2YWx1ZXNcbiAgICBpZiAoZGF0YVswXSAmJiBpc1NpZ25hbChkYXRhWzBdKSkge1xuICAgICAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgICByZXR1cm4gZGF0YS5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBgJHtnZXQoaXRlbSwgJycpfWA7XG4gICAgICAgIGlmIChzZWVuLmhhcyh2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgc2Vlbi5hZGQodmFsdWUpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBY4butIGzDvSBt4bqjbmcgcHJpbWl0aXZlIHZhbHVlc1xuICAgIHJldHVybiBBcnJheS5mcm9tKG5ldyBTZXQoZGF0YSkpO1xuICB9XG5cbiAgY29uc3QgZGF0YVVuaXF1ZSA9IGtleUJ5KGRhdGEgYXMgQXJyYXk8UmVjb3JkPHN0cmluZywgYW55Pj4sIGtleSk7XG5cbiAgcmV0dXJuIE9iamVjdC5rZXlzKGRhdGFVbmlxdWUpLm1hcCgoa2V5KSA9PiBkYXRhVW5pcXVlW2tleV0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlSW50ZXJmYWNlID0gKG9iajogYW55LCBpbnRlcmZhY2VOYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBnZW5lcmF0ZVR5cGUgPSAodmFsdWU6IGFueSk6IHN0cmluZyA9PiB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gJ251bGwnO1xuICAgIH1cbiAgICBjb25zdCB0eXBlID0gdHlwZW9mIHZhbHVlO1xuXG4gICAgaWYgKHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gJ3N0cmluZyc7XG4gICAgfVxuICAgIGlmICh0eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuICdudW1iZXInO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gJ2Jvb2xlYW4nO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiAnYW55JztcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICByZXR1cm4gJ0RhdGUnO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgcmV0dXJuICdSZWdFeHAnO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gJ0FycmF5PGFueT4nO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGBBcnJheTwke2dlbmVyYXRlVHlwZSh2YWx1ZVswXSl9PmA7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICBsZXQgaW50ZXJmYWNlU3RyID0gJ3tcXG4nO1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gdmFsdWUpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkge1xuICAgICAgICAgIGNvbnN0IHZhbHVlVHlwZSA9IGdlbmVyYXRlVHlwZSh2YWx1ZVtrZXldKTtcbiAgICAgICAgICBpbnRlcmZhY2VTdHIgKz0gYCAgJHtrZXl9OiAke3ZhbHVlVHlwZX07XFxuYDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaW50ZXJmYWNlU3RyICs9ICd9JztcbiAgICAgIHJldHVybiBpbnRlcmZhY2VTdHI7XG4gICAgfVxuXG4gICAgcmV0dXJuICdhbnknO1xuICB9O1xuXG4gIGNvbnN0IGludGVyZmFjZVN0ciA9IGBpbnRlcmZhY2UgJHtpbnRlcmZhY2VOYW1lfSAke2dlbmVyYXRlVHlwZShvYmopfWA7XG4gIHJldHVybiBpbnRlcmZhY2VTdHI7XG59O1xuIl19
|
|
@@ -122,4 +122,10 @@ export const convertSignalToObject = (data, isCloneDeep = true, seen = new WeakM
|
|
|
122
122
|
}
|
|
123
123
|
return result;
|
|
124
124
|
};
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHdvLXdheS1zaWduYWwtb2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy11aS91dGlscy9zcmMvdHdvLXdheS1zaWduYWwtb2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFdEM7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFVLElBQVMsRUFBRSxvQkFBb0IsR0FBRyxJQUFJLEVBQUUscUJBQXFCLEdBQUcsS0FBSyxFQUFFLHNDQUFzQyxHQUFHLEtBQUssRUFBRSxJQUFJLEdBQUcsSUFBSSxPQUFPLEVBQUUsRUFBSyxFQUFFO0lBQy9MLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDbkUsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBTSxDQUFDO0lBQzVELENBQUM7SUFDRCxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNuQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLHNDQUFzQyxFQUFFLENBQUM7WUFDNUMs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LENBQUM7UUFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFZLENBQUMsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELDZDQUE2QztJQUM3QyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDN0IsT0FBTyxJQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUF3QixXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzVELElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BELDZEQUE2RDtZQUM3RCxJQUFJLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQ3BCLFNBQVM7WUFDWCxDQUFDO1lBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDM0YsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLE1BQVcsQ0FBQztBQUNyQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBpc1NpZ25hbCwgc2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNBcnJheU9iamVjdCwgaXNBc3luY09iamVjdCwgaXNNYXBPYmplY3QsIGlzUmV0dXJuQXNJc09iamVjdCwgaXNTZXRPYmplY3QgfSBmcm9tICcuL2Rhbmdlcm91cy1vYmplY3QnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnLi9oZWxwZXJzJztcblxuLyoqXG4gKiBDaHV54buDbiDEkeG7lWkgbeG7mXQgxJHhu5FpIHTGsOG7o25nIGhv4bq3YyBnacOhIHRy4buLIHRow6BuaCBzaWduYWxcbiAqIEBwYXJhbSBkYXRhIEThu68gbGnhu4d1IGPhuqduIGNodXnhu4NuIMSR4buVaSB0aMOgbmggc2lnbmFsXG4gKiBAcGFyYW0gY2xvbmVEZWVwSWZOb3RTaWduYWwgQ8OzIHRo4buxYyBoaeG7h24gc2FvIGNow6lwIHPDonUgZOG7ryBsaeG7h3UgdHLGsOG7m2Mga2hpIGNodXnhu4NuIMSR4buVaSBoYXkga2jDtG5nIG7hur91IGRhdGEga2jDtG5nIHBo4bqjaSBzaWduYWwuIE3hurdjIMSR4buLbmggbMOgIHRydWUuXG4gKiDEkOG6t3QgZmFsc2UgbuG6v3UgbXXhu5FuIGdp4buvIG5ndXnDqm4gdGhhbSBjaGnhur91IMSR4bq/biBk4buvIGxp4buHdSBn4buRYy5cbiAqIE7hur91IG114buRbiBzYW8gY2jDqXAgc8OidSDEkeG7kWkgdMaw4bujbmcgc2lnbmFsIHRow6wgxJHhurd0IGNsb25lRGVlcElmTm90U2lnbmFsIGzDoCB0cnVlIHbDoCBhY2NlcHRDb252ZXJ0T2JqZWN0SW5uZXJXcml0YWJsZVNpZ25hbCBsw6AgdHJ1ZS5cbiAqIEBwYXJhbSBpc1NpZ25hbFByaW1pdGl2ZVR5cGUgQ8OzIGNodXnhu4NuIMSR4buVaSBjw6FjIGdpw6EgdHLhu4sgbmd1ecOqbiB0aOG7p3kgKHN0cmluZywgbnVtYmVyLCBib29sZWFuKSB0aMOgbmggc2lnbmFsIGhheSBraMO0bmcuIE3hurdjIMSR4buLbmggbMOgIGZhbHNlLlxuICogxJDhurd0IHRydWUgbuG6v3UgbXXhu5FuIGLhu41jIGPDoWMgZ2nDoSB0cuG7iyBuZ3V5w6puIHRo4buneSB0cm9uZyBzaWduYWwuXG4gKiBAcGFyYW0gYWNjZXB0Q29udmVydE9iamVjdElubmVyV3JpdGFibGVTaWduYWwgQ8OzIHRp4bq/cCB04bulYyB0w6xtIGtp4bq/bSB2w6AgY2h1eeG7g24gxJHhu5VpIGPDoWMgxJHhu5FpIHTGsOG7o25nIGLDqm4gdHJvbmcgc2lnbmFsIGhheSBraMO0bmcuIE3hurdjIMSR4buLbmggbMOgIGZhbHNlLlxuICogxJDhurd0IHRydWUgbuG6v3UgbXXhu5FuIHTDrG0gdsOgIGNodXnhu4NuIMSR4buVaSBjw6FjIMSR4buRaSB0xrDhu6NuZyBiw6puIHRyb25nIHNpZ25hbCBob+G6t2MgY2jDrW5oIG7DsyB0aMOgbmggc2lnbmFsIG3hu5tpLlxuICogQHJldHVybnMgROG7ryBsaeG7h3UgxJHDoyDEkcaw4bujYyBjaHV54buDbiDEkeG7lWkgdGhlbyBraeG7g3UgVFxuICovXG5leHBvcnQgY29uc3QgY29udmVydE9iamVjdFRvU2lnbmFsID0gPFQgPSBhbnk+KGRhdGE6IGFueSwgY2xvbmVEZWVwSWZOb3RTaWduYWwgPSB0cnVlLCBpc1NpZ25hbFByaW1pdGl2ZVR5cGUgPSBmYWxzZSwgYWNjZXB0Q29udmVydE9iamVjdElubmVyV3JpdGFibGVTaWduYWwgPSBmYWxzZSwgc2VlbiA9IG5ldyBXZWFrTWFwKCkpOiBUID0+IHtcbiAgaWYgKChkYXRhID09PSBudWxsIHx8IHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0JykgJiYgIWlzU2lnbmFsKGRhdGEpKSB7XG4gICAgcmV0dXJuIChpc1NpZ25hbFByaW1pdGl2ZVR5cGUgPyBzaWduYWwoZGF0YSkgOiBkYXRhKSBhcyBUO1xuICB9XG4gIGlmIChzZWVuLmhhcyhkYXRhKSkge1xuICAgIHJldHVybiBzZWVuLmdldChkYXRhKTtcbiAgfVxuXG4gIGlmIChpc1NpZ25hbChkYXRhKSkge1xuICAgIGlmICghYWNjZXB0Q29udmVydE9iamVjdElubmVyV3JpdGFibGVTaWduYWwpIHtcbiAgICAgIHJldHVybiBkYXRhIGFzIFQ7XG4gICAgfVxuICAgIHNlZW4uc2V0KGRhdGEsIGNvbnZlcnRPYmplY3RUb1NpZ25hbChkYXRhKCksIGNsb25lRGVlcElmTm90U2lnbmFsLCBpc1NpZ25hbFByaW1pdGl2ZVR5cGUsIGFjY2VwdENvbnZlcnRPYmplY3RJbm5lcldyaXRhYmxlU2lnbmFsLCBzZWVuKSk7XG4gICAgcmV0dXJuIHNlZW4uZ2V0KGRhdGEpO1xuICB9XG5cbiAgaWYgKGlzQXJyYXlPYmplY3QoZGF0YSkpIHtcbiAgICBzZWVuLnNldChkYXRhLCBzaWduYWwoZGF0YS5tYXAoKGl0ZW0pID0+IGNvbnZlcnRPYmplY3RUb1NpZ25hbChpdGVtLCBjbG9uZURlZXBJZk5vdFNpZ25hbCwgaXNTaWduYWxQcmltaXRpdmVUeXBlLCBhY2NlcHRDb252ZXJ0T2JqZWN0SW5uZXJXcml0YWJsZVNpZ25hbCwgc2VlbikpKSBhcyBUKTtcbiAgICByZXR1cm4gc2Vlbi5nZXQoZGF0YSk7XG4gIH1cblxuICBpZiAoaXNNYXBPYmplY3QoZGF0YSkpIHtcbiAgICBjb25zdCBtYXBDb3B5ID0gbmV3IE1hcCgpO1xuICAgIEFycmF5LmZyb20oZGF0YS5rZXlzKCkpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgbWFwQ29weS5zZXQoa2V5LCBjb252ZXJ0T2JqZWN0VG9TaWduYWwoZGF0YS5nZXQoa2V5KSwgY2xvbmVEZWVwSWZOb3RTaWduYWwsIGlzU2lnbmFsUHJpbWl0aXZlVHlwZSwgYWNjZXB0Q29udmVydE9iamVjdElubmVyV3JpdGFibGVTaWduYWwpKTtcbiAgICB9KTtcbiAgICBzZWVuLnNldChkYXRhLCBzaWduYWwobWFwQ29weSkgYXMgVCk7XG4gICAgcmV0dXJuIHNlZW4uZ2V0KGRhdGEpO1xuICB9XG5cbiAgLy8gQuG7jyBxdWEgY8OhYyDEkeG7kWkgdMaw4bujbmcgYXN5bmNcbiAgaWYgKGlzQXN5bmNPYmplY3QoZGF0YSkpIHtcbiAgICByZXR1cm4gZGF0YSBhcyBUO1xuICB9XG5cbiAgZGF0YSA9IHNpZ25hbChjbG9uZURlZXBJZk5vdFNpZ25hbCA/IHsgLi4uZGF0YSB9IDogZGF0YSk7XG4gIHNlZW4uc2V0KGRhdGEsIGRhdGEpO1xuICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKCkpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGRhdGEoKVtrZXldO1xuICAgIC8vIELhu48gcXVhIGPDoWMgxJHhu5FpIHTGsOG7o25nIG5ndXkgaGnhu4NtIHbDoCDEkeG6t2MgYmnhu4d0XG4gICAgaWYgKGlzUmV0dXJuQXNJc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEoKSwga2V5KSkge1xuICAgICAgZGF0YSgpW2tleV0gPSBjb252ZXJ0T2JqZWN0VG9TaWduYWwodmFsdWUsIGNsb25lRGVlcElmTm90U2lnbmFsLCBpc1NpZ25hbFByaW1pdGl2ZVR5cGUsIGFjY2VwdENvbnZlcnRPYmplY3RJbm5lcldyaXRhYmxlU2lnbmFsKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGF0YSBhcyBUO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRTaWduYWxUb09iamVjdCA9IDxUID0gYW55PihkYXRhOiBhbnksIGlzQ2xvbmVEZWVwID0gdHJ1ZSwgc2VlbiA9IG5ldyBXZWFrTWFwKCkpOiBUID0+IHtcbiAgbGV0IGlnbm9yZUNoZWNrU2Vlbkhhc0RhdGFBZnRlcldoaWxlID0gZmFsc2U7XG4gIHdoaWxlIChpc1NpZ25hbChkYXRhKSAmJiAhc2Vlbi5oYXMoZGF0YSkpIHtcbiAgICBjb25zdCBkYXRhQ29udmVydCA9IChkYXRhIGFzIFdyaXRhYmxlU2lnbmFsPHVua25vd24+KSgpO1xuICAgIGlmICh0eXBlb2YgZGF0YUNvbnZlcnQgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAoZGF0YUNvbnZlcnQgPT09IG51bGwgfHwgaXNSZXR1cm5Bc0lzT2JqZWN0KGRhdGFDb252ZXJ0KSkge1xuICAgICAgICByZXR1cm4gZGF0YUNvbnZlcnQgYXMgVDtcbiAgICAgIH1cbiAgICAgIHNlZW4uc2V0KGRhdGFDb252ZXJ0IGFzIG9iamVjdCwgZGF0YUNvbnZlcnQpO1xuICAgICAgZGF0YSA9IGRhdGFDb252ZXJ0O1xuICAgICAgaWdub3JlQ2hlY2tTZWVuSGFzRGF0YUFmdGVyV2hpbGUgPSB0cnVlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHNlZW4uc2V0KGRhdGEsIGRhdGFDb252ZXJ0KTtcbiAgICBkYXRhID0gZGF0YUNvbnZlcnQ7XG4gIH1cblxuICBpZiAoZGF0YSA9PT0gbnVsbCB8fCB0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcgfHwgaXNSZXR1cm5Bc0lzT2JqZWN0KGRhdGEpKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBpZiAoIWlnbm9yZUNoZWNrU2Vlbkhhc0RhdGFBZnRlcldoaWxlICYmIHNlZW4uaGFzKGRhdGEpKSB7XG4gICAgcmV0dXJuIHNlZW4uZ2V0KGRhdGEpO1xuICB9XG5cbiAgaWYgKGlzQXJyYXlPYmplY3QoZGF0YSkpIHtcbiAgICBpZiAoIWlzU2lnbmFsKGRhdGFbMF0pKSB7XG4gICAgICByZXR1cm4gZGF0YSBhcyBUO1xuICAgIH1cbiAgICBzZWVuLnNldChkYXRhLCBkYXRhLm1hcCgoaXRlbTogYW55KSA9PiBjb252ZXJ0U2lnbmFsVG9PYmplY3QoaXNDbG9uZURlZXAgPyBjbG9uZURlZXAoaXRlbSkgOiBpdGVtLCBpc0Nsb25lRGVlcCwgc2VlbikpIGFzIFQpO1xuICAgIHJldHVybiBzZWVuLmdldChkYXRhKTtcbiAgfVxuXG4gIGlmIChpc01hcE9iamVjdChkYXRhKSkge1xuICAgIGNvbnN0IG1hcENvcHkgPSBuZXcgTWFwKCk7XG4gICAgQXJyYXkuZnJvbShkYXRhLmtleXMoKSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBtYXBDb3B5LnNldChrZXksIGNvbnZlcnRTaWduYWxUb09iamVjdChpc0Nsb25lRGVlcCA/IGNsb25lRGVlcChkYXRhLmdldChrZXkpKSA6IGRhdGEuZ2V0KGtleSksIGlzQ2xvbmVEZWVwKSk7XG4gICAgfSk7XG4gICAgc2Vlbi5zZXQoZGF0YSwgbWFwQ29weSBhcyBUKTtcbiAgICByZXR1cm4gc2Vlbi5nZXQoZGF0YSk7XG4gIH1cblxuICBpZiAoaXNTZXRPYmplY3QoZGF0YSkpIHtcbiAgICBjb25zdCBzZXRDb3B5ID0gbmV3IFNldCgpO1xuICAgIEFycmF5LmZyb20oZGF0YS52YWx1ZXMoKSkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgIHNldENvcHkuYWRkKGNvbnZlcnRTaWduYWxUb09iamVjdChpc0Nsb25lRGVlcCA/IGNsb25lRGVlcCh2YWx1ZSkgOiB2YWx1ZSwgaXNDbG9uZURlZXApKTtcbiAgICB9KTtcbiAgICBzZWVuLnNldChkYXRhLCBzZXRDb3B5IGFzIFQpO1xuICAgIHJldHVybiBzZWVuLmdldChkYXRhKTtcbiAgfVxuXG4gIC8vIELhu48gcXVhIGPDoWMgxJHhu5FpIHTGsOG7o25nIG5ndXkgaGnhu4NtIHbDoCDEkeG6t2MgYmnhu4d0XG4gIGlmIChpc1JldHVybkFzSXNPYmplY3QoZGF0YSkpIHtcbiAgICByZXR1cm4gZGF0YSBhcyBUO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gaXNDbG9uZURlZXAgPyB7fSA6IGRhdGE7XG4gIHNlZW4uc2V0KGRhdGEsIHJlc3VsdCk7XG4gIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGRhdGFba2V5XTtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSkpIHtcbiAgICAgIC8vIELhu48gcXVhIGPDoWMgxJHhu5FpIHTGsOG7o25nIG5ndXkgaGnhu4NtIMSR4buDIHRyw6FuaCBtYXhpbXVtIGNhbGwgc3RhY2tcbiAgICAgIGlmIChpc1JldHVybkFzSXNPYmplY3QodmFsdWUpKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWU7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgcmVzdWx0W2tleV0gPSBjb252ZXJ0U2lnbmFsVG9PYmplY3QoaXNDbG9uZURlZXAgPyBjbG9uZURlZXAodmFsdWUpIDogdmFsdWUsIGlzQ2xvbmVEZWVwKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0IGFzIFQ7XG59O1xuIl19
|
|
125
|
+
export const unwrapSignal = (data) => {
|
|
126
|
+
while (isSignal(data)) {
|
|
127
|
+
data = data();
|
|
128
|
+
}
|
|
129
|
+
return data;
|
|
130
|
+
};
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHdvLXdheS1zaWduYWwtb2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy11aS91dGlscy9zcmMvdHdvLXdheS1zaWduYWwtb2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFdEM7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFVLElBQVMsRUFBRSxvQkFBb0IsR0FBRyxJQUFJLEVBQUUscUJBQXFCLEdBQUcsS0FBSyxFQUFFLHNDQUFzQyxHQUFHLEtBQUssRUFBRSxJQUFJLEdBQUcsSUFBSSxPQUFPLEVBQUUsRUFBSyxFQUFFO0lBQy9MLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDbkUsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBTSxDQUFDO0lBQzVELENBQUM7SUFDRCxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNuQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLHNDQUFzQyxFQUFFLENBQUM7WUFDNUMsT0FBTyxJQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLHFCQUFxQixDQUFDLElBQUksRUFBRSxFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLHNDQUFzQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDekksT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUUscUJBQXFCLEVBQUUsc0NBQXNDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBTSxDQUFDLENBQUM7UUFDeEssT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDMUIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLHNDQUFzQyxDQUFDLENBQUMsQ0FBQztRQUM5SSxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQU0sQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsNkJBQTZCO0lBQzdCLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDeEIsT0FBTyxJQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDckIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sS0FBSyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLDZDQUE2QztRQUM3QyxJQUFJLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDOUIsU0FBUztRQUNYLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RELElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLHFCQUFxQixDQUFDLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxzQ0FBc0MsQ0FBQyxDQUFDO1FBQ2xJLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBVSxJQUFTLEVBQUUsV0FBVyxHQUFHLElBQUksRUFBRSxJQUFJLEdBQUcsSUFBSSxPQUFPLEVBQUUsRUFBSyxFQUFFO0lBQ3ZHLElBQUksZ0NBQWdDLEdBQUcsS0FBSyxDQUFDO0lBQzdDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sV0FBVyxHQUFJLElBQWdDLEVBQUUsQ0FBQztRQUN4RCxJQUFJLE9BQU8sV0FBVyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3BDLElBQUksV0FBVyxLQUFLLElBQUksSUFBSSxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO2dCQUM1RCxPQUFPLFdBQWdCLENBQUM7WUFDMUIsQ0FBQztZQUNELElBQUksQ0FBQyxHQUFHLENBQUMsV0FBcUIsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUM3QyxJQUFJLEdBQUcsV0FBVyxDQUFDO1lBQ25CLGdDQUFnQyxHQUFHLElBQUksQ0FBQztZQUN4QyxNQUFNO1FBQ1IsQ0FBQztRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzVCLElBQUksR0FBRyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxVQUFVLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDeEcsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxDQUFDLGdDQUFnQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN4RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sSUFBUyxDQUFDO1FBQ25CLENBQUM7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBTSxDQUFDLENBQUM7UUFDN0gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDMUIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUMvRyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQVksQ0FBQyxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN0QixNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzFCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDMUYsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFZLENBQUMsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELDZDQUE2QztJQUM3QyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDN0IsT0FBTyxJQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUF3QixXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzVELElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BELDZEQUE2RDtZQUM3RCxJQUFJLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQ3BCLFNBQVM7WUFDWCxDQUFDO1lBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDM0YsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLE1BQVcsQ0FBQztBQUNyQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFTLEVBQUUsRUFBRTtJQUN4QyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3RCLElBQUksR0FBRyxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBpc1NpZ25hbCwgc2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNBcnJheU9iamVjdCwgaXNBc3luY09iamVjdCwgaXNNYXBPYmplY3QsIGlzUmV0dXJuQXNJc09iamVjdCwgaXNTZXRPYmplY3QgfSBmcm9tICcuL2Rhbmdlcm91cy1vYmplY3QnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnLi9oZWxwZXJzJztcblxuLyoqXG4gKiBDaHV54buDbiDEkeG7lWkgbeG7mXQgxJHhu5FpIHTGsOG7o25nIGhv4bq3YyBnacOhIHRy4buLIHRow6BuaCBzaWduYWxcbiAqIEBwYXJhbSBkYXRhIEThu68gbGnhu4d1IGPhuqduIGNodXnhu4NuIMSR4buVaSB0aMOgbmggc2lnbmFsXG4gKiBAcGFyYW0gY2xvbmVEZWVwSWZOb3RTaWduYWwgQ8OzIHRo4buxYyBoaeG7h24gc2FvIGNow6lwIHPDonUgZOG7ryBsaeG7h3UgdHLGsOG7m2Mga2hpIGNodXnhu4NuIMSR4buVaSBoYXkga2jDtG5nIG7hur91IGRhdGEga2jDtG5nIHBo4bqjaSBzaWduYWwuIE3hurdjIMSR4buLbmggbMOgIHRydWUuXG4gKiDEkOG6t3QgZmFsc2UgbuG6v3UgbXXhu5FuIGdp4buvIG5ndXnDqm4gdGhhbSBjaGnhur91IMSR4bq/biBk4buvIGxp4buHdSBn4buRYy5cbiAqIE7hur91IG114buRbiBzYW8gY2jDqXAgc8OidSDEkeG7kWkgdMaw4bujbmcgc2lnbmFsIHRow6wgxJHhurd0IGNsb25lRGVlcElmTm90U2lnbmFsIGzDoCB0cnVlIHbDoCBhY2NlcHRDb252ZXJ0T2JqZWN0SW5uZXJXcml0YWJsZVNpZ25hbCBsw6AgdHJ1ZS5cbiAqIEBwYXJhbSBpc1NpZ25hbFByaW1pdGl2ZVR5cGUgQ8OzIGNodXnhu4NuIMSR4buVaSBjw6FjIGdpw6EgdHLhu4sgbmd1ecOqbiB0aOG7p3kgKHN0cmluZywgbnVtYmVyLCBib29sZWFuKSB0aMOgbmggc2lnbmFsIGhheSBraMO0bmcuIE3hurdjIMSR4buLbmggbMOgIGZhbHNlLlxuICogxJDhurd0IHRydWUgbuG6v3UgbXXhu5FuIGLhu41jIGPDoWMgZ2nDoSB0cuG7iyBuZ3V5w6puIHRo4buneSB0cm9uZyBzaWduYWwuXG4gKiBAcGFyYW0gYWNjZXB0Q29udmVydE9iamVjdElubmVyV3JpdGFibGVTaWduYWwgQ8OzIHRp4bq/cCB04bulYyB0w6xtIGtp4bq/bSB2w6AgY2h1eeG7g24gxJHhu5VpIGPDoWMgxJHhu5FpIHTGsOG7o25nIGLDqm4gdHJvbmcgc2lnbmFsIGhheSBraMO0bmcuIE3hurdjIMSR4buLbmggbMOgIGZhbHNlLlxuICogxJDhurd0IHRydWUgbuG6v3UgbXXhu5FuIHTDrG0gdsOgIGNodXnhu4NuIMSR4buVaSBjw6FjIMSR4buRaSB0xrDhu6NuZyBiw6puIHRyb25nIHNpZ25hbCBob+G6t2MgY2jDrW5oIG7DsyB0aMOgbmggc2lnbmFsIG3hu5tpLlxuICogQHJldHVybnMgROG7ryBsaeG7h3UgxJHDoyDEkcaw4bujYyBjaHV54buDbiDEkeG7lWkgdGhlbyBraeG7g3UgVFxuICovXG5leHBvcnQgY29uc3QgY29udmVydE9iamVjdFRvU2lnbmFsID0gPFQgPSBhbnk+KGRhdGE6IGFueSwgY2xvbmVEZWVwSWZOb3RTaWduYWwgPSB0cnVlLCBpc1NpZ25hbFByaW1pdGl2ZVR5cGUgPSBmYWxzZSwgYWNjZXB0Q29udmVydE9iamVjdElubmVyV3JpdGFibGVTaWduYWwgPSBmYWxzZSwgc2VlbiA9IG5ldyBXZWFrTWFwKCkpOiBUID0+IHtcbiAgaWYgKChkYXRhID09PSBudWxsIHx8IHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0JykgJiYgIWlzU2lnbmFsKGRhdGEpKSB7XG4gICAgcmV0dXJuIChpc1NpZ25hbFByaW1pdGl2ZVR5cGUgPyBzaWduYWwoZGF0YSkgOiBkYXRhKSBhcyBUO1xuICB9XG4gIGlmIChzZWVuLmhhcyhkYXRhKSkge1xuICAgIHJldHVybiBzZWVuLmdldChkYXRhKTtcbiAgfVxuXG4gIGlmIChpc1NpZ25hbChkYXRhKSkge1xuICAgIGlmICghYWNjZXB0Q29udmVydE9iamVjdElubmVyV3JpdGFibGVTaWduYWwpIHtcbiAgICAgIHJldHVybiBkYXRhIGFzIFQ7XG4gICAgfVxuICAgIHNlZW4uc2V0KGRhdGEsIGNvbnZlcnRPYmplY3RUb1NpZ25hbChkYXRhKCksIGNsb25lRGVlcElmTm90U2lnbmFsLCBpc1NpZ25hbFByaW1pdGl2ZVR5cGUsIGFjY2VwdENvbnZlcnRPYmplY3RJbm5lcldyaXRhYmxlU2lnbmFsLCBzZWVuKSk7XG4gICAgcmV0dXJuIHNlZW4uZ2V0KGRhdGEpO1xuICB9XG5cbiAgaWYgKGlzQXJyYXlPYmplY3QoZGF0YSkpIHtcbiAgICBzZWVuLnNldChkYXRhLCBzaWduYWwoZGF0YS5tYXAoKGl0ZW0pID0+IGNvbnZlcnRPYmplY3RUb1NpZ25hbChpdGVtLCBjbG9uZURlZXBJZk5vdFNpZ25hbCwgaXNTaWduYWxQcmltaXRpdmVUeXBlLCBhY2NlcHRDb252ZXJ0T2JqZWN0SW5uZXJXcml0YWJsZVNpZ25hbCwgc2VlbikpKSBhcyBUKTtcbiAgICByZXR1cm4gc2Vlbi5nZXQoZGF0YSk7XG4gIH1cblxuICBpZiAoaXNNYXBPYmplY3QoZGF0YSkpIHtcbiAgICBjb25zdCBtYXBDb3B5ID0gbmV3IE1hcCgpO1xuICAgIEFycmF5LmZyb20oZGF0YS5rZXlzKCkpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgbWFwQ29weS5zZXQoa2V5LCBjb252ZXJ0T2JqZWN0VG9TaWduYWwoZGF0YS5nZXQoa2V5KSwgY2xvbmVEZWVwSWZOb3RTaWduYWwsIGlzU2lnbmFsUHJpbWl0aXZlVHlwZSwgYWNjZXB0Q29udmVydE9iamVjdElubmVyV3JpdGFibGVTaWduYWwpKTtcbiAgICB9KTtcbiAgICBzZWVuLnNldChkYXRhLCBzaWduYWwobWFwQ29weSkgYXMgVCk7XG4gICAgcmV0dXJuIHNlZW4uZ2V0KGRhdGEpO1xuICB9XG5cbiAgLy8gQuG7jyBxdWEgY8OhYyDEkeG7kWkgdMaw4bujbmcgYXN5bmNcbiAgaWYgKGlzQXN5bmNPYmplY3QoZGF0YSkpIHtcbiAgICByZXR1cm4gZGF0YSBhcyBUO1xuICB9XG5cbiAgZGF0YSA9IHNpZ25hbChjbG9uZURlZXBJZk5vdFNpZ25hbCA/IHsgLi4uZGF0YSB9IDogZGF0YSk7XG4gIHNlZW4uc2V0KGRhdGEsIGRhdGEpO1xuICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKCkpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGRhdGEoKVtrZXldO1xuICAgIC8vIELhu48gcXVhIGPDoWMgxJHhu5FpIHTGsOG7o25nIG5ndXkgaGnhu4NtIHbDoCDEkeG6t2MgYmnhu4d0XG4gICAgaWYgKGlzUmV0dXJuQXNJc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEoKSwga2V5KSkge1xuICAgICAgZGF0YSgpW2tleV0gPSBjb252ZXJ0T2JqZWN0VG9TaWduYWwodmFsdWUsIGNsb25lRGVlcElmTm90U2lnbmFsLCBpc1NpZ25hbFByaW1pdGl2ZVR5cGUsIGFjY2VwdENvbnZlcnRPYmplY3RJbm5lcldyaXRhYmxlU2lnbmFsKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGF0YSBhcyBUO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRTaWduYWxUb09iamVjdCA9IDxUID0gYW55PihkYXRhOiBhbnksIGlzQ2xvbmVEZWVwID0gdHJ1ZSwgc2VlbiA9IG5ldyBXZWFrTWFwKCkpOiBUID0+IHtcbiAgbGV0IGlnbm9yZUNoZWNrU2Vlbkhhc0RhdGFBZnRlcldoaWxlID0gZmFsc2U7XG4gIHdoaWxlIChpc1NpZ25hbChkYXRhKSAmJiAhc2Vlbi5oYXMoZGF0YSkpIHtcbiAgICBjb25zdCBkYXRhQ29udmVydCA9IChkYXRhIGFzIFdyaXRhYmxlU2lnbmFsPHVua25vd24+KSgpO1xuICAgIGlmICh0eXBlb2YgZGF0YUNvbnZlcnQgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAoZGF0YUNvbnZlcnQgPT09IG51bGwgfHwgaXNSZXR1cm5Bc0lzT2JqZWN0KGRhdGFDb252ZXJ0KSkge1xuICAgICAgICByZXR1cm4gZGF0YUNvbnZlcnQgYXMgVDtcbiAgICAgIH1cbiAgICAgIHNlZW4uc2V0KGRhdGFDb252ZXJ0IGFzIG9iamVjdCwgZGF0YUNvbnZlcnQpO1xuICAgICAgZGF0YSA9IGRhdGFDb252ZXJ0O1xuICAgICAgaWdub3JlQ2hlY2tTZWVuSGFzRGF0YUFmdGVyV2hpbGUgPSB0cnVlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHNlZW4uc2V0KGRhdGEsIGRhdGFDb252ZXJ0KTtcbiAgICBkYXRhID0gZGF0YUNvbnZlcnQ7XG4gIH1cblxuICBpZiAoZGF0YSA9PT0gbnVsbCB8fCB0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcgfHwgaXNSZXR1cm5Bc0lzT2JqZWN0KGRhdGEpKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBpZiAoIWlnbm9yZUNoZWNrU2Vlbkhhc0RhdGFBZnRlcldoaWxlICYmIHNlZW4uaGFzKGRhdGEpKSB7XG4gICAgcmV0dXJuIHNlZW4uZ2V0KGRhdGEpO1xuICB9XG5cbiAgaWYgKGlzQXJyYXlPYmplY3QoZGF0YSkpIHtcbiAgICBpZiAoIWlzU2lnbmFsKGRhdGFbMF0pKSB7XG4gICAgICByZXR1cm4gZGF0YSBhcyBUO1xuICAgIH1cbiAgICBzZWVuLnNldChkYXRhLCBkYXRhLm1hcCgoaXRlbTogYW55KSA9PiBjb252ZXJ0U2lnbmFsVG9PYmplY3QoaXNDbG9uZURlZXAgPyBjbG9uZURlZXAoaXRlbSkgOiBpdGVtLCBpc0Nsb25lRGVlcCwgc2VlbikpIGFzIFQpO1xuICAgIHJldHVybiBzZWVuLmdldChkYXRhKTtcbiAgfVxuXG4gIGlmIChpc01hcE9iamVjdChkYXRhKSkge1xuICAgIGNvbnN0IG1hcENvcHkgPSBuZXcgTWFwKCk7XG4gICAgQXJyYXkuZnJvbShkYXRhLmtleXMoKSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBtYXBDb3B5LnNldChrZXksIGNvbnZlcnRTaWduYWxUb09iamVjdChpc0Nsb25lRGVlcCA/IGNsb25lRGVlcChkYXRhLmdldChrZXkpKSA6IGRhdGEuZ2V0KGtleSksIGlzQ2xvbmVEZWVwKSk7XG4gICAgfSk7XG4gICAgc2Vlbi5zZXQoZGF0YSwgbWFwQ29weSBhcyBUKTtcbiAgICByZXR1cm4gc2Vlbi5nZXQoZGF0YSk7XG4gIH1cblxuICBpZiAoaXNTZXRPYmplY3QoZGF0YSkpIHtcbiAgICBjb25zdCBzZXRDb3B5ID0gbmV3IFNldCgpO1xuICAgIEFycmF5LmZyb20oZGF0YS52YWx1ZXMoKSkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgIHNldENvcHkuYWRkKGNvbnZlcnRTaWduYWxUb09iamVjdChpc0Nsb25lRGVlcCA/IGNsb25lRGVlcCh2YWx1ZSkgOiB2YWx1ZSwgaXNDbG9uZURlZXApKTtcbiAgICB9KTtcbiAgICBzZWVuLnNldChkYXRhLCBzZXRDb3B5IGFzIFQpO1xuICAgIHJldHVybiBzZWVuLmdldChkYXRhKTtcbiAgfVxuXG4gIC8vIELhu48gcXVhIGPDoWMgxJHhu5FpIHTGsOG7o25nIG5ndXkgaGnhu4NtIHbDoCDEkeG6t2MgYmnhu4d0XG4gIGlmIChpc1JldHVybkFzSXNPYmplY3QoZGF0YSkpIHtcbiAgICByZXR1cm4gZGF0YSBhcyBUO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gaXNDbG9uZURlZXAgPyB7fSA6IGRhdGE7XG4gIHNlZW4uc2V0KGRhdGEsIHJlc3VsdCk7XG4gIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGRhdGFba2V5XTtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSkpIHtcbiAgICAgIC8vIELhu48gcXVhIGPDoWMgxJHhu5FpIHTGsOG7o25nIG5ndXkgaGnhu4NtIMSR4buDIHRyw6FuaCBtYXhpbXVtIGNhbGwgc3RhY2tcbiAgICAgIGlmIChpc1JldHVybkFzSXNPYmplY3QodmFsdWUpKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWU7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgcmVzdWx0W2tleV0gPSBjb252ZXJ0U2lnbmFsVG9PYmplY3QoaXNDbG9uZURlZXAgPyBjbG9uZURlZXAodmFsdWUpIDogdmFsdWUsIGlzQ2xvbmVEZWVwKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0IGFzIFQ7XG59O1xuXG5leHBvcnQgY29uc3QgdW53cmFwU2lnbmFsID0gKGRhdGE6IGFueSkgPT4ge1xuICB3aGlsZSAoaXNTaWduYWwoZGF0YSkpIHtcbiAgICBkYXRhID0gZGF0YSgpO1xuICB9XG4gIHJldHVybiBkYXRhO1xufTtcbiJdfQ==
|
|
@@ -706,7 +706,7 @@ const isBuiltInObject = (obj) => {
|
|
|
706
706
|
if (obj === null || typeof obj !== 'object') {
|
|
707
707
|
return false;
|
|
708
708
|
}
|
|
709
|
-
return obj instanceof Date || obj instanceof RegExp || obj instanceof HttpParams;
|
|
709
|
+
return obj instanceof Date || obj instanceof RegExp || obj instanceof HttpParams || ('hasOwnProperty' in obj && '__ngContext__' in obj);
|
|
710
710
|
};
|
|
711
711
|
/**
|
|
712
712
|
* Kiểm tra đối tượng có phải là Async object không
|
|
@@ -1798,6 +1798,12 @@ const convertSignalToObject = (data, isCloneDeep = true, seen = new WeakMap()) =
|
|
|
1798
1798
|
}
|
|
1799
1799
|
return result;
|
|
1800
1800
|
};
|
|
1801
|
+
const unwrapSignal = (data) => {
|
|
1802
|
+
while (isSignal(data)) {
|
|
1803
|
+
data = data();
|
|
1804
|
+
}
|
|
1805
|
+
return data;
|
|
1806
|
+
};
|
|
1801
1807
|
|
|
1802
1808
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
1803
1809
|
/**Các hàm tương tự thư viện lodash */
|
|
@@ -1813,7 +1819,7 @@ const convertSignalToObject = (data, isCloneDeep = true, seen = new WeakMap()) =
|
|
|
1813
1819
|
*/
|
|
1814
1820
|
const isNil = (value, options) => {
|
|
1815
1821
|
if (!options?.ignoreUnWrapSignal) {
|
|
1816
|
-
value =
|
|
1822
|
+
value = unwrapSignal(value);
|
|
1817
1823
|
}
|
|
1818
1824
|
return value === null || value === undefined;
|
|
1819
1825
|
};
|
|
@@ -1832,7 +1838,7 @@ const isNil = (value, options) => {
|
|
|
1832
1838
|
*/
|
|
1833
1839
|
const isEmpty = (value, options) => {
|
|
1834
1840
|
if (!options?.ignoreUnWrapSignal) {
|
|
1835
|
-
value =
|
|
1841
|
+
value = unwrapSignal(value);
|
|
1836
1842
|
}
|
|
1837
1843
|
if (options?.ignoreCheckTypePrimitive) {
|
|
1838
1844
|
return isEmptyTypeObject(value);
|
|
@@ -1889,11 +1895,7 @@ const isTruthy = (value, options) => {
|
|
|
1889
1895
|
*/
|
|
1890
1896
|
const isFalsy = (value, options) => {
|
|
1891
1897
|
if (!options?.ignoreUnWrapSignal) {
|
|
1892
|
-
value =
|
|
1893
|
-
}
|
|
1894
|
-
const isFalse = !value;
|
|
1895
|
-
if (!isFalse) {
|
|
1896
|
-
return false;
|
|
1898
|
+
value = unwrapSignal(value);
|
|
1897
1899
|
}
|
|
1898
1900
|
if (options?.ignoreZero && value === 0) {
|
|
1899
1901
|
return false;
|
|
@@ -1901,7 +1903,7 @@ const isFalsy = (value, options) => {
|
|
|
1901
1903
|
if (options?.ignoreCheckString && value === '') {
|
|
1902
1904
|
return false;
|
|
1903
1905
|
}
|
|
1904
|
-
return
|
|
1906
|
+
return !value;
|
|
1905
1907
|
};
|
|
1906
1908
|
/**
|
|
1907
1909
|
* Loại bỏ các thuộc tính của đối tượng dựa trên một hàm điều kiện
|
|
@@ -2860,6 +2862,10 @@ const downloadFileByUrlUseXmlRequest = (fileUrl, filename) => {
|
|
|
2860
2862
|
const xmlRequest = new XMLHttpRequest();
|
|
2861
2863
|
xmlRequest.open('GET', fileUrl, true);
|
|
2862
2864
|
xmlRequest.responseType = 'blob';
|
|
2865
|
+
xmlRequest.onerror = () => {
|
|
2866
|
+
const url = window.URL.createObjectURL(xmlRequest.response);
|
|
2867
|
+
downloadFileByUrl(url, filename);
|
|
2868
|
+
};
|
|
2863
2869
|
xmlRequest.onload = () => {
|
|
2864
2870
|
const url = window.URL.createObjectURL(xmlRequest.response);
|
|
2865
2871
|
downloadFileByUrl(url, filename);
|
|
@@ -3201,5 +3207,5 @@ const createUniqueRandomIntGenerator = (min, max) => {
|
|
|
3201
3207
|
* Generated bundle index. Do not edit.
|
|
3202
3208
|
*/
|
|
3203
3209
|
|
|
3204
|
-
export { AudioExtList, CHARACTER_DATA_EMPTY, COMMUNICATE_MICRO_KEY_GET_ALL_MESSAGE, COMMUNICATE_MICRO_PREFIX_TYPE, DEFAULT_START_PAGE_0, DocumentExtList, ENCODE_URI_PATTERN, ERROR_MESSAGE_EMPTY_VALID, ERROR_MESSAGE_MAX_LENGTH, ERROR_MESSAGE_MAX_VALID, ERROR_MESSAGE_MIN_LENGTH, ERROR_MESSAGE_MIN_VALID, ERROR_MESSAGE_PATTEN_VALID, ExcelExtList, ImageExtList, LINK_IMAGE_ERROR_TOKEN_INJECT, PROCESS_BAR_STANDARD_CONFIG_DEFAULT_TOKEN_INJECT, PROCESS_BAR_STEPS_CONFIG_DEFAULT_TOKEN_INJECT, UtilsCache, UtilsCommunicateMicro, UtilsCommunicateMicroKeyGlobal, UtilsHttpParamsRequest, UtilsHttpParamsRequestInstance, UtilsKeyCodeConstant, UtilsLanguageConstants, UtilsUrlSearchParams, VideoExtList, base64Decode, base64Encode, capitalize, checkMouseOverInContainer, checkViewInScreen, cloneDeep, cloneIBoundingClientRect, colorContrastFromOrigin, colorStepContrastFromOrigin, convertBase64ToBlob, convertBlobToFile, convertFileToBase64, convertFileToBase64_ObjectUrl, convertHtmlToDivBlocks, convertObjectToSignal, convertSignalToObject, convertUrlToFile, createUniqueRandomIntGenerator, decodeEscapeHtml, decodeURI, decrypt, decrypt3rd, deleteUnicode, downloadFileByUrl, downloadFileByUrlUseXmlRequest, downloadImageFromELement, encodeURI, encrypt, encrypt3rd, endCodeUrl, escapeHtml, firstLetterToUpperCase, formatDate, formatNumber, formatTextCompare, fullNameFormat, generateInterface, get, getColorById, getDayjs, getDeltaFromHTML, getDeviceInfo, getDocumentByString, getDragEventByElement, getEventNameHandleClick, getFileExtension, getHTMLFromQuill, getKeyCacheByArrayObject, getLabelBySizeFile, getPlatFromBrowser, getSmartAxisScale, getViewport, groupBy, hasDangerousConstructorName, highlightByKeyword, insertContentWithRange, isArrayObject, isAsyncObject, isBrowserAPIObject, isBrowserGlobalObject, isBuiltInObject, isDOMObject, isDangerousObject, isDayjsObject, isDifferenceDay, isDifferenceMonth, isDifferenceYear, isEmbedFrame, isEmpty, isEqual, isFalsy, isFileObject, isFrameworkObject, isIncludeAudioExtList, isIncludeDocumentExtList, isIncludeImageExtList, isIncludeVideoExtList, isMapObject, isNil, isReturnAsIsObject, isSafeToProcess, isSetObject, isSkippableObject, isSpecialObject, isTruthy, isTypeAudio, isTypeFile, isTypeImage, isTypeVideo, keyBy, listColorDefine, md5, omitBy, patternAccount, patternDomain, patternEmail, patternEmoji, patternEncodeUri, patternGetFieldByRuleFieldReplace, patternHostUrl, patternKey, patternMobilePhone, patternName, patternNameProfile, patternNameSpecial, patternNameUtf8, patternNumber, patternPem, patternPhone, patternPhoneNormal, patternRuleFieldReplace, patternTax, patternUrl, processPasteData, protectString, range, removeEmoji, revealString, rgbToHex, set, setCaretPosition, setDefaultTimeZone, setKeyCrypto, setKeyCrypto3rd, setStylesElement, uniqBy, updateFunctionCheckEmbedFrame, updateFunctionFormatDate, updateFunctionXssFilter, uppercaseByPosition, uuid, viewDataNumberByLanguage, xssFilter };
|
|
3210
|
+
export { AudioExtList, CHARACTER_DATA_EMPTY, COMMUNICATE_MICRO_KEY_GET_ALL_MESSAGE, COMMUNICATE_MICRO_PREFIX_TYPE, DEFAULT_START_PAGE_0, DocumentExtList, ENCODE_URI_PATTERN, ERROR_MESSAGE_EMPTY_VALID, ERROR_MESSAGE_MAX_LENGTH, ERROR_MESSAGE_MAX_VALID, ERROR_MESSAGE_MIN_LENGTH, ERROR_MESSAGE_MIN_VALID, ERROR_MESSAGE_PATTEN_VALID, ExcelExtList, ImageExtList, LINK_IMAGE_ERROR_TOKEN_INJECT, PROCESS_BAR_STANDARD_CONFIG_DEFAULT_TOKEN_INJECT, PROCESS_BAR_STEPS_CONFIG_DEFAULT_TOKEN_INJECT, UtilsCache, UtilsCommunicateMicro, UtilsCommunicateMicroKeyGlobal, UtilsHttpParamsRequest, UtilsHttpParamsRequestInstance, UtilsKeyCodeConstant, UtilsLanguageConstants, UtilsUrlSearchParams, VideoExtList, base64Decode, base64Encode, capitalize, checkMouseOverInContainer, checkViewInScreen, cloneDeep, cloneIBoundingClientRect, colorContrastFromOrigin, colorStepContrastFromOrigin, convertBase64ToBlob, convertBlobToFile, convertFileToBase64, convertFileToBase64_ObjectUrl, convertHtmlToDivBlocks, convertObjectToSignal, convertSignalToObject, convertUrlToFile, createUniqueRandomIntGenerator, decodeEscapeHtml, decodeURI, decrypt, decrypt3rd, deleteUnicode, downloadFileByUrl, downloadFileByUrlUseXmlRequest, downloadImageFromELement, encodeURI, encrypt, encrypt3rd, endCodeUrl, escapeHtml, firstLetterToUpperCase, formatDate, formatNumber, formatTextCompare, fullNameFormat, generateInterface, get, getColorById, getDayjs, getDeltaFromHTML, getDeviceInfo, getDocumentByString, getDragEventByElement, getEventNameHandleClick, getFileExtension, getHTMLFromQuill, getKeyCacheByArrayObject, getLabelBySizeFile, getPlatFromBrowser, getSmartAxisScale, getViewport, groupBy, hasDangerousConstructorName, highlightByKeyword, insertContentWithRange, isArrayObject, isAsyncObject, isBrowserAPIObject, isBrowserGlobalObject, isBuiltInObject, isDOMObject, isDangerousObject, isDayjsObject, isDifferenceDay, isDifferenceMonth, isDifferenceYear, isEmbedFrame, isEmpty, isEqual, isFalsy, isFileObject, isFrameworkObject, isIncludeAudioExtList, isIncludeDocumentExtList, isIncludeImageExtList, isIncludeVideoExtList, isMapObject, isNil, isReturnAsIsObject, isSafeToProcess, isSetObject, isSkippableObject, isSpecialObject, isTruthy, isTypeAudio, isTypeFile, isTypeImage, isTypeVideo, keyBy, listColorDefine, md5, omitBy, patternAccount, patternDomain, patternEmail, patternEmoji, patternEncodeUri, patternGetFieldByRuleFieldReplace, patternHostUrl, patternKey, patternMobilePhone, patternName, patternNameProfile, patternNameSpecial, patternNameUtf8, patternNumber, patternPem, patternPhone, patternPhoneNormal, patternRuleFieldReplace, patternTax, patternUrl, processPasteData, protectString, range, removeEmoji, revealString, rgbToHex, set, setCaretPosition, setDefaultTimeZone, setKeyCrypto, setKeyCrypto3rd, setStylesElement, uniqBy, unwrapSignal, updateFunctionCheckEmbedFrame, updateFunctionFormatDate, updateFunctionXssFilter, uppercaseByPosition, uuid, viewDataNumberByLanguage, xssFilter };
|
|
3205
3211
|
//# sourceMappingURL=libs-ui-utils.mjs.map
|