@rosen-bridge/fraud-extractor 2.0.13 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import { DataSource } from 'typeorm';
2
2
  import { AbstractLogger } from '@rosen-bridge/abstract-logger';
3
- import { Block } from '@rosen-bridge/abstract-extractor';
3
+ import { Block } from '@rosen-bridge/scanner-interfaces';
4
4
  import { ExtractedFraud } from '../interfaces/types';
5
5
  export declare class FraudAction {
6
6
  private readonly datasource;
@@ -194,4 +194,4 @@ export class FraudAction {
194
194
  return await this.repository.update({ boxId: boxId, extractor: extractor }, { spendBlock: blockId, spendHeight: blockHeight });
195
195
  };
196
196
  }
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhdWRBY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvYWN0aW9ucy9mcmF1ZEFjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsRUFBRSxFQUFjLE1BQU0sU0FBUyxDQUFDO0FBQ3JELE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUdsQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU3QyxNQUFNLE9BQU8sV0FBVztJQUNMLFVBQVUsQ0FBYTtJQUN2QixNQUFNLENBQWlCO0lBQ3ZCLFVBQVUsQ0FBMEI7SUFFckQsWUFBWSxVQUFzQixFQUFFLE1BQXVCO1FBQ3pELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFDRDs7Ozs7O09BTUc7SUFDSCxnQkFBZ0IsR0FBRyxLQUFLLEVBQ3RCLE1BQTZCLEVBQzdCLEtBQVksRUFDWixTQUFpQixFQUNqQixFQUFFO1FBQ0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDM0MsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDakIsU0FBUyxF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QXVCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RCxDQUFDLENBQUM7SUFFRjs7OztPQUlHO0lBQ0gsV0FBVyxHQUFHLEtBQUssRUFBRSxLQUFhLEVBQUUsU0FBaUIsRUFBRSxFQUFFO1FBQ3ZELE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDOUUsQ0FBQyxDQUFDO0lBRUY7Ozs7OztPQU1HO0lBQ0gsZ0JBQWdCLEdBQUcsS0FBSyxFQUN0QixLQUFhLEVBQ2IsU0FBaUIsRUFDakIsT0FBZSxFQUNmLFdBQW1CLEVBQ25CLEVBQUU7UUFDRixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQ2pDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQ3RDLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQ2xELENBQUM7SUFDSixDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2UsIEluLCBSZXBvc2l0b3J5IH0gZnJvbSAndHlwZW9ybSc7XG5pbXBvcnQgeyBBYnN0cmFjdExvZ2dlciwgRHVtbXlMb2dnZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWxvZ2dlcic7XG5pbXBvcnQgeyBjaHVuayB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCbG9jayB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtZXh0cmFjdG9yJztcblxuaW1wb3J0IHsgRnJhdWRFbnRpdHkgfSBmcm9tICcuLi9lbnRpdGllcy9mcmF1ZEVudGl0eSc7XG5pbXBvcnQgeyBFeHRyYWN0ZWRGcmF1ZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvdHlwZXMnO1xuaW1wb3J0IHsgZGJJZENodW5rU2l6ZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBGcmF1ZEFjdGlvbiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGF0YXNvdXJjZTogRGF0YVNvdXJjZTtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IEFic3RyYWN0TG9nZ2VyO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlcG9zaXRvcnk6IFJlcG9zaXRvcnk8RnJhdWRFbnRpdHk+O1xuXG4gIGNvbnN0cnVjdG9yKGRhdGFTb3VyY2U6IERhdGFTb3VyY2UsIGxvZ2dlcj86IEFic3RyYWN0TG9nZ2VyKSB7XG4gICAgdGhpcy5kYXRhc291cmNlID0gZGF0YVNvdXJjZTtcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlciA/IGxvZ2dlciA6IG5ldyBEdW1teUxvZ2dlcigpO1xuICAgIHRoaXMucmVwb3NpdG9yeSA9IGRhdGFTb3VyY2UuZ2V0UmVwb3NpdG9yeShGcmF1ZEVudGl0eSk7XG4gIH1cbiAgLyoqXG4gICAqIFN0b3JlIGEgbGlzdCBvZiBmcmF1ZHMgaW4gYSBzcGVjaWZpYyBibG9ja1xuICAgKiBAcGFyYW0gZnJhdWRzXG4gICAqIEBwYXJhbSBzcGVuZEJveGVzXG4gICAqIEBwYXJhbSBibG9ja1xuICAgKiBAcGFyYW0gZXh0cmFjdG9yXG4gICAqL1xuICBzdG9yZUJsb2NrRnJhdWRzID0gYXN5bmMgKFxuICAgIGZyYXVkczogQXJyYXk8RXh0cmFjdGVkRnJhdWQ+LFxuICAgIGJsb2NrOiBCbG9jayxcbiAgICBleHRyYWN0b3I6IHN0cmluZ1xuICApID0+IHtcbiAgICBjb25zdCBib3hJZHMgPSBmcmF1ZHMubWFwKChpdGVtKSA9PiBpdGVtLmJveElkKTtcbiAgICBjb25zdCBkYkJveGVzID0gYXdhaXQgdGhpcy5yZXBvc2l0b3J5LmZpbmRCeSh7XG4gICAgICBib3hJZDogSW4oYm94SWRzKSxcbiAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgIH0pO1xuICAgIGxldCBzdWNjZXNzID0gdHJ1ZTtcbiAgICBjb25zdCBxdWVyeVJ1bm5lciA9IHRoaXMuZGF0YXNvdXJjZS5jcmVhdGVRdWVyeVJ1bm5lcigpO1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLmNvbm5lY3QoKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5zdGFydFRyYW5zYWN0aW9uKCk7XG4gICAgY29uc3QgcmVwb3NpdG9yeSA9IGF3YWl0IHF1ZXJ5UnVubmVyLm1hbmFnZXIuZ2V0UmVwb3NpdG9yeShGcmF1ZEVudGl0eSk7XG4gICAgdHJ5IHtcbiAgICAgIGZvciAoY29uc3QgZnJhdWQgb2YgZnJhdWRzKSB7XG4gICAgICAgIGNvbnN0IGVudGl0eSA9IHtcbiAgICAgICAgICB0cmlnZ2VyQm94SWQ6IGZyYXVkLnRyaWdnZXJCb3hJZCxcbiAgICAgICAgICBib3hJZDogZnJhdWQuYm94SWQsXG4gICAgICAgICAgd2lkOiBmcmF1ZC53aWQsXG4gICAgICAgICAgcnd0Q291bnQ6IGZyYXVkLnJ3dENvdW50LFxuICAgICAgICAgIGNyZWF0aW9uQmxvY2s6IGJsb2NrLmhhc2gsXG4gICAgICAgICAgY3JlYXRpb25IZWlnaHQ6IGJsb2NrLmhlaWdodCxcbiAgICAgICAgICBjcmVhdGlvblR4SWQ6IGZyYXVkLnR4SWQsXG4gICAgICAgICAgc2VyaWFsaXplZDogZnJhdWQuc2VyaWFsaXplZCxcbiAgICAgICAgICBleHRyYWN0b3I6IGV4dHJhY3RvcixcbiAgICAgICAgICBzcGVuZEJsb2NrOiB1bmRlZmluZWQsXG4gICAgICAgICAgc3BlbmRIZWlnaHQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICBzcGVuZFR4SWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZGJCb3ggPSBkYkJveGVzLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5ib3hJZCA9PT0gZnJhdWQuYm94SWQpO1xuICAgICAgICBpZiAoZGJCb3gubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmluZm8oYFVwZGF0aW5nIGZyYXVkIHdpdGggYm94SWQgWyR7ZnJhdWQuYm94SWR9XWApO1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBVcGRhdGVkIGZyYXVkOiBbJHtKU09OLnN0cmluZ2lmeShlbnRpdHkpfV1gKTtcbiAgICAgICAgICBhd2FpdCByZXBvc2l0b3J5LnVwZGF0ZSh7IGlkOiBkYkJveFswXS5pZCB9LCBlbnRpdHkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmluZm8oYFN0b3JpbmcgZnJhdWQgd2l0aCBib3hJZDogWyR7ZnJhdWQuYm94SWR9XWApO1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBJbnNlcnRlZCBmcmF1ZDogWyR7SlNPTi5zdHJpbmdpZnkoZW50aXR5KX1dYCk7XG4gICAgICAgICAgYXdhaXQgcmVwb3NpdG9yeS5pbnNlcnQoZW50aXR5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYXdhaXQgcXVlcnlSdW5uZXIuY29tbWl0VHJhbnNhY3Rpb24oKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihgQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHN0b3JpbmcgZnJhdWQgYm94ZXM6ICR7ZX1gKTtcbiAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnJvbGxiYWNrVHJhbnNhY3Rpb24oKTtcbiAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgcXVlcnlSdW5uZXIucmVsZWFzZSgpO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2VzcztcbiAgfTtcblxuICAvKipcbiAgICogSW5zZXJ0IGEgbmV3IGZyYXVkIGludG8gZGF0YWJhc2VcbiAgICogQHBhcmFtIGZyYXVkXG4gICAqIEBwYXJhbSBleHRyYWN0b3JcbiAgICovXG4gIGluc2VydEZyYXVkID0gYXN5bmMgKGZyYXVkOiBFeHRyYWN0ZWRGcmF1ZCwgZXh0cmFjdG9yOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvc2l0b3J5Lmluc2VydCh7XG4gICAgICBib3hJZDogZnJhdWQuYm94SWQsXG4gICAgICB0cmlnZ2VyQm94SWQ6IGZyYXVkLnRyaWdnZXJCb3hJZCxcbiAgICAgIHdpZDogZnJhdWQud2lkLFxuICAgICAgcnd0Q291bnQ6IGZyYXVkLnJ3dENvdW50LFxuICAgICAgY3JlYXRpb25CbG9jazogZnJhdWQuYmxvY2tJZCxcbiAgICAgIGNyZWF0aW9uSGVpZ2h0OiBmcmF1ZC5oZWlnaHQsXG4gICAgICBjcmVhdGlvblR4SWQ6IGZyYXVkLnR4SWQsXG4gICAgICBzZXJpYWxpemVkOiBmcmF1ZC5zZXJpYWxpemVkLFxuICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBhbiB1bnNwZW50IGZyYXVkIGluZm9ybWF0aW9uIGluIHRoZSBkYXRhYmFzZVxuICAgKiBAcGFyYW0gZnJhdWRcbiAgICogQHBhcmFtIGV4dHJhY3RvclxuICAgKi9cbiAgdXBkYXRlRnJhdWQgPSBhc3luYyAoZnJhdWQ6IEV4dHJhY3RlZEZyYXVkLCBleHRyYWN0b3I6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiB0aGlzLnJlcG9zaXRvcnkudXBkYXRlKFxuICAgICAgeyBib3hJZDogZnJhdWQuYm94SWQsIGV4dHJhY3RvcjogZXh0cmFjdG9yIH0sXG4gICAgICB7XG4gICAgICAgIHRyaWdnZXJCb3hJZDogZnJhdWQudHJpZ2dlckJveElkLFxuICAgICAgICBjcmVhdGlvbkJsb2NrOiBmcmF1ZC5ibG9ja0lkLFxuICAgICAgICBjcmVhdGlvbkhlaWdodDogZnJhdWQuaGVpZ2h0LFxuICAgICAgICBjcmVhdGlvblR4SWQ6IGZyYXVkLnR4SWQsXG4gICAgICAgIHNlcmlhbGl6ZWQ6IGZyYXVkLnNlcmlhbGl6ZWQsXG4gICAgICAgIHdpZDogZnJhdWQud2lkLFxuICAgICAgICByd3RDb3VudDogZnJhdWQucnd0Q291bnQsXG4gICAgICAgIHNwZW5kQmxvY2s6IG51bGwsXG4gICAgICAgIHNwZW5kSGVpZ2h0OiAwLFxuICAgICAgfVxuICAgICk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBzcGVuZEJsb2NrIGFuZCBzcGVuZEhlaWdodCBvZiBmcmF1ZHMgc3BlbnQgb24gdGhlIGJsb2NrXG4gICAqIEBwYXJhbSBzcGVuZElkc1xuICAgKiBAcGFyYW0gYmxvY2tcbiAgICogQHBhcmFtIGV4dHJhY3RvclxuICAgKi9cbiAgc3BlbmRGcmF1ZHMgPSBhc3luYyAoXG4gICAgc3BlbmRJZHM6IEFycmF5PHN0cmluZz4sXG4gICAgYmxvY2s6IEJsb2NrLFxuICAgIGV4dHJhY3Rvcjogc3RyaW5nLFxuICAgIHR4SWQ6IHN0cmluZ1xuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCBzcGVuZElkQ2h1bmtzID0gY2h1bmsoc3BlbmRJZHMsIGRiSWRDaHVua1NpemUpO1xuICAgIGZvciAoY29uc3Qgc3BlbmRJZENodW5rIG9mIHNwZW5kSWRDaHVua3MpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZVJlc3VsdCA9IGF3YWl0IHRoaXMucmVwb3NpdG9yeS51cGRhdGUoXG4gICAgICAgIHsgYm94SWQ6IEluKHNwZW5kSWRDaHVuayksIGV4dHJhY3RvcjogZXh0cmFjdG9yIH0sXG4gICAgICAgIHsgc3BlbmRCbG9jazogYmxvY2suaGFzaCwgc3BlbmRIZWlnaHQ6IGJsb2NrLmhlaWdodCwgc3BlbmRUeElkOiB0eElkIH1cbiAgICAgICk7XG5cbiAgICAgIGlmICh1cGRhdGVSZXN1bHQuYWZmZWN0ZWQgJiYgdXBkYXRlUmVzdWx0LmFmZmVjdGVkID4gMCkge1xuICAgICAgICBjb25zdCBzcGVudFJvd3MgPSBhd2FpdCB0aGlzLnJlcG9zaXRvcnkuZmluZEJ5KHtcbiAgICAgICAgICBib3hJZDogSW4oc3BlbmRJZENodW5rKSxcbiAgICAgICAgICBzcGVuZEJsb2NrOiBibG9jay5oYXNoLFxuICAgICAgICAgIHNwZW5kVHhJZDogdHhJZCxcbiAgICAgICAgfSk7XG4gICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHNwZW50Um93cykge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgYFNwZW50IGJveCB3aXRoIGJveElkIFske3Jvdy5ib3hJZH1dIGF0IHRyYW5zYWN0aW9uIFske3R4SWR9XSBhdCBoZWlnaHQgJHtibG9jay5oZWlnaHR9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBhbGwgZnJhdWRzIHJlbGF0ZWQgdG8gYW4gc3BlY2lmaWMgaW52YWxpZCBibG9ja1xuICAgKiBpZiBib3ggaGFkIGJlZW4gc3BlbnQgaW4gdGhlIGJsb2NrIG1hcmsgaXQgYXMgdW5zcGVudCxcbiAgICogYW5kIGlmIGl0IHdhcyBjcmVhdGVkIHdpdGhpbiB0aGUgYmxvY2sgcmVtb3ZlIGl0IGZyb20gZGF0YWJhc2VcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqIEBwYXJhbSBleHRyYWN0b3JcbiAgICovXG4gIGRlbGV0ZUJsb2NrID0gYXN5bmMgKGJsb2NrOiBzdHJpbmcsIGV4dHJhY3Rvcjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgdGhpcy5sb2dnZXIuaW5mbyhgRGVsZXRpbmcgZnJhdWRzIGluIGJsb2NrIFske2Jsb2NrfV1gKTtcbiAgICBjb25zdCBpbnZhbGlkUm93cyA9IGF3YWl0IHRoaXMucmVwb3NpdG9yeS5maW5kQnkoe1xuICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgICBjcmVhdGlvbkJsb2NrOiBibG9jayxcbiAgICB9KTtcbiAgICBpZiAoaW52YWxpZFJvd3MubGVuZ3RoID4gMCkge1xuICAgICAgYXdhaXQgdGhpcy5yZXBvc2l0b3J5LmRlbGV0ZSh7XG4gICAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgICAgICBjcmVhdGlvbkJsb2NrOiBibG9jayxcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCByb3cgb2YgaW52YWxpZFJvd3MpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgYGRlbGV0ZWQgaW52YWxpZCBmcmF1ZCB3aXRoIGJveElkIFske3Jvdy5ib3hJZH1dIGF0IHRoZSBmb3JrZWQgYmxvY2sgWyR7YmxvY2t9XWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgdXBkYXRpbmdSb3dzID0gYXdhaXQgdGhpcy5yZXBvc2l0b3J5LmZpbmRCeSh7XG4gICAgICBleHRyYWN0b3I6IGV4dHJhY3RvcixcbiAgICAgIHNwZW5kQmxvY2s6IGJsb2NrLFxuICAgIH0pO1xuICAgIGlmICh1cGRhdGluZ1Jvd3MubGVuZ3RoID4gMCkge1xuICAgICAgYXdhaXQgdGhpcy5yZXBvc2l0b3J5LnVwZGF0ZShcbiAgICAgICAgeyBzcGVuZEJsb2NrOiBibG9jaywgZXh0cmFjdG9yOiBleHRyYWN0b3IgfSxcbiAgICAgICAgeyBzcGVuZEJsb2NrOiBudWxsLCBzcGVuZEhlaWdodDogMCwgc3BlbmRUeElkOiBudWxsIH1cbiAgICAgICk7XG4gICAgICBmb3IgKGNvbnN0IHJvdyBvZiB1cGRhdGluZ1Jvd3MpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgYHJlbW92ZWQgc3BlbmRpbmcgaW5mb3JtYXRpb24gb2YgdGhlIGZyYXVkIHdpdGggYm94SWQgWyR7cm93LmJveElkfV0sIHNwZW50IGF0IHRoZSBmb3JrZWQgYmxvY2sgWyR7YmxvY2t9XWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbGwgc3RvcmVkIGZyYXVkIGJveCBpZHNcbiAgICovXG4gIGdldEFsbEJveElkcyA9IGFzeW5jIChleHRyYWN0b3I6IHN0cmluZyk6IFByb21pc2U8QXJyYXk8c3RyaW5nPj4gPT4ge1xuICAgIGNvbnN0IGJveElkcyA9IGF3YWl0IHRoaXMucmVwb3NpdG9yeS5maW5kKHtcbiAgICAgIHNlbGVjdDoge1xuICAgICAgICBib3hJZDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICB3aGVyZToge1xuICAgICAgICBleHRyYWN0b3I6IGV4dHJhY3RvcixcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIGJveElkcy5tYXAoKGl0ZW06IHsgYm94SWQ6IHN0cmluZyB9KSA9PiBpdGVtLmJveElkKTtcbiAgfTtcblxuICAvKipcbiAgICogUmVtb3ZlIGFuIHNwZWNpZmllZCBmcmF1ZFxuICAgKiBAcGFyYW0gYm94SWRcbiAgICogQHBhcmFtIGV4dHJhY3RvclxuICAgKi9cbiAgcmVtb3ZlRnJhdWQgPSBhc3luYyAoYm94SWQ6IHN0cmluZywgZXh0cmFjdG9yOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5yZXBvc2l0b3J5LmRlbGV0ZSh7IGJveElkOiBib3hJZCwgZXh0cmFjdG9yOiBleHRyYWN0b3IgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgZnJhdWQgc3BlbmRpbmcgaW5mb3JtYXRpb25cbiAgICogQHBhcmFtIGJveElkXG4gICAqIEBwYXJhbSBleHRyYWN0b3JcbiAgICogQHBhcmFtIGJsb2NrSWRcbiAgICogQHBhcmFtIGJsb2NrSGVpZ2h0XG4gICAqL1xuICB1cGRhdGVTcGVuZEJsb2NrID0gYXN5bmMgKFxuICAgIGJveElkOiBzdHJpbmcsXG4gICAgZXh0cmFjdG9yOiBzdHJpbmcsXG4gICAgYmxvY2tJZDogc3RyaW5nLFxuICAgIGJsb2NrSGVpZ2h0OiBudW1iZXJcbiAgKSA9PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucmVwb3NpdG9yeS51cGRhdGUoXG4gICAgICB7IGJveElkOiBib3hJZCwgZXh0cmFjdG9yOiBleHRyYWN0b3IgfSxcbiAgICAgIHsgc3BlbmRCbG9jazogYmxvY2tJZCwgc3BlbmRIZWlnaHQ6IGJsb2NrSGVpZ2h0IH1cbiAgICApO1xuICB9O1xufVxuIl19
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhdWRBY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvYWN0aW9ucy9mcmF1ZEFjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsRUFBRSxFQUFjLE1BQU0sU0FBUyxDQUFDO0FBQ3JELE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUdsQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU3QyxNQUFNLE9BQU8sV0FBVztJQUNMLFVBQVUsQ0FBYTtJQUN2QixNQUFNLENBQWlCO0lBQ3ZCLFVBQVUsQ0FBMEI7SUFFckQsWUFBWSxVQUFzQixFQUFFLE1BQXVCO1FBQ3pELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFDRDs7Ozs7O09BTUc7SUFDSCxnQkFBZ0IsR0FBRyxLQUFLLEVBQ3RCLE1BQTZCLEVBQzdCLEtBQVksRUFDWixTQUFpQixFQUNqQixFQUFFO1FBQ0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDM0MsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDakIsU0FBUyxF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QXVCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RCxDQUFDLENBQUM7SUFFRjs7OztPQUlHO0lBQ0gsV0FBVyxHQUFHLEtBQUssRUFBRSxLQUFhLEVBQUUsU0FBaUIsRUFBRSxFQUFFO1FBQ3ZELE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDOUUsQ0FBQyxDQUFDO0lBRUY7Ozs7OztPQU1HO0lBQ0gsZ0JBQWdCLEdBQUcsS0FBSyxFQUN0QixLQUFhLEVBQ2IsU0FBaUIsRUFDakIsT0FBZSxFQUNmLFdBQW1CLEVBQ25CLEVBQUU7UUFDRixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQ2pDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQ3RDLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQ2xELENBQUM7SUFDSixDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2UsIEluLCBSZXBvc2l0b3J5IH0gZnJvbSAndHlwZW9ybSc7XG5pbXBvcnQgeyBBYnN0cmFjdExvZ2dlciwgRHVtbXlMb2dnZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWxvZ2dlcic7XG5pbXBvcnQgeyBjaHVuayB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCbG9jayB9IGZyb20gJ0Byb3Nlbi1icmlkZ2Uvc2Nhbm5lci1pbnRlcmZhY2VzJztcblxuaW1wb3J0IHsgRnJhdWRFbnRpdHkgfSBmcm9tICcuLi9lbnRpdGllcy9mcmF1ZEVudGl0eSc7XG5pbXBvcnQgeyBFeHRyYWN0ZWRGcmF1ZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvdHlwZXMnO1xuaW1wb3J0IHsgZGJJZENodW5rU2l6ZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBGcmF1ZEFjdGlvbiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGF0YXNvdXJjZTogRGF0YVNvdXJjZTtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IEFic3RyYWN0TG9nZ2VyO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlcG9zaXRvcnk6IFJlcG9zaXRvcnk8RnJhdWRFbnRpdHk+O1xuXG4gIGNvbnN0cnVjdG9yKGRhdGFTb3VyY2U6IERhdGFTb3VyY2UsIGxvZ2dlcj86IEFic3RyYWN0TG9nZ2VyKSB7XG4gICAgdGhpcy5kYXRhc291cmNlID0gZGF0YVNvdXJjZTtcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlciA/IGxvZ2dlciA6IG5ldyBEdW1teUxvZ2dlcigpO1xuICAgIHRoaXMucmVwb3NpdG9yeSA9IGRhdGFTb3VyY2UuZ2V0UmVwb3NpdG9yeShGcmF1ZEVudGl0eSk7XG4gIH1cbiAgLyoqXG4gICAqIFN0b3JlIGEgbGlzdCBvZiBmcmF1ZHMgaW4gYSBzcGVjaWZpYyBibG9ja1xuICAgKiBAcGFyYW0gZnJhdWRzXG4gICAqIEBwYXJhbSBzcGVuZEJveGVzXG4gICAqIEBwYXJhbSBibG9ja1xuICAgKiBAcGFyYW0gZXh0cmFjdG9yXG4gICAqL1xuICBzdG9yZUJsb2NrRnJhdWRzID0gYXN5bmMgKFxuICAgIGZyYXVkczogQXJyYXk8RXh0cmFjdGVkRnJhdWQ+LFxuICAgIGJsb2NrOiBCbG9jayxcbiAgICBleHRyYWN0b3I6IHN0cmluZ1xuICApID0+IHtcbiAgICBjb25zdCBib3hJZHMgPSBmcmF1ZHMubWFwKChpdGVtKSA9PiBpdGVtLmJveElkKTtcbiAgICBjb25zdCBkYkJveGVzID0gYXdhaXQgdGhpcy5yZXBvc2l0b3J5LmZpbmRCeSh7XG4gICAgICBib3hJZDogSW4oYm94SWRzKSxcbiAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgIH0pO1xuICAgIGxldCBzdWNjZXNzID0gdHJ1ZTtcbiAgICBjb25zdCBxdWVyeVJ1bm5lciA9IHRoaXMuZGF0YXNvdXJjZS5jcmVhdGVRdWVyeVJ1bm5lcigpO1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLmNvbm5lY3QoKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5zdGFydFRyYW5zYWN0aW9uKCk7XG4gICAgY29uc3QgcmVwb3NpdG9yeSA9IGF3YWl0IHF1ZXJ5UnVubmVyLm1hbmFnZXIuZ2V0UmVwb3NpdG9yeShGcmF1ZEVudGl0eSk7XG4gICAgdHJ5IHtcbiAgICAgIGZvciAoY29uc3QgZnJhdWQgb2YgZnJhdWRzKSB7XG4gICAgICAgIGNvbnN0IGVudGl0eSA9IHtcbiAgICAgICAgICB0cmlnZ2VyQm94SWQ6IGZyYXVkLnRyaWdnZXJCb3hJZCxcbiAgICAgICAgICBib3hJZDogZnJhdWQuYm94SWQsXG4gICAgICAgICAgd2lkOiBmcmF1ZC53aWQsXG4gICAgICAgICAgcnd0Q291bnQ6IGZyYXVkLnJ3dENvdW50LFxuICAgICAgICAgIGNyZWF0aW9uQmxvY2s6IGJsb2NrLmhhc2gsXG4gICAgICAgICAgY3JlYXRpb25IZWlnaHQ6IGJsb2NrLmhlaWdodCxcbiAgICAgICAgICBjcmVhdGlvblR4SWQ6IGZyYXVkLnR4SWQsXG4gICAgICAgICAgc2VyaWFsaXplZDogZnJhdWQuc2VyaWFsaXplZCxcbiAgICAgICAgICBleHRyYWN0b3I6IGV4dHJhY3RvcixcbiAgICAgICAgICBzcGVuZEJsb2NrOiB1bmRlZmluZWQsXG4gICAgICAgICAgc3BlbmRIZWlnaHQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICBzcGVuZFR4SWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZGJCb3ggPSBkYkJveGVzLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5ib3hJZCA9PT0gZnJhdWQuYm94SWQpO1xuICAgICAgICBpZiAoZGJCb3gubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmluZm8oYFVwZGF0aW5nIGZyYXVkIHdpdGggYm94SWQgWyR7ZnJhdWQuYm94SWR9XWApO1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBVcGRhdGVkIGZyYXVkOiBbJHtKU09OLnN0cmluZ2lmeShlbnRpdHkpfV1gKTtcbiAgICAgICAgICBhd2FpdCByZXBvc2l0b3J5LnVwZGF0ZSh7IGlkOiBkYkJveFswXS5pZCB9LCBlbnRpdHkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmluZm8oYFN0b3JpbmcgZnJhdWQgd2l0aCBib3hJZDogWyR7ZnJhdWQuYm94SWR9XWApO1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBJbnNlcnRlZCBmcmF1ZDogWyR7SlNPTi5zdHJpbmdpZnkoZW50aXR5KX1dYCk7XG4gICAgICAgICAgYXdhaXQgcmVwb3NpdG9yeS5pbnNlcnQoZW50aXR5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYXdhaXQgcXVlcnlSdW5uZXIuY29tbWl0VHJhbnNhY3Rpb24oKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihgQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHN0b3JpbmcgZnJhdWQgYm94ZXM6ICR7ZX1gKTtcbiAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnJvbGxiYWNrVHJhbnNhY3Rpb24oKTtcbiAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgcXVlcnlSdW5uZXIucmVsZWFzZSgpO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2VzcztcbiAgfTtcblxuICAvKipcbiAgICogSW5zZXJ0IGEgbmV3IGZyYXVkIGludG8gZGF0YWJhc2VcbiAgICogQHBhcmFtIGZyYXVkXG4gICAqIEBwYXJhbSBleHRyYWN0b3JcbiAgICovXG4gIGluc2VydEZyYXVkID0gYXN5bmMgKGZyYXVkOiBFeHRyYWN0ZWRGcmF1ZCwgZXh0cmFjdG9yOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvc2l0b3J5Lmluc2VydCh7XG4gICAgICBib3hJZDogZnJhdWQuYm94SWQsXG4gICAgICB0cmlnZ2VyQm94SWQ6IGZyYXVkLnRyaWdnZXJCb3hJZCxcbiAgICAgIHdpZDogZnJhdWQud2lkLFxuICAgICAgcnd0Q291bnQ6IGZyYXVkLnJ3dENvdW50LFxuICAgICAgY3JlYXRpb25CbG9jazogZnJhdWQuYmxvY2tJZCxcbiAgICAgIGNyZWF0aW9uSGVpZ2h0OiBmcmF1ZC5oZWlnaHQsXG4gICAgICBjcmVhdGlvblR4SWQ6IGZyYXVkLnR4SWQsXG4gICAgICBzZXJpYWxpemVkOiBmcmF1ZC5zZXJpYWxpemVkLFxuICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBhbiB1bnNwZW50IGZyYXVkIGluZm9ybWF0aW9uIGluIHRoZSBkYXRhYmFzZVxuICAgKiBAcGFyYW0gZnJhdWRcbiAgICogQHBhcmFtIGV4dHJhY3RvclxuICAgKi9cbiAgdXBkYXRlRnJhdWQgPSBhc3luYyAoZnJhdWQ6IEV4dHJhY3RlZEZyYXVkLCBleHRyYWN0b3I6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiB0aGlzLnJlcG9zaXRvcnkudXBkYXRlKFxuICAgICAgeyBib3hJZDogZnJhdWQuYm94SWQsIGV4dHJhY3RvcjogZXh0cmFjdG9yIH0sXG4gICAgICB7XG4gICAgICAgIHRyaWdnZXJCb3hJZDogZnJhdWQudHJpZ2dlckJveElkLFxuICAgICAgICBjcmVhdGlvbkJsb2NrOiBmcmF1ZC5ibG9ja0lkLFxuICAgICAgICBjcmVhdGlvbkhlaWdodDogZnJhdWQuaGVpZ2h0LFxuICAgICAgICBjcmVhdGlvblR4SWQ6IGZyYXVkLnR4SWQsXG4gICAgICAgIHNlcmlhbGl6ZWQ6IGZyYXVkLnNlcmlhbGl6ZWQsXG4gICAgICAgIHdpZDogZnJhdWQud2lkLFxuICAgICAgICByd3RDb3VudDogZnJhdWQucnd0Q291bnQsXG4gICAgICAgIHNwZW5kQmxvY2s6IG51bGwsXG4gICAgICAgIHNwZW5kSGVpZ2h0OiAwLFxuICAgICAgfVxuICAgICk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBzcGVuZEJsb2NrIGFuZCBzcGVuZEhlaWdodCBvZiBmcmF1ZHMgc3BlbnQgb24gdGhlIGJsb2NrXG4gICAqIEBwYXJhbSBzcGVuZElkc1xuICAgKiBAcGFyYW0gYmxvY2tcbiAgICogQHBhcmFtIGV4dHJhY3RvclxuICAgKi9cbiAgc3BlbmRGcmF1ZHMgPSBhc3luYyAoXG4gICAgc3BlbmRJZHM6IEFycmF5PHN0cmluZz4sXG4gICAgYmxvY2s6IEJsb2NrLFxuICAgIGV4dHJhY3Rvcjogc3RyaW5nLFxuICAgIHR4SWQ6IHN0cmluZ1xuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCBzcGVuZElkQ2h1bmtzID0gY2h1bmsoc3BlbmRJZHMsIGRiSWRDaHVua1NpemUpO1xuICAgIGZvciAoY29uc3Qgc3BlbmRJZENodW5rIG9mIHNwZW5kSWRDaHVua3MpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZVJlc3VsdCA9IGF3YWl0IHRoaXMucmVwb3NpdG9yeS51cGRhdGUoXG4gICAgICAgIHsgYm94SWQ6IEluKHNwZW5kSWRDaHVuayksIGV4dHJhY3RvcjogZXh0cmFjdG9yIH0sXG4gICAgICAgIHsgc3BlbmRCbG9jazogYmxvY2suaGFzaCwgc3BlbmRIZWlnaHQ6IGJsb2NrLmhlaWdodCwgc3BlbmRUeElkOiB0eElkIH1cbiAgICAgICk7XG5cbiAgICAgIGlmICh1cGRhdGVSZXN1bHQuYWZmZWN0ZWQgJiYgdXBkYXRlUmVzdWx0LmFmZmVjdGVkID4gMCkge1xuICAgICAgICBjb25zdCBzcGVudFJvd3MgPSBhd2FpdCB0aGlzLnJlcG9zaXRvcnkuZmluZEJ5KHtcbiAgICAgICAgICBib3hJZDogSW4oc3BlbmRJZENodW5rKSxcbiAgICAgICAgICBzcGVuZEJsb2NrOiBibG9jay5oYXNoLFxuICAgICAgICAgIHNwZW5kVHhJZDogdHhJZCxcbiAgICAgICAgfSk7XG4gICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHNwZW50Um93cykge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgYFNwZW50IGJveCB3aXRoIGJveElkIFske3Jvdy5ib3hJZH1dIGF0IHRyYW5zYWN0aW9uIFske3R4SWR9XSBhdCBoZWlnaHQgJHtibG9jay5oZWlnaHR9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBhbGwgZnJhdWRzIHJlbGF0ZWQgdG8gYW4gc3BlY2lmaWMgaW52YWxpZCBibG9ja1xuICAgKiBpZiBib3ggaGFkIGJlZW4gc3BlbnQgaW4gdGhlIGJsb2NrIG1hcmsgaXQgYXMgdW5zcGVudCxcbiAgICogYW5kIGlmIGl0IHdhcyBjcmVhdGVkIHdpdGhpbiB0aGUgYmxvY2sgcmVtb3ZlIGl0IGZyb20gZGF0YWJhc2VcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqIEBwYXJhbSBleHRyYWN0b3JcbiAgICovXG4gIGRlbGV0ZUJsb2NrID0gYXN5bmMgKGJsb2NrOiBzdHJpbmcsIGV4dHJhY3Rvcjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgdGhpcy5sb2dnZXIuaW5mbyhgRGVsZXRpbmcgZnJhdWRzIGluIGJsb2NrIFske2Jsb2NrfV1gKTtcbiAgICBjb25zdCBpbnZhbGlkUm93cyA9IGF3YWl0IHRoaXMucmVwb3NpdG9yeS5maW5kQnkoe1xuICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgICBjcmVhdGlvbkJsb2NrOiBibG9jayxcbiAgICB9KTtcbiAgICBpZiAoaW52YWxpZFJvd3MubGVuZ3RoID4gMCkge1xuICAgICAgYXdhaXQgdGhpcy5yZXBvc2l0b3J5LmRlbGV0ZSh7XG4gICAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgICAgICBjcmVhdGlvbkJsb2NrOiBibG9jayxcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCByb3cgb2YgaW52YWxpZFJvd3MpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgYGRlbGV0ZWQgaW52YWxpZCBmcmF1ZCB3aXRoIGJveElkIFske3Jvdy5ib3hJZH1dIGF0IHRoZSBmb3JrZWQgYmxvY2sgWyR7YmxvY2t9XWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgdXBkYXRpbmdSb3dzID0gYXdhaXQgdGhpcy5yZXBvc2l0b3J5LmZpbmRCeSh7XG4gICAgICBleHRyYWN0b3I6IGV4dHJhY3RvcixcbiAgICAgIHNwZW5kQmxvY2s6IGJsb2NrLFxuICAgIH0pO1xuICAgIGlmICh1cGRhdGluZ1Jvd3MubGVuZ3RoID4gMCkge1xuICAgICAgYXdhaXQgdGhpcy5yZXBvc2l0b3J5LnVwZGF0ZShcbiAgICAgICAgeyBzcGVuZEJsb2NrOiBibG9jaywgZXh0cmFjdG9yOiBleHRyYWN0b3IgfSxcbiAgICAgICAgeyBzcGVuZEJsb2NrOiBudWxsLCBzcGVuZEhlaWdodDogMCwgc3BlbmRUeElkOiBudWxsIH1cbiAgICAgICk7XG4gICAgICBmb3IgKGNvbnN0IHJvdyBvZiB1cGRhdGluZ1Jvd3MpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgYHJlbW92ZWQgc3BlbmRpbmcgaW5mb3JtYXRpb24gb2YgdGhlIGZyYXVkIHdpdGggYm94SWQgWyR7cm93LmJveElkfV0sIHNwZW50IGF0IHRoZSBmb3JrZWQgYmxvY2sgWyR7YmxvY2t9XWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbGwgc3RvcmVkIGZyYXVkIGJveCBpZHNcbiAgICovXG4gIGdldEFsbEJveElkcyA9IGFzeW5jIChleHRyYWN0b3I6IHN0cmluZyk6IFByb21pc2U8QXJyYXk8c3RyaW5nPj4gPT4ge1xuICAgIGNvbnN0IGJveElkcyA9IGF3YWl0IHRoaXMucmVwb3NpdG9yeS5maW5kKHtcbiAgICAgIHNlbGVjdDoge1xuICAgICAgICBib3hJZDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICB3aGVyZToge1xuICAgICAgICBleHRyYWN0b3I6IGV4dHJhY3RvcixcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIGJveElkcy5tYXAoKGl0ZW06IHsgYm94SWQ6IHN0cmluZyB9KSA9PiBpdGVtLmJveElkKTtcbiAgfTtcblxuICAvKipcbiAgICogUmVtb3ZlIGFuIHNwZWNpZmllZCBmcmF1ZFxuICAgKiBAcGFyYW0gYm94SWRcbiAgICogQHBhcmFtIGV4dHJhY3RvclxuICAgKi9cbiAgcmVtb3ZlRnJhdWQgPSBhc3luYyAoYm94SWQ6IHN0cmluZywgZXh0cmFjdG9yOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5yZXBvc2l0b3J5LmRlbGV0ZSh7IGJveElkOiBib3hJZCwgZXh0cmFjdG9yOiBleHRyYWN0b3IgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgZnJhdWQgc3BlbmRpbmcgaW5mb3JtYXRpb25cbiAgICogQHBhcmFtIGJveElkXG4gICAqIEBwYXJhbSBleHRyYWN0b3JcbiAgICogQHBhcmFtIGJsb2NrSWRcbiAgICogQHBhcmFtIGJsb2NrSGVpZ2h0XG4gICAqL1xuICB1cGRhdGVTcGVuZEJsb2NrID0gYXN5bmMgKFxuICAgIGJveElkOiBzdHJpbmcsXG4gICAgZXh0cmFjdG9yOiBzdHJpbmcsXG4gICAgYmxvY2tJZDogc3RyaW5nLFxuICAgIGJsb2NrSGVpZ2h0OiBudW1iZXJcbiAgKSA9PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucmVwb3NpdG9yeS51cGRhdGUoXG4gICAgICB7IGJveElkOiBib3hJZCwgZXh0cmFjdG9yOiBleHRyYWN0b3IgfSxcbiAgICAgIHsgc3BlbmRCbG9jazogYmxvY2tJZCwgc3BlbmRIZWlnaHQ6IGJsb2NrSGVpZ2h0IH1cbiAgICApO1xuICB9O1xufVxuIl19
@@ -1,9 +1,8 @@
1
1
  import { DataSource } from 'typeorm';
2
- import { InitialInfo } from '@rosen-bridge/scanner';
3
2
  import { AbstractLogger } from '@rosen-bridge/abstract-logger';
4
- import { Transaction } from '@rosen-bridge/scanner';
5
3
  import { V1 } from '@rosen-clients/ergo-explorer';
6
- import { AbstractExtractor, Block } from '@rosen-bridge/abstract-extractor';
4
+ import { Block, BlockInfo, Transaction } from '@rosen-bridge/scanner-interfaces';
5
+ import { AbstractExtractor } from '@rosen-bridge/abstract-extractor';
7
6
  import { ExtractedFraud } from '../interfaces/types';
8
7
  export declare class FraudExtractor implements AbstractExtractor<Transaction> {
9
8
  private readonly logger;
@@ -106,7 +105,7 @@ export declare class FraudExtractor implements AbstractExtractor<Transaction> {
106
105
  /**
107
106
  * Initializes the database with older frauds
108
107
  */
109
- initializeBoxes: (initialBlock: InitialInfo) => Promise<void>;
108
+ initializeBoxes: (initialBlock: BlockInfo) => Promise<void>;
110
109
  /**
111
110
  * Validate all remaining boxes in the database
112
111
  * update the correct ones and remove the invalid ones
@@ -1 +1 @@
1
- {"version":3,"file":"fraudExtractor.d.ts","sourceRoot":"","sources":["../../lib/extractor/fraudExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAIrC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,EAAE,EAAE,MAAM,8BAA8B,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAI5E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,qBAAa,cAAe,YAAW,iBAAiB,CAAC,WAAW,CAAC;IACnE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,QAAQ,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAC;gBAGX,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,cAAc;IAYzB;;OAEG;IACH,KAAK,eAAsB;IAE3B;;;;OAIG;IACH,mBAAmB,QACZ,MAAM,WAAW,CAAC,SAChB,KAAK,KACX,QAAQ,OAAO,CAAC,CA2EjB;IAEF;;;OAGG;IACH,SAAS,SAAgB,MAAM,KAAG,QAAQ,IAAI,CAAC,CAE7C;IAEF;;OAEG;IACH,eAAe,iBAAwB,WAAW,mBAkChD;IAEF;;;;;OAKG;IACH,uBAAuB,0BACE,MAAM,MAAM,CAAC,iBACrB,MAAM,mBA2BrB;IAEF;;;OAGG;IACH,qBAAqB,UACZ,MAAM,KACZ,QAAQ,cAAc,GAAG,SAAS,CAAC,CAQpC;IAEF;;;;OAIG;IACH,gBAAgB,kBACC,MAAM,KACpB,QAAQ,MAAM,cAAc,CAAC,CAAC,CA+B/B;IAEF;;;OAGG;IACH,UAAU,SAAgB,MAAM;;;OAM9B;IAEF;;;OAGG;IACH,eAAe,SAAgB,MAAM,iCAGnC;IAEF;;;OAGG;IACH,cAAc,UAAiB,MAAM,GAAG,UAAU,CAAC,+BAoDjD;CACH"}
1
+ {"version":3,"file":"fraudExtractor.d.ts","sourceRoot":"","sources":["../../lib/extractor/fraudExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAIrC,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAE5E,OAAO,EAAE,EAAE,EAAE,MAAM,8BAA8B,CAAC;AAElD,OAAO,EACL,KAAK,EACL,SAAS,EACT,WAAW,EACZ,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAIrE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,qBAAa,cAAe,YAAW,iBAAiB,CAAC,WAAW,CAAC;IACnE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,QAAQ,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAC;gBAGX,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,cAAc;IAYzB;;OAEG;IACH,KAAK,eAAsB;IAE3B;;;;OAIG;IACH,mBAAmB,QACZ,MAAM,WAAW,CAAC,SAChB,KAAK,KACX,QAAQ,OAAO,CAAC,CA2EjB;IAEF;;;OAGG;IACH,SAAS,SAAgB,MAAM,KAAG,QAAQ,IAAI,CAAC,CAE7C;IAEF;;OAEG;IACH,eAAe,iBAAwB,SAAS,mBAkC9C;IAEF;;;;;OAKG;IACH,uBAAuB,0BACE,MAAM,MAAM,CAAC,iBACrB,MAAM,mBA2BrB;IAEF;;;OAGG;IACH,qBAAqB,UACZ,MAAM,KACZ,QAAQ,cAAc,GAAG,SAAS,CAAC,CAQpC;IAEF;;;;OAIG;IACH,gBAAgB,kBACC,MAAM,KACpB,QAAQ,MAAM,cAAc,CAAC,CAAC,CA+B/B;IAEF;;;OAGG;IACH,UAAU,SAAgB,MAAM;;;OAM9B;IAEF;;;OAGG;IACH,eAAe,SAAgB,MAAM,iCAGnC;IAEF;;;OAGG;IACH,cAAc,UAAiB,MAAM,GAAG,UAAU,CAAC,+BAoDjD;CACH"}
@@ -259,4 +259,4 @@ export class FraudExtractor {
259
259
  return extractedFrauds;
260
260
  };
261
261
  }
262
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhdWRFeHRyYWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvZXh0cmFjdG9yL2ZyYXVkRXh0cmFjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxJQUFJLE1BQU0sc0JBQXNCLENBQUM7QUFDN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXZDLE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFNUUsT0FBTyx5QkFBeUIsTUFBTSw4QkFBOEIsQ0FBQztBQUVyRSxPQUFPLE1BQU0sTUFBTSwyQkFBMkIsQ0FBQztBQUcvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUcvQyxNQUFNLE9BQU8sY0FBYztJQUNSLE1BQU0sQ0FBaUI7SUFDdkIsT0FBTyxDQUFjO0lBQ3JCLEVBQUUsQ0FBUztJQUNYLFFBQVEsQ0FBUztJQUNqQixHQUFHLENBQVM7SUFDcEIsR0FBRyxDQUFDO0lBRWIsWUFDRSxVQUFzQixFQUN0QixFQUFVLEVBQ1YsV0FBbUIsRUFDbkIsWUFBb0IsRUFDcEIsR0FBVyxFQUNYLE1BQXVCO1FBRXZCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUM7YUFDbkQsWUFBWSxFQUFFO2FBQ2QsZUFBZSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2xELElB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TUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFO29CQUNoQyxZQUFZLEVBQUUsWUFBWTtvQkFDMUIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztvQkFDdkMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxNQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtvQkFDMUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxRQUFRLENBQy9ELFFBQVEsQ0FDVDtvQkFDRCxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87b0JBQ3BCLE1BQU0sRUFBRSxHQUFHLENBQUMsZ0JBQWdCO29CQUM1QixJQUFJLEVBQUUsR0FBRyxDQUFDLGFBQWE7b0JBQ3ZCLFVBQVUsRUFBRSxVQUFVO29CQUN0QixXQUFXLEVBQUUsV0FBVztvQkFDeEIsU0FBUyxFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7aUJBQ2xDLENBQUM7Z0JBQ0YsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMscUJBQXFCLGNBQWMsR0FBRyxDQUFDLENBQUM7YUFDM0Q7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDVixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZixnREFBZ0QsR0FBRyxDQUFDLEtBQUssaUJBQWlCLENBQUMsRUFBRSxDQUM5RSxDQUFDO2FBQ0g7U0FDRjtRQUNELE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUMsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ3R5cGVvcm0nO1xuaW1wb3J0ICogYXMgd2FzbSBmcm9tICdlcmdvLWxpYi13YXNtLW5vZGVqcyc7XG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuaW1wb3J0IHsgZGlmZmVyZW5jZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBJbml0aWFsSW5mbyB9IGZyb20gJ0Byb3Nlbi1icmlkZ2Uvc2Nhbm5lcic7XG5pbXBvcnQgeyBBYnN0cmFjdExvZ2dlciwgRHVtbXlMb2dnZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWxvZ2dlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJ0Byb3Nlbi1icmlkZ2Uvc2Nhbm5lcic7XG5pbXBvcnQgZXJnb0V4cGxvcmVyQ2xpZW50RmFjdG9yeSBmcm9tICdAcm9zZW4tY2xpZW50cy9lcmdvLWV4cGxvcmVyJztcbmltcG9ydCB7IFYxIH0gZnJvbSAnQHJvc2VuLWNsaWVudHMvZXJnby1leHBsb3Jlcic7XG5pbXBvcnQgSnNvbkJJIGZyb20gJ0Byb3Nlbi1icmlkZ2UvanNvbi1iaWdpbnQnO1xuaW1wb3J0IHsgQWJzdHJhY3RFeHRyYWN0b3IsIEJsb2NrIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1leHRyYWN0b3InO1xuXG5pbXBvcnQgeyBGcmF1ZEFjdGlvbiB9IGZyb20gJy4uL2FjdGlvbnMvZnJhdWRBY3Rpb24nO1xuaW1wb3J0IHsgRGVmYXVsdEFwaUxpbWl0IH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEV4dHJhY3RlZEZyYXVkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBGcmF1ZEV4dHJhY3RvciBpbXBsZW1lbnRzIEFic3RyYWN0RXh0cmFjdG9yPFRyYW5zYWN0aW9uPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBBYnN0cmFjdExvZ2dlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBhY3Rpb25zOiBGcmF1ZEFjdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBpZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGVyZ29UcmVlOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcnd0OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFwaTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBkYXRhU291cmNlOiBEYXRhU291cmNlLFxuICAgIGlkOiBzdHJpbmcsXG4gICAgZXhwbG9yZXJVcmw6IHN0cmluZyxcbiAgICBmcmF1ZEFkZHJlc3M6IHN0cmluZyxcbiAgICByd3Q6IHN0cmluZyxcbiAgICBsb2dnZXI/OiBBYnN0cmFjdExvZ2dlclxuICApIHtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5lcmdvVHJlZSA9IHdhc20uQWRkcmVzcy5mcm9tX2Jhc2U1OChmcmF1ZEFkZHJlc3MpXG4gICAgICAudG9fZXJnb190cmVlKClcbiAgICAgIC50b19iYXNlMTZfYnl0ZXMoKTtcbiAgICB0aGlzLnJ3dCA9IHJ3dDtcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlciA/IGxvZ2dlciA6IG5ldyBEdW1teUxvZ2dlcigpO1xuICAgIHRoaXMuYWN0aW9ucyA9IG5ldyBGcmF1ZEFjdGlvbihkYXRhU291cmNlLCB0aGlzLmxvZ2dlcik7XG4gICAgdGhpcy5hcGkgPSBlcmdvRXhwbG9yZXJDbGllbnRGYWN0b3J5KGV4cGxvcmVyVXJsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgSWQgZm9yIGN1cnJlbnQgZXh0cmFjdG9yXG4gICAqL1xuICBnZXRJZCA9ICgpID0+IGAke3RoaXMuaWR9YDtcblxuICAvKipcbiAgICogRXh0cmFjdCBmcmF1ZCBib3hlcyBpbiB0aGUgc3BlY2lmaWVkIGJsb2NrIHRyYW5zYWN0aW9uc1xuICAgKiBAcGFyYW0gdHhzXG4gICAqIEBwYXJhbSBibG9ja1xuICAgKi9cbiAgcHJvY2Vzc1RyYW5zYWN0aW9ucyA9IChcbiAgICB0eHM6IEFycmF5PFRyYW5zYWN0aW9uPixcbiAgICBibG9jazogQmxvY2tcbiAgKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IG5ld0ZyYXVkczogQXJyYXk8RXh0cmFjdGVkRnJhdWQ+ID0gW107XG4gICAgICAgIGNvbnN0IHR4U3BlbmRJZHM6IEFycmF5PHsgdHhJZDogc3RyaW5nOyBzcGVuZEJveGVzOiBBcnJheTxzdHJpbmc+IH0+ID1cbiAgICAgICAgICBbXTtcbiAgICAgICAgdHhzLmZvckVhY2goKHRyYW5zYWN0aW9uKSA9PiB7XG4gICAgICAgICAgZm9yIChjb25zdCBvdXRwdXQgb2YgdHJhbnNhY3Rpb24ub3V0cHV0cykge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBvdXRwdXQuZXJnb1RyZWUgIT09IHRoaXMuZXJnb1RyZWUgfHxcbiAgICAgICAgICAgICAgIW91dHB1dC5hc3NldHMgfHxcbiAgICAgICAgICAgICAgb3V0cHV0LmFzc2V0c1swXS50b2tlbklkICE9PSB0aGlzLnJ3dFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYm94T3V0cHV0ID0gd2FzbS5FcmdvQm94LmZyb21fanNvbihKc29uQkkuc3RyaW5naWZ5KG91dHB1dCkpO1xuICAgICAgICAgICAgY29uc3QgcjQgPSBib3hPdXRwdXRcbiAgICAgICAgICAgICAgLnJlZ2lzdGVyX3ZhbHVlKHdhc20uTm9uTWFuZGF0b3J5UmVnaXN0ZXJJZC5SNClcbiAgICAgICAgICAgICAgPy50b19jb2xsX2NvbGxfYnl0ZSgpO1xuICAgICAgICAgICAgaWYgKCFyNCkge1xuICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAgICAgICBgQSBuZXcgZnJhdWQgYm94IGZvdW5kIHdpdGhvdXQgY29ycmVjdCB3aWQgZm9ybWF0IGF0IGhlaWdodCAke2Jsb2NrLmhlaWdodH1gXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbmV3RnJhdWQgPSB7XG4gICAgICAgICAgICAgIGJveElkOiBvdXRwdXQuYm94SWQsXG4gICAgICAgICAgICAgIHR4SWQ6IHRyYW5zYWN0aW9uLmlkLFxuICAgICAgICAgICAgICB0cmlnZ2VyQm94SWQ6IHRyYW5zYWN0aW9uLmlucHV0c1swXS5ib3hJZCxcbiAgICAgICAgICAgICAgd2lkOiBCdWZmZXIuZnJvbShyNFswXSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICAgICAgICByd3RDb3VudDogb3V0cHV0LmFzc2V0c1swXS5hbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgc2VyaWFsaXplZDogQnVmZmVyLmZyb20oXG4gICAgICAgICAgICAgICAgd2FzbS5FcmdvQm94LmZyb21fanNvbihcbiAgICAgICAgICAgICAgICAgIEpzb25CSS5zdHJpbmdpZnkob3V0cHV0KVxuICAgICAgICAgICAgICAgICkuc2lnbWFfc2VyaWFsaXplX2J5dGVzKClcbiAgICAgICAgICAgICAgKS50b1N0cmluZygnYmFzZTY0JyksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbmV3RnJhdWRzLnB1c2gobmV3RnJhdWQpO1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgICAgIGBuZXcgZnJhdWQgZm91bmQgWyR7bmV3RnJhdWR9XSBhdCBoZWlnaHQgJHtibG9jay5oZWlnaHR9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdHhTcGVuZElkcy5wdXNoKHtcbiAgICAgICAgICAgIHR4SWQ6IHRyYW5zYWN0aW9uLmlkLFxuICAgICAgICAgICAgc3BlbmRCb3hlczogdHJhbnNhY3Rpb24uaW5wdXRzLm1hcCgoYm94KSA9PiBib3guYm94SWQpLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hY3Rpb25zXG4gICAgICAgICAgLnN0b3JlQmxvY2tGcmF1ZHMobmV3RnJhdWRzLCBibG9jaywgdGhpcy5nZXRJZCgpKVxuICAgICAgICAgIC50aGVuKGFzeW5jIChzdGF0dXMpID0+IHtcbiAgICAgICAgICAgIGlmIChzdGF0dXMpIHtcbiAgICAgICAgICAgICAgaWYgKG5ld0ZyYXVkcy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgICAgICAgYHN1Y2Nlc3NmdWxseSBzdG9yZWQgbmV3IGZyYXVkcyBhdCBoaWdodCAke2Jsb2NrLmhlaWdodH1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBzcGVuZElkcyBvZiB0eFNwZW5kSWRzKVxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuYWN0aW9ucy5zcGVuZEZyYXVkcyhcbiAgICAgICAgICAgICAgICAgIHNwZW5kSWRzLnNwZW5kQm94ZXMsXG4gICAgICAgICAgICAgICAgICBibG9jayxcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0SWQoKSxcbiAgICAgICAgICAgICAgICAgIHNwZW5kSWRzLnR4SWRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzb2x2ZShzdGF0dXMpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgYEFuIGVycm9yIG9jY3VycmVkIGluIHByb2Nlc3NpbmcgZnJhdWRzIGluIGJsb2NrIFske2Jsb2NrLmhhc2h9XTogJHtlfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICAvKipcbiAgICogZm9yayBvbmUgYmxvY2sgYW5kIHJlbW92ZSBhbGwgc3RvcmVkIGluZm9ybWF0aW9uIGZvciB0aGlzIGJsb2NrXG4gICAqIEBwYXJhbSBoYXNoOiBibG9jayBoYXNoXG4gICAqL1xuICBmb3JrQmxvY2sgPSBhc3luYyAoaGFzaDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgYXdhaXQgdGhpcy5hY3Rpb25zLmRlbGV0ZUJsb2NrKGhhc2gsIHRoaXMuZ2V0SWQoKSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBkYXRhYmFzZSB3aXRoIG9sZGVyIGZyYXVkc1xuICAgKi9cbiAgaW5pdGlhbGl6ZUJveGVzID0gYXN5bmMgKGluaXRpYWxCbG9jazogSW5pdGlhbEluZm8pID0+IHtcbiAgICAvLyBHZXR0aW5nIHVuc3BlbnQgYm94ZXNcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgIGBJbml0aWFsaXppbmcgZnJhdWQgdGFibGUuIHN0b3JpbmcgZnJhdWQgYm94ZXMgY3JlYXRlZCBiZWxsb3cgaGVpZ2h0ICR7aW5pdGlhbEJsb2NrLmhlaWdodH0uYFxuICAgICk7XG4gICAgY29uc3QgdW5zcGVudEZyYXVkcyA9IGF3YWl0IHRoaXMuZ2V0VW5zcGVudEZyYXVkcyhpbml0aWFsQmxvY2suaGVpZ2h0KTtcbiAgICBjb25zdCB1bnNwZW50Qm94SWRzID0gdW5zcGVudEZyYXVkcy5tYXAoKGJveCkgPT4gYm94LmJveElkKTtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgVW5zcGVudCBmcmF1ZCBib3hJZHMgJHt1bnNwZW50Qm94SWRzfWApO1xuXG4gICAgLy8gU3RvcmluZyBleHRyYWN0ZWQgYm94ZXNcbiAgICBsZXQgYWxsU3RvcmVkQm94SWRzID0gYXdhaXQgdGhpcy5hY3Rpb25zLmdldEFsbEJveElkcyh0aGlzLmdldElkKCkpO1xuICAgIGZvciAoY29uc3QgZnJhdWQgb2YgdW5zcGVudEZyYXVkcykge1xuICAgICAgaWYgKGFsbFN0b3JlZEJveElkcy5pbmNsdWRlcyhmcmF1ZC5ib3hJZCkpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5hY3Rpb25zLnVwZGF0ZUZyYXVkKGZyYXVkLCB0aGlzLmdldElkKCkpO1xuICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgICAgIGBVcGRhdGVkIHRoZSBleGlzdGluZyB1bnNwZW50IGZyYXVkIHdpdGggYm94SWQsIFske2ZyYXVkLmJveElkfV1gXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBVcGRhdGVkIGZyYXVkOiBbJHtKU09OLnN0cmluZ2lmeShmcmF1ZCl9XWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXdhaXQgdGhpcy5hY3Rpb25zLmluc2VydEZyYXVkKGZyYXVkLCB0aGlzLmdldElkKCkpO1xuICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgICAgIGBJbnNlcnRlZCBuZXcgdW5zcGVudCBmcmF1ZCB3aXRoIGJveElkLCBbJHtmcmF1ZC5ib3hJZH1dYFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgSW5zZXJ0ZWQgZnJhdWQ6IFske0pTT04uc3RyaW5naWZ5KGZyYXVkKX1dYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIHVwZGF0ZWQgYm94IGlkcyBmcm9tIGV4aXN0aW5nIGJveGVzIGluIGRhdGFiYXNlXG4gICAgYWxsU3RvcmVkQm94SWRzID0gZGlmZmVyZW5jZShhbGxTdG9yZWRCb3hJZHMsIHVuc3BlbnRCb3hJZHMpO1xuICAgIC8vIFZhbGlkYXRpbmcgcmVtYWluZWQgYm94ZXNcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgIGBWYWxpZGF0aW5nIGFuZCB1cGRhdGluZyBzdG9yZWQgZnJhdWQgYm94ZXMgd2l0aCBib3hJZHMgJHthbGxTdG9yZWRCb3hJZHN9YFxuICAgICk7XG4gICAgYXdhaXQgdGhpcy52YWxpZGF0ZU9sZFN0b3JlZEZyYXVkcyhhbGxTdG9yZWRCb3hJZHMsIGluaXRpYWxCbG9jay5oZWlnaHQpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBhbGwgcmVtYWluaW5nIGJveGVzIGluIHRoZSBkYXRhYmFzZVxuICAgKiB1cGRhdGUgdGhlIGNvcnJlY3Qgb25lcyBhbmQgcmVtb3ZlIHRoZSBpbnZhbGlkIG9uZXNcbiAgICogQHBhcmFtIHVuY2hhbmdlZFN0b3JlZEJveElkc1xuICAgKiBAcGFyYW0gaW5pdGlhbEhlaWdodFxuICAgKi9cbiAgdmFsaWRhdGVPbGRTdG9yZWRGcmF1ZHMgPSBhc3luYyAoXG4gICAgdW5jaGFuZ2VkU3RvcmVkQm94SWRzOiBBcnJheTxzdHJpbmc+LFxuICAgIGluaXRpYWxIZWlnaHQ6IG51bWJlclxuICApID0+IHtcbiAgICBmb3IgKGNvbnN0IGJveElkIG9mIHVuY2hhbmdlZFN0b3JlZEJveElkcykge1xuICAgICAgY29uc3QgYm94ID0gYXdhaXQgdGhpcy5nZXRGcmF1ZEluZm9XaXRoQm94SWQoYm94SWQpO1xuICAgICAgaWYgKGJveCAmJiBib3guc3BlbmRCbG9jayAmJiBib3guc3BlbmRIZWlnaHQpIHtcbiAgICAgICAgaWYgKGJveC5zcGVuZEhlaWdodCA8IGluaXRpYWxIZWlnaHQpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAgIGB1cGRhdGluZyBzcGVuZGluZyBpbmZvcm1hdGlvbiBvZiBmcmF1ZCB3aXRoIGJveElkIFske2JveC5ib3hJZH1dIHNwZW50IGF0IGhlaWdodCBbJHtib3guc3BlbmRIZWlnaHR9XWBcbiAgICAgICAgICApO1xuICAgICAgICAgIGF3YWl0IHRoaXMuYWN0aW9ucy51cGRhdGVTcGVuZEJsb2NrKFxuICAgICAgICAgICAgYm94SWQsXG4gICAgICAgICAgICB0aGlzLmdldElkKCksXG4gICAgICAgICAgICBib3guc3BlbmRCbG9jayxcbiAgICAgICAgICAgIGJveC5zcGVuZEhlaWdodFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgICBgZnJhdWQgd2l0aCBib3hJZCBbJHtib3guYm94SWR9XSBoYXMgYmVlbiBzcGVudCBhZnRlciB0aGUgaW5pdGlhbGl6YXRpb24gaGVpZ2h0LCB1cGRhdGluZyBzcGVuZGluZyBpbmZvcm1hdGlvbiBza2lwcGVkLmBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCB0aGlzLmFjdGlvbnMucmVtb3ZlRnJhdWQoYm94SWQsIHRoaXMuZ2V0SWQoKSk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICAgICAgYFJlbW92ZWQgaW52YWxpZCBmcmF1ZCBbJHtib3hJZH1dIGluIGluaXRpYWxpemF0aW9uIHZhbGlkYXRpb25gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gZXh0cmFjdGVkIGluZm9ybWF0aW9uIG9mIGEgZnJhdWQgd2l0aCBpdHMgYm94SWRcbiAgICogQHBhcmFtIGJveElkXG4gICAqL1xuICBnZXRGcmF1ZEluZm9XaXRoQm94SWQgPSBhc3luYyAoXG4gICAgYm94SWQ6IHN0cmluZ1xuICApOiBQcm9taXNlPEV4dHJhY3RlZEZyYXVkIHwgdW5kZWZpbmVkPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJveCA9IGF3YWl0IHRoaXMuYXBpLnYxLmdldEFwaVYxQm94ZXNQMShib3hJZCk7XG4gICAgICByZXR1cm4gKGF3YWl0IHRoaXMuZXh0cmFjdEJveERhdGEoW2JveF0pKVswXTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMubG9nZ2VyLndhcm4oYEJveCB3aXRoIGlkIFske2JveElkfV0gZG9lcyBub3QgZXhpc3RzYCk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogR2V0IHVuc3BlbnQgZnJhdWRzIGNyZWF0ZWQgYmVsbG93IHRoZSBpbml0aWFsIGhlaWdodFxuICAgKiBAcGFyYW0gaW5pdGlhbEhlaWdodFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZ2V0VW5zcGVudEZyYXVkcyA9IGFzeW5jIChcbiAgICBpbml0aWFsSGVpZ2h0OiBudW1iZXJcbiAgKTogUHJvbWlzZTxBcnJheTxFeHRyYWN0ZWRGcmF1ZD4+ID0+IHtcbiAgICBsZXQgYWxsQm94ZXM6IEFycmF5PEV4dHJhY3RlZEZyYXVkPiA9IFtdO1xuICAgIGxldCBvZmZzZXQgPSAwLFxuICAgICAgdG90YWwgPSBEZWZhdWx0QXBpTGltaXQsXG4gICAgICBib3hlczogVjEuSXRlbXNPdXRwdXRJbmZvO1xuICAgIHdoaWxlIChvZmZzZXQgPCB0b3RhbCkge1xuICAgICAgYm94ZXMgPSBhd2FpdCB0aGlzLmFwaS52MS5nZXRBcGlWMUJveGVzVW5zcGVudEJ5ZXJnb3RyZWVQMShcbiAgICAgICAgdGhpcy5lcmdvVHJlZSxcbiAgICAgICAge1xuICAgICAgICAgIG9mZnNldDogb2Zmc2V0LFxuICAgICAgICAgIGxpbWl0OiBEZWZhdWx0QXBpTGltaXQsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICBpZiAoIWJveGVzLml0ZW1zKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRXhwbG9yZXIgYXBpIG91dHB1dCBpdGVtcyBzaG91bGQgbm90IGJlIHVuZGVmaW5lZC4nKTtcbiAgICAgIH1cbiAgICAgIGFsbEJveGVzID0gW1xuICAgICAgICAuLi5hbGxCb3hlcyxcbiAgICAgICAgLi4uKGF3YWl0IHRoaXMuZXh0cmFjdEJveERhdGEoXG4gICAgICAgICAgYm94ZXMuaXRlbXMuZmlsdGVyKFxuICAgICAgICAgICAgKGJveCkgPT5cbiAgICAgICAgICAgICAgYm94LmNyZWF0aW9uSGVpZ2h0IDwgaW5pdGlhbEhlaWdodCAmJlxuICAgICAgICAgICAgICBib3guYXNzZXRzICYmXG4gICAgICAgICAgICAgIGJveC5hc3NldHNbMF0udG9rZW5JZCA9PSB0aGlzLnJ3dFxuICAgICAgICAgIClcbiAgICAgICAgKSksXG4gICAgICBdO1xuICAgICAgdG90YWwgPSBib3hlcy50b3RhbDtcbiAgICAgIG9mZnNldCArPSBEZWZhdWx0QXBpTGltaXQ7XG4gICAgfVxuICAgIHJldHVybiBhbGxCb3hlcztcbiAgfTtcblxuICAvKipcbiAgICogUmV0dXJucyBibG9jayBpbmZvcm1hdGlvbiBvZiB0eFxuICAgKiBAcGFyYW0gdHhJZFxuICAgKi9cbiAgZ2V0VHhCbG9jayA9IGFzeW5jICh0eElkOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHRoaXMuYXBpLnYxLmdldEFwaVYxVHJhbnNhY3Rpb25zUDEodHhJZCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB0eC5ibG9ja0lkLFxuICAgICAgaGVpZ2h0OiB0eC5pbmNsdXNpb25IZWlnaHQsXG4gICAgfTtcbiAgfTtcblxuICAvKipcbiAgICogUmV0dXJucyB0cmlnZ2VyIGJveElkIGZyb20gZnJhdWQgdHJhbnNhY3Rpb24gaWRcbiAgICogQHBhcmFtIHR4SWRcbiAgICovXG4gIGdldFRyaWdnZXJCb3hJZCA9IGFzeW5jICh0eElkOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHRoaXMuYXBpLnYxLmdldEFwaVYxVHJhbnNhY3Rpb25zUDEodHhJZCk7XG4gICAgcmV0dXJuIHR4LmlucHV0cz8uWzBdLmJveElkO1xuICB9O1xuXG4gIC8qKlxuICAgKiBFeHRyYWN0IG5lZWRlZCBpbmZvcm1hdGlvbiBmb3Igc3RvcmluZyBpbiBkYXRhYmFzZSBmcm9tIGFwaSBqc29uIG91dHB1dHNcbiAgICogQHBhcmFtIGJveGVzXG4gICAqL1xuICBleHRyYWN0Qm94RGF0YSA9IGFzeW5jIChib3hlczogQXJyYXk8VjEuT3V0cHV0SW5mbz4pID0+IHtcbiAgICBjb25zdCBleHRyYWN0ZWRGcmF1ZHM6IEFycmF5PEV4dHJhY3RlZEZyYXVkPiA9IFtdO1xuICAgIGZvciAoY29uc3QgYm94IG9mIGJveGVzKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBgRXh0cmFjdGluZyBib3ggZnJhdWQgaW5mb3JtYXRpb24gZnJvbSBib3ggd2l0aCBib3hJZCBbJHtib3guYm94SWR9XWBcbiAgICAgICAgKTtcbiAgICAgICAgbGV0IHNwZW5kQmxvY2ssIHNwZW5kSGVpZ2h0O1xuICAgICAgICAvLyBFeHRyYWN0IHNwZW5kaW5nIGluZm9ybWF0aW9uXG4gICAgICAgIGlmIChib3guc3BlbnRUcmFuc2FjdGlvbklkKSB7XG4gICAgICAgICAgY29uc3QgYmxvY2sgPSBhd2FpdCB0aGlzLmdldFR4QmxvY2soYm94LnNwZW50VHJhbnNhY3Rpb25JZCk7XG4gICAgICAgICAgc3BlbmRCbG9jayA9IGJsb2NrLmlkO1xuICAgICAgICAgIHNwZW5kSGVpZ2h0ID0gYmxvY2suaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIC8vIEV4dHJhY3QgV0lEXG4gICAgICAgIGNvbnN0IGVyZ29Cb3ggPSB3YXNtLkVyZ29Cb3guZnJvbV9qc29uKEpzb25CSS5zdHJpbmdpZnkoYm94KSk7XG4gICAgICAgIGNvbnN0IHI0ID0gZXJnb0JveFxuICAgICAgICAgIC5yZWdpc3Rlcl92YWx1ZSh3YXNtLk5vbk1hbmRhdG9yeVJlZ2lzdGVySWQuUjQpXG4gICAgICAgICAgPy50b19jb2xsX2NvbGxfYnl0ZSgpO1xuICAgICAgICAvLyBFeHRyYWN0IHRyaWdnZXIgYm94SWRcbiAgICAgICAgY29uc3QgdHJpZ2dlckJveElkID0gYXdhaXQgdGhpcy5nZXRUcmlnZ2VyQm94SWQoYm94LnRyYW5zYWN0aW9uSWQpO1xuICAgICAgICBpZiAoIXI0IHx8ICF0cmlnZ2VyQm94SWQpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci53YXJuKFxuICAgICAgICAgICAgYFNraXBwaW5nIHN0b3JpbmcgZnJhdWQgd2l0aCBib3hJZCBbJHtib3guYm94SWR9XSwgd2lkIG9yIHRyaWdnZXIgYm94IGlkIGlzIHVuZGVmaW5lZGBcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXh0cmFjdGVkRnJhdWQgPSB7XG4gICAgICAgICAgYm94SWQ6IGVyZ29Cb3guYm94X2lkKCkudG9fc3RyKCksXG4gICAgICAgICAgdHJpZ2dlckJveElkOiB0cmlnZ2VyQm94SWQsXG4gICAgICAgICAgd2lkOiBCdWZmZXIuZnJvbShyNFswXSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICAgIHJ3dENvdW50OiBib3guYXNzZXRzIVswXS5hbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICBzZXJpYWxpemVkOiBCdWZmZXIuZnJvbShlcmdvQm94LnNpZ21hX3NlcmlhbGl6ZV9ieXRlcygpKS50b1N0cmluZyhcbiAgICAgICAgICAgICdiYXNlNjQnXG4gICAgICAgICAgKSxcbiAgICAgICAgICBibG9ja0lkOiBib3guYmxvY2tJZCxcbiAgICAgICAgICBoZWlnaHQ6IGJveC5zZXR0bGVtZW50SGVpZ2h0LFxuICAgICAgICAgIHR4SWQ6IGJveC50cmFuc2FjdGlvbklkLFxuICAgICAgICAgIHNwZW5kQmxvY2s6IHNwZW5kQmxvY2ssXG4gICAgICAgICAgc3BlbmRIZWlnaHQ6IHNwZW5kSGVpZ2h0LFxuICAgICAgICAgIHNwZW5kVHhJZDogYm94LnNwZW50VHJhbnNhY3Rpb25JZCxcbiAgICAgICAgfTtcbiAgICAgICAgZXh0cmFjdGVkRnJhdWRzLnB1c2goZXh0cmFjdGVkRnJhdWQpO1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgRXh0cmFjdGVkIGZyYXVkOiBbJHtleHRyYWN0ZWRGcmF1ZH1dYCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICAgIGBFeHRyYWN0aW5nIGZyYXVkIGluZm9ybWF0aW9uIGZhaWxlZCBmb3IgYm94IFske2JveC5ib3hJZH1dIHdpdGggZXJyb3I6ICR7ZX1gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBleHRyYWN0ZWRGcmF1ZHM7XG4gIH07XG59XG4iXX0=
262
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhdWRFeHRyYWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvZXh0cmFjdG9yL2ZyYXVkRXh0cmFjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxJQUFJLE1BQU0sc0JBQXNCLENBQUM7QUFDN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3ZDLE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUUsT0FBTyx5QkFBeUIsTUFBTSw4QkFBOEIsQ0FBQztBQUVyRSxPQUFPLE1BQU0sTUFBTSwyQkFBMkIsQ0FBQztBQVEvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUcvQyxNQUFNLE9BQU8sY0FBYztJQUNSLE1BQU0sQ0FBaUI7SUFDdkIsT0FBTyxDQUFjO0lBQ3JCLEVBQUUsQ0FBUztJQUNYLFFBQVEsQ0FBUztJQUNqQixHQUFHLENBQVM7SUFDcEIsR0FBRyxDQUFDO0lBRWIsWUFDRSxVQUFzQixFQUN0QixFQUFVLEVBQ1YsV0FBbUIsRUFDbkIsWUFBb0IsRUFDcEIsR0FBVyxFQUNYLE1BQXVCO1FBRXZCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUM7YUFDbkQsWUFBWSxFQUFFO2FBQ2QsZUFBZSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2xELElB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TUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFO29CQUNoQyxZQUFZLEVBQUUsWUFBWTtvQkFDMUIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztvQkFDdkMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxNQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtvQkFDMUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxRQUFRLENBQy9ELFFBQVEsQ0FDVDtvQkFDRCxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87b0JBQ3BCLE1BQU0sRUFBRSxHQUFHLENBQUMsZ0JBQWdCO29CQUM1QixJQUFJLEVBQUUsR0FBRyxDQUFDLGFBQWE7b0JBQ3ZCLFVBQVUsRUFBRSxVQUFVO29CQUN0QixXQUFXLEVBQUUsV0FBVztvQkFDeEIsU0FBUyxFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7aUJBQ2xDLENBQUM7Z0JBQ0YsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMscUJBQXFCLGNBQWMsR0FBRyxDQUFDLENBQUM7YUFDM0Q7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDVixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZixnREFBZ0QsR0FBRyxDQUFDLEtBQUssaUJBQWlCLENBQUMsRUFBRSxDQUM5RSxDQUFDO2FBQ0g7U0FDRjtRQUNELE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUMsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ3R5cGVvcm0nO1xuaW1wb3J0ICogYXMgd2FzbSBmcm9tICdlcmdvLWxpYi13YXNtLW5vZGVqcyc7XG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuaW1wb3J0IHsgZGlmZmVyZW5jZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBYnN0cmFjdExvZ2dlciwgRHVtbXlMb2dnZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWxvZ2dlcic7XG5pbXBvcnQgZXJnb0V4cGxvcmVyQ2xpZW50RmFjdG9yeSBmcm9tICdAcm9zZW4tY2xpZW50cy9lcmdvLWV4cGxvcmVyJztcbmltcG9ydCB7IFYxIH0gZnJvbSAnQHJvc2VuLWNsaWVudHMvZXJnby1leHBsb3Jlcic7XG5pbXBvcnQgSnNvbkJJIGZyb20gJ0Byb3Nlbi1icmlkZ2UvanNvbi1iaWdpbnQnO1xuaW1wb3J0IHtcbiAgQmxvY2ssXG4gIEJsb2NrSW5mbyxcbiAgVHJhbnNhY3Rpb24sXG59IGZyb20gJ0Byb3Nlbi1icmlkZ2Uvc2Nhbm5lci1pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFic3RyYWN0RXh0cmFjdG9yIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1leHRyYWN0b3InO1xuXG5pbXBvcnQgeyBGcmF1ZEFjdGlvbiB9IGZyb20gJy4uL2FjdGlvbnMvZnJhdWRBY3Rpb24nO1xuaW1wb3J0IHsgRGVmYXVsdEFwaUxpbWl0IH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEV4dHJhY3RlZEZyYXVkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBGcmF1ZEV4dHJhY3RvciBpbXBsZW1lbnRzIEFic3RyYWN0RXh0cmFjdG9yPFRyYW5zYWN0aW9uPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBBYnN0cmFjdExvZ2dlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBhY3Rpb25zOiBGcmF1ZEFjdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBpZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGVyZ29UcmVlOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcnd0OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFwaTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBkYXRhU291cmNlOiBEYXRhU291cmNlLFxuICAgIGlkOiBzdHJpbmcsXG4gICAgZXhwbG9yZXJVcmw6IHN0cmluZyxcbiAgICBmcmF1ZEFkZHJlc3M6IHN0cmluZyxcbiAgICByd3Q6IHN0cmluZyxcbiAgICBsb2dnZXI/OiBBYnN0cmFjdExvZ2dlclxuICApIHtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5lcmdvVHJlZSA9IHdhc20uQWRkcmVzcy5mcm9tX2Jhc2U1OChmcmF1ZEFkZHJlc3MpXG4gICAgICAudG9fZXJnb190cmVlKClcbiAgICAgIC50b19iYXNlMTZfYnl0ZXMoKTtcbiAgICB0aGlzLnJ3dCA9IHJ3dDtcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlciA/IGxvZ2dlciA6IG5ldyBEdW1teUxvZ2dlcigpO1xuICAgIHRoaXMuYWN0aW9ucyA9IG5ldyBGcmF1ZEFjdGlvbihkYXRhU291cmNlLCB0aGlzLmxvZ2dlcik7XG4gICAgdGhpcy5hcGkgPSBlcmdvRXhwbG9yZXJDbGllbnRGYWN0b3J5KGV4cGxvcmVyVXJsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgSWQgZm9yIGN1cnJlbnQgZXh0cmFjdG9yXG4gICAqL1xuICBnZXRJZCA9ICgpID0+IGAke3RoaXMuaWR9YDtcblxuICAvKipcbiAgICogRXh0cmFjdCBmcmF1ZCBib3hlcyBpbiB0aGUgc3BlY2lmaWVkIGJsb2NrIHRyYW5zYWN0aW9uc1xuICAgKiBAcGFyYW0gdHhzXG4gICAqIEBwYXJhbSBibG9ja1xuICAgKi9cbiAgcHJvY2Vzc1RyYW5zYWN0aW9ucyA9IChcbiAgICB0eHM6IEFycmF5PFRyYW5zYWN0aW9uPixcbiAgICBibG9jazogQmxvY2tcbiAgKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IG5ld0ZyYXVkczogQXJyYXk8RXh0cmFjdGVkRnJhdWQ+ID0gW107XG4gICAgICAgIGNvbnN0IHR4U3BlbmRJZHM6IEFycmF5PHsgdHhJZDogc3RyaW5nOyBzcGVuZEJveGVzOiBBcnJheTxzdHJpbmc+IH0+ID1cbiAgICAgICAgICBbXTtcbiAgICAgICAgdHhzLmZvckVhY2goKHRyYW5zYWN0aW9uKSA9PiB7XG4gICAgICAgICAgZm9yIChjb25zdCBvdXRwdXQgb2YgdHJhbnNhY3Rpb24ub3V0cHV0cykge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBvdXRwdXQuZXJnb1RyZWUgIT09IHRoaXMuZXJnb1RyZWUgfHxcbiAgICAgICAgICAgICAgIW91dHB1dC5hc3NldHMgfHxcbiAgICAgICAgICAgICAgb3V0cHV0LmFzc2V0c1swXS50b2tlbklkICE9PSB0aGlzLnJ3dFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYm94T3V0cHV0ID0gd2FzbS5FcmdvQm94LmZyb21fanNvbihKc29uQkkuc3RyaW5naWZ5KG91dHB1dCkpO1xuICAgICAgICAgICAgY29uc3QgcjQgPSBib3hPdXRwdXRcbiAgICAgICAgICAgICAgLnJlZ2lzdGVyX3ZhbHVlKHdhc20uTm9uTWFuZGF0b3J5UmVnaXN0ZXJJZC5SNClcbiAgICAgICAgICAgICAgPy50b19jb2xsX2NvbGxfYnl0ZSgpO1xuICAgICAgICAgICAgaWYgKCFyNCkge1xuICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAgICAgICBgQSBuZXcgZnJhdWQgYm94IGZvdW5kIHdpdGhvdXQgY29ycmVjdCB3aWQgZm9ybWF0IGF0IGhlaWdodCAke2Jsb2NrLmhlaWdodH1gXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbmV3RnJhdWQgPSB7XG4gICAgICAgICAgICAgIGJveElkOiBvdXRwdXQuYm94SWQsXG4gICAgICAgICAgICAgIHR4SWQ6IHRyYW5zYWN0aW9uLmlkLFxuICAgICAgICAgICAgICB0cmlnZ2VyQm94SWQ6IHRyYW5zYWN0aW9uLmlucHV0c1swXS5ib3hJZCxcbiAgICAgICAgICAgICAgd2lkOiBCdWZmZXIuZnJvbShyNFswXSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICAgICAgICByd3RDb3VudDogb3V0cHV0LmFzc2V0c1swXS5hbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgc2VyaWFsaXplZDogQnVmZmVyLmZyb20oXG4gICAgICAgICAgICAgICAgd2FzbS5FcmdvQm94LmZyb21fanNvbihcbiAgICAgICAgICAgICAgICAgIEpzb25CSS5zdHJpbmdpZnkob3V0cHV0KVxuICAgICAgICAgICAgICAgICkuc2lnbWFfc2VyaWFsaXplX2J5dGVzKClcbiAgICAgICAgICAgICAgKS50b1N0cmluZygnYmFzZTY0JyksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbmV3RnJhdWRzLnB1c2gobmV3RnJhdWQpO1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgICAgIGBuZXcgZnJhdWQgZm91bmQgWyR7bmV3RnJhdWR9XSBhdCBoZWlnaHQgJHtibG9jay5oZWlnaHR9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdHhTcGVuZElkcy5wdXNoKHtcbiAgICAgICAgICAgIHR4SWQ6IHRyYW5zYWN0aW9uLmlkLFxuICAgICAgICAgICAgc3BlbmRCb3hlczogdHJhbnNhY3Rpb24uaW5wdXRzLm1hcCgoYm94KSA9PiBib3guYm94SWQpLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hY3Rpb25zXG4gICAgICAgICAgLnN0b3JlQmxvY2tGcmF1ZHMobmV3RnJhdWRzLCBibG9jaywgdGhpcy5nZXRJZCgpKVxuICAgICAgICAgIC50aGVuKGFzeW5jIChzdGF0dXMpID0+IHtcbiAgICAgICAgICAgIGlmIChzdGF0dXMpIHtcbiAgICAgICAgICAgICAgaWYgKG5ld0ZyYXVkcy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgICAgICAgYHN1Y2Nlc3NmdWxseSBzdG9yZWQgbmV3IGZyYXVkcyBhdCBoaWdodCAke2Jsb2NrLmhlaWdodH1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBzcGVuZElkcyBvZiB0eFNwZW5kSWRzKVxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuYWN0aW9ucy5zcGVuZEZyYXVkcyhcbiAgICAgICAgICAgICAgICAgIHNwZW5kSWRzLnNwZW5kQm94ZXMsXG4gICAgICAgICAgICAgICAgICBibG9jayxcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0SWQoKSxcbiAgICAgICAgICAgICAgICAgIHNwZW5kSWRzLnR4SWRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzb2x2ZShzdGF0dXMpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgYEFuIGVycm9yIG9jY3VycmVkIGluIHByb2Nlc3NpbmcgZnJhdWRzIGluIGJsb2NrIFske2Jsb2NrLmhhc2h9XTogJHtlfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICAvKipcbiAgICogZm9yayBvbmUgYmxvY2sgYW5kIHJlbW92ZSBhbGwgc3RvcmVkIGluZm9ybWF0aW9uIGZvciB0aGlzIGJsb2NrXG4gICAqIEBwYXJhbSBoYXNoOiBibG9jayBoYXNoXG4gICAqL1xuICBmb3JrQmxvY2sgPSBhc3luYyAoaGFzaDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgYXdhaXQgdGhpcy5hY3Rpb25zLmRlbGV0ZUJsb2NrKGhhc2gsIHRoaXMuZ2V0SWQoKSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBkYXRhYmFzZSB3aXRoIG9sZGVyIGZyYXVkc1xuICAgKi9cbiAgaW5pdGlhbGl6ZUJveGVzID0gYXN5bmMgKGluaXRpYWxCbG9jazogQmxvY2tJbmZvKSA9PiB7XG4gICAgLy8gR2V0dGluZyB1bnNwZW50IGJveGVzXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICBgSW5pdGlhbGl6aW5nIGZyYXVkIHRhYmxlLiBzdG9yaW5nIGZyYXVkIGJveGVzIGNyZWF0ZWQgYmVsbG93IGhlaWdodCAke2luaXRpYWxCbG9jay5oZWlnaHR9LmBcbiAgICApO1xuICAgIGNvbnN0IHVuc3BlbnRGcmF1ZHMgPSBhd2FpdCB0aGlzLmdldFVuc3BlbnRGcmF1ZHMoaW5pdGlhbEJsb2NrLmhlaWdodCk7XG4gICAgY29uc3QgdW5zcGVudEJveElkcyA9IHVuc3BlbnRGcmF1ZHMubWFwKChib3gpID0+IGJveC5ib3hJZCk7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoYFVuc3BlbnQgZnJhdWQgYm94SWRzICR7dW5zcGVudEJveElkc31gKTtcblxuICAgIC8vIFN0b3JpbmcgZXh0cmFjdGVkIGJveGVzXG4gICAgbGV0IGFsbFN0b3JlZEJveElkcyA9IGF3YWl0IHRoaXMuYWN0aW9ucy5nZXRBbGxCb3hJZHModGhpcy5nZXRJZCgpKTtcbiAgICBmb3IgKGNvbnN0IGZyYXVkIG9mIHVuc3BlbnRGcmF1ZHMpIHtcbiAgICAgIGlmIChhbGxTdG9yZWRCb3hJZHMuaW5jbHVkZXMoZnJhdWQuYm94SWQpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYWN0aW9ucy51cGRhdGVGcmF1ZChmcmF1ZCwgdGhpcy5nZXRJZCgpKTtcbiAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhcbiAgICAgICAgICBgVXBkYXRlZCB0aGUgZXhpc3RpbmcgdW5zcGVudCBmcmF1ZCB3aXRoIGJveElkLCBbJHtmcmF1ZC5ib3hJZH1dYFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgVXBkYXRlZCBmcmF1ZDogWyR7SlNPTi5zdHJpbmdpZnkoZnJhdWQpfV1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYWN0aW9ucy5pbnNlcnRGcmF1ZChmcmF1ZCwgdGhpcy5nZXRJZCgpKTtcbiAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhcbiAgICAgICAgICBgSW5zZXJ0ZWQgbmV3IHVuc3BlbnQgZnJhdWQgd2l0aCBib3hJZCwgWyR7ZnJhdWQuYm94SWR9XWBcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYEluc2VydGVkIGZyYXVkOiBbJHtKU09OLnN0cmluZ2lmeShmcmF1ZCl9XWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlbW92ZSB1cGRhdGVkIGJveCBpZHMgZnJvbSBleGlzdGluZyBib3hlcyBpbiBkYXRhYmFzZVxuICAgIGFsbFN0b3JlZEJveElkcyA9IGRpZmZlcmVuY2UoYWxsU3RvcmVkQm94SWRzLCB1bnNwZW50Qm94SWRzKTtcbiAgICAvLyBWYWxpZGF0aW5nIHJlbWFpbmVkIGJveGVzXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICBgVmFsaWRhdGluZyBhbmQgdXBkYXRpbmcgc3RvcmVkIGZyYXVkIGJveGVzIHdpdGggYm94SWRzICR7YWxsU3RvcmVkQm94SWRzfWBcbiAgICApO1xuICAgIGF3YWl0IHRoaXMudmFsaWRhdGVPbGRTdG9yZWRGcmF1ZHMoYWxsU3RvcmVkQm94SWRzLCBpbml0aWFsQmxvY2suaGVpZ2h0KTtcbiAgfTtcblxuICAvKipcbiAgICogVmFsaWRhdGUgYWxsIHJlbWFpbmluZyBib3hlcyBpbiB0aGUgZGF0YWJhc2VcbiAgICogdXBkYXRlIHRoZSBjb3JyZWN0IG9uZXMgYW5kIHJlbW92ZSB0aGUgaW52YWxpZCBvbmVzXG4gICAqIEBwYXJhbSB1bmNoYW5nZWRTdG9yZWRCb3hJZHNcbiAgICogQHBhcmFtIGluaXRpYWxIZWlnaHRcbiAgICovXG4gIHZhbGlkYXRlT2xkU3RvcmVkRnJhdWRzID0gYXN5bmMgKFxuICAgIHVuY2hhbmdlZFN0b3JlZEJveElkczogQXJyYXk8c3RyaW5nPixcbiAgICBpbml0aWFsSGVpZ2h0OiBudW1iZXJcbiAgKSA9PiB7XG4gICAgZm9yIChjb25zdCBib3hJZCBvZiB1bmNoYW5nZWRTdG9yZWRCb3hJZHMpIHtcbiAgICAgIGNvbnN0IGJveCA9IGF3YWl0IHRoaXMuZ2V0RnJhdWRJbmZvV2l0aEJveElkKGJveElkKTtcbiAgICAgIGlmIChib3ggJiYgYm94LnNwZW5kQmxvY2sgJiYgYm94LnNwZW5kSGVpZ2h0KSB7XG4gICAgICAgIGlmIChib3guc3BlbmRIZWlnaHQgPCBpbml0aWFsSGVpZ2h0KSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgICBgdXBkYXRpbmcgc3BlbmRpbmcgaW5mb3JtYXRpb24gb2YgZnJhdWQgd2l0aCBib3hJZCBbJHtib3guYm94SWR9XSBzcGVudCBhdCBoZWlnaHQgWyR7Ym94LnNwZW5kSGVpZ2h0fV1gXG4gICAgICAgICAgKTtcbiAgICAgICAgICBhd2FpdCB0aGlzLmFjdGlvbnMudXBkYXRlU3BlbmRCbG9jayhcbiAgICAgICAgICAgIGJveElkLFxuICAgICAgICAgICAgdGhpcy5nZXRJZCgpLFxuICAgICAgICAgICAgYm94LnNwZW5kQmxvY2ssXG4gICAgICAgICAgICBib3guc3BlbmRIZWlnaHRcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgYGZyYXVkIHdpdGggYm94SWQgWyR7Ym94LmJveElkfV0gaGFzIGJlZW4gc3BlbnQgYWZ0ZXIgdGhlIGluaXRpYWxpemF0aW9uIGhlaWdodCwgdXBkYXRpbmcgc3BlbmRpbmcgaW5mb3JtYXRpb24gc2tpcHBlZC5gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXdhaXQgdGhpcy5hY3Rpb25zLnJlbW92ZUZyYXVkKGJveElkLCB0aGlzLmdldElkKCkpO1xuICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgICAgIGBSZW1vdmVkIGludmFsaWQgZnJhdWQgWyR7Ym94SWR9XSBpbiBpbml0aWFsaXphdGlvbiB2YWxpZGF0aW9uYFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogUmV0dXJuIGV4dHJhY3RlZCBpbmZvcm1hdGlvbiBvZiBhIGZyYXVkIHdpdGggaXRzIGJveElkXG4gICAqIEBwYXJhbSBib3hJZFxuICAgKi9cbiAgZ2V0RnJhdWRJbmZvV2l0aEJveElkID0gYXN5bmMgKFxuICAgIGJveElkOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxFeHRyYWN0ZWRGcmF1ZCB8IHVuZGVmaW5lZD4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBib3ggPSBhd2FpdCB0aGlzLmFwaS52MS5nZXRBcGlWMUJveGVzUDEoYm94SWQpO1xuICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmV4dHJhY3RCb3hEYXRhKFtib3hdKSlbMF07XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmxvZ2dlci53YXJuKGBCb3ggd2l0aCBpZCBbJHtib3hJZH1dIGRvZXMgbm90IGV4aXN0c2ApO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIEdldCB1bnNwZW50IGZyYXVkcyBjcmVhdGVkIGJlbGxvdyB0aGUgaW5pdGlhbCBoZWlnaHRcbiAgICogQHBhcmFtIGluaXRpYWxIZWlnaHRcbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldFVuc3BlbnRGcmF1ZHMgPSBhc3luYyAoXG4gICAgaW5pdGlhbEhlaWdodDogbnVtYmVyXG4gICk6IFByb21pc2U8QXJyYXk8RXh0cmFjdGVkRnJhdWQ+PiA9PiB7XG4gICAgbGV0IGFsbEJveGVzOiBBcnJheTxFeHRyYWN0ZWRGcmF1ZD4gPSBbXTtcbiAgICBsZXQgb2Zmc2V0ID0gMCxcbiAgICAgIHRvdGFsID0gRGVmYXVsdEFwaUxpbWl0LFxuICAgICAgYm94ZXM6IFYxLkl0ZW1zT3V0cHV0SW5mbztcbiAgICB3aGlsZSAob2Zmc2V0IDwgdG90YWwpIHtcbiAgICAgIGJveGVzID0gYXdhaXQgdGhpcy5hcGkudjEuZ2V0QXBpVjFCb3hlc1Vuc3BlbnRCeWVyZ290cmVlUDEoXG4gICAgICAgIHRoaXMuZXJnb1RyZWUsXG4gICAgICAgIHtcbiAgICAgICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgICBsaW1pdDogRGVmYXVsdEFwaUxpbWl0LFxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgaWYgKCFib3hlcy5pdGVtcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGxvcmVyIGFwaSBvdXRwdXQgaXRlbXMgc2hvdWxkIG5vdCBiZSB1bmRlZmluZWQuJyk7XG4gICAgICB9XG4gICAgICBhbGxCb3hlcyA9IFtcbiAgICAgICAgLi4uYWxsQm94ZXMsXG4gICAgICAgIC4uLihhd2FpdCB0aGlzLmV4dHJhY3RCb3hEYXRhKFxuICAgICAgICAgIGJveGVzLml0ZW1zLmZpbHRlcihcbiAgICAgICAgICAgIChib3gpID0+XG4gICAgICAgICAgICAgIGJveC5jcmVhdGlvbkhlaWdodCA8IGluaXRpYWxIZWlnaHQgJiZcbiAgICAgICAgICAgICAgYm94LmFzc2V0cyAmJlxuICAgICAgICAgICAgICBib3guYXNzZXRzWzBdLnRva2VuSWQgPT0gdGhpcy5yd3RcbiAgICAgICAgICApXG4gICAgICAgICkpLFxuICAgICAgXTtcbiAgICAgIHRvdGFsID0gYm94ZXMudG90YWw7XG4gICAgICBvZmZzZXQgKz0gRGVmYXVsdEFwaUxpbWl0O1xuICAgIH1cbiAgICByZXR1cm4gYWxsQm94ZXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYmxvY2sgaW5mb3JtYXRpb24gb2YgdHhcbiAgICogQHBhcmFtIHR4SWRcbiAgICovXG4gIGdldFR4QmxvY2sgPSBhc3luYyAodHhJZDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0aGlzLmFwaS52MS5nZXRBcGlWMVRyYW5zYWN0aW9uc1AxKHR4SWQpO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogdHguYmxvY2tJZCxcbiAgICAgIGhlaWdodDogdHguaW5jbHVzaW9uSGVpZ2h0LFxuICAgIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJpZ2dlciBib3hJZCBmcm9tIGZyYXVkIHRyYW5zYWN0aW9uIGlkXG4gICAqIEBwYXJhbSB0eElkXG4gICAqL1xuICBnZXRUcmlnZ2VyQm94SWQgPSBhc3luYyAodHhJZDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0aGlzLmFwaS52MS5nZXRBcGlWMVRyYW5zYWN0aW9uc1AxKHR4SWQpO1xuICAgIHJldHVybiB0eC5pbnB1dHM/LlswXS5ib3hJZDtcbiAgfTtcblxuICAvKipcbiAgICogRXh0cmFjdCBuZWVkZWQgaW5mb3JtYXRpb24gZm9yIHN0b3JpbmcgaW4gZGF0YWJhc2UgZnJvbSBhcGkganNvbiBvdXRwdXRzXG4gICAqIEBwYXJhbSBib3hlc1xuICAgKi9cbiAgZXh0cmFjdEJveERhdGEgPSBhc3luYyAoYm94ZXM6IEFycmF5PFYxLk91dHB1dEluZm8+KSA9PiB7XG4gICAgY29uc3QgZXh0cmFjdGVkRnJhdWRzOiBBcnJheTxFeHRyYWN0ZWRGcmF1ZD4gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGJveCBvZiBib3hlcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgYEV4dHJhY3RpbmcgYm94IGZyYXVkIGluZm9ybWF0aW9uIGZyb20gYm94IHdpdGggYm94SWQgWyR7Ym94LmJveElkfV1gXG4gICAgICAgICk7XG4gICAgICAgIGxldCBzcGVuZEJsb2NrLCBzcGVuZEhlaWdodDtcbiAgICAgICAgLy8gRXh0cmFjdCBzcGVuZGluZyBpbmZvcm1hdGlvblxuICAgICAgICBpZiAoYm94LnNwZW50VHJhbnNhY3Rpb25JZCkge1xuICAgICAgICAgIGNvbnN0IGJsb2NrID0gYXdhaXQgdGhpcy5nZXRUeEJsb2NrKGJveC5zcGVudFRyYW5zYWN0aW9uSWQpO1xuICAgICAgICAgIHNwZW5kQmxvY2sgPSBibG9jay5pZDtcbiAgICAgICAgICBzcGVuZEhlaWdodCA9IGJsb2NrLmhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICAvLyBFeHRyYWN0IFdJRFxuICAgICAgICBjb25zdCBlcmdvQm94ID0gd2FzbS5FcmdvQm94LmZyb21fanNvbihKc29uQkkuc3RyaW5naWZ5KGJveCkpO1xuICAgICAgICBjb25zdCByNCA9IGVyZ29Cb3hcbiAgICAgICAgICAucmVnaXN0ZXJfdmFsdWUod2FzbS5Ob25NYW5kYXRvcnlSZWdpc3RlcklkLlI0KVxuICAgICAgICAgID8udG9fY29sbF9jb2xsX2J5dGUoKTtcbiAgICAgICAgLy8gRXh0cmFjdCB0cmlnZ2VyIGJveElkXG4gICAgICAgIGNvbnN0IHRyaWdnZXJCb3hJZCA9IGF3YWl0IHRoaXMuZ2V0VHJpZ2dlckJveElkKGJveC50cmFuc2FjdGlvbklkKTtcbiAgICAgICAgaWYgKCFyNCB8fCAhdHJpZ2dlckJveElkKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIud2FybihcbiAgICAgICAgICAgIGBTa2lwcGluZyBzdG9yaW5nIGZyYXVkIHdpdGggYm94SWQgWyR7Ym94LmJveElkfV0sIHdpZCBvciB0cmlnZ2VyIGJveCBpZCBpcyB1bmRlZmluZWRgXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGV4dHJhY3RlZEZyYXVkID0ge1xuICAgICAgICAgIGJveElkOiBlcmdvQm94LmJveF9pZCgpLnRvX3N0cigpLFxuICAgICAgICAgIHRyaWdnZXJCb3hJZDogdHJpZ2dlckJveElkLFxuICAgICAgICAgIHdpZDogQnVmZmVyLmZyb20ocjRbMF0pLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgICByd3RDb3VudDogYm94LmFzc2V0cyFbMF0uYW1vdW50LnRvU3RyaW5nKCksXG4gICAgICAgICAgc2VyaWFsaXplZDogQnVmZmVyLmZyb20oZXJnb0JveC5zaWdtYV9zZXJpYWxpemVfYnl0ZXMoKSkudG9TdHJpbmcoXG4gICAgICAgICAgICAnYmFzZTY0J1xuICAgICAgICAgICksXG4gICAgICAgICAgYmxvY2tJZDogYm94LmJsb2NrSWQsXG4gICAgICAgICAgaGVpZ2h0OiBib3guc2V0dGxlbWVudEhlaWdodCxcbiAgICAgICAgICB0eElkOiBib3gudHJhbnNhY3Rpb25JZCxcbiAgICAgICAgICBzcGVuZEJsb2NrOiBzcGVuZEJsb2NrLFxuICAgICAgICAgIHNwZW5kSGVpZ2h0OiBzcGVuZEhlaWdodCxcbiAgICAgICAgICBzcGVuZFR4SWQ6IGJveC5zcGVudFRyYW5zYWN0aW9uSWQsXG4gICAgICAgIH07XG4gICAgICAgIGV4dHJhY3RlZEZyYXVkcy5wdXNoKGV4dHJhY3RlZEZyYXVkKTtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYEV4dHJhY3RlZCBmcmF1ZDogWyR7ZXh0cmFjdGVkRnJhdWR9XWApO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgICBgRXh0cmFjdGluZyBmcmF1ZCBpbmZvcm1hdGlvbiBmYWlsZWQgZm9yIGJveCBbJHtib3guYm94SWR9XSB3aXRoIGVycm9yOiAke2V9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXh0cmFjdGVkRnJhdWRzO1xuICB9O1xufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rosen-bridge/fraud-extractor",
3
- "version": "2.0.13",
3
+ "version": "2.1.0",
4
4
  "description": "fraud information extractor for watcher faulty reports",
5
5
  "author": "Rosen Team",
6
6
  "license": "GPL-3.0",
@@ -19,10 +19,10 @@
19
19
  "release": "npm run test && npm run build && npm publish --access public"
20
20
  },
21
21
  "dependencies": {
22
- "@rosen-bridge/abstract-extractor": "^1.0.2",
22
+ "@rosen-bridge/abstract-extractor": "^2.0.0",
23
23
  "@rosen-bridge/abstract-logger": "^2.0.1",
24
24
  "@rosen-bridge/json-bigint": "^0.1.0",
25
- "@rosen-bridge/scanner": "^5.1.0",
25
+ "@rosen-bridge/scanner-interfaces": "^0.1.0",
26
26
  "blakejs": "^1.2.1",
27
27
  "ergo-lib-wasm-nodejs": "^0.24.1",
28
28
  "lodash-es": "^4.17.21",
@@ -33,6 +33,7 @@
33
33
  "type": "module",
34
34
  "devDependencies": {
35
35
  "@babel/preset-env": "^7.19.0",
36
+ "@rosen-bridge/scanner": "^6.0.0",
36
37
  "@types/jest": "^28.1.6",
37
38
  "@types/json-bigint": "^1.0.1",
38
39
  "@types/node": "^20.11.9",