velocious 1.0.536 → 1.0.538

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.
@@ -284,6 +284,16 @@ export default class VelociousDatabaseDriversMysql extends Base {
284
284
  if (errorCode == "ER_CHECKREAD" || message.includes("Record has changed since last read")) {
285
285
  return { retry: true, reconnect: false, waitMs: 50 };
286
286
  }
287
+ // A deadlock or lock-wait-timeout aborts the whole transaction; it must be retried at the
288
+ // transaction level (re-running the callback), not the query level, so flag it as such and
289
+ // keep `retry` false so an in-transaction query does not retry against the dead transaction.
290
+ if (errorCode == "ER_LOCK_DEADLOCK" ||
291
+ errorCode == "ER_LOCK_WAIT_TIMEOUT" ||
292
+ message.includes("ER_LOCK_DEADLOCK") ||
293
+ message.includes("Deadlock found") ||
294
+ message.includes("Lock wait timeout exceeded")) {
295
+ return { retry: false, reconnect: false, deadlock: true, waitMs: 50 };
296
+ }
287
297
  shouldReconnect ||= (errorCode == "ECONNREFUSED" ||
288
298
  message.includes("ECONNREFUSED") ||
289
299
  message.includes("connect ECONNREFUSED") ||
@@ -533,4 +543,4 @@ export default class VelociousDatabaseDriversMysql extends Base {
533
543
  return holder !== null && holder !== undefined;
534
544
  }
535
545
  }
536
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9teXNxbC9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxVQUFVLE1BQU0sc0JBQXNCLENBQUE7QUFDN0MsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFBO0FBQzdCLE9BQU8sY0FBYyxNQUFNLDBCQUEwQixDQUFBO0FBQ3JELE9BQU8sV0FBVyxNQUFNLHVCQUF1QixDQUFBO0FBQy9DLE9BQU8sV0FBVyxNQUFNLHVCQUF1QixDQUFBO0FBQy9DLE9BQU8sTUFBTSxNQUFNLGlCQUFpQixDQUFBO0FBQ3BDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDOUIsT0FBTyxZQUFZLE1BQU0sd0JBQXdCLENBQUE7QUFDakQsT0FBTyxTQUFTLE1BQU0scUJBQXFCLENBQUE7QUFDM0MsT0FBTyxNQUFNLE1BQU0saUJBQWlCLENBQUE7QUFDcEMsT0FBTyxPQUFPLE1BQU0sY0FBYyxDQUFBO0FBQ2xDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQTtBQUN6QixPQUFPLEtBQUssTUFBTSxZQUFZLENBQUE7QUFDOUIsT0FBTyxXQUFXLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxXQUFXLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxXQUFXLE1BQU0sdUJBQXVCLENBQUE7QUFDL0MsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFBO0FBQzlCLE9BQU8sWUFBWSxNQUFNLG9CQUFvQixDQUFBO0FBQzdDLE9BQU8sTUFBTSxNQUFNLGlCQUFpQixDQUFBO0FBQ3BDLE9BQU8sTUFBTSxNQUFNLGlCQUFpQixDQUFBO0FBRXBDOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLHFDQUFxQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQTtBQUVoRSxNQUFNLENBQUMsT0FB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QUMsSUFBSSxDQUFDLDBEQUEwRCxDQUFDLENBQUE7UUFDN0ksQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM3QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJO1FBQzVCLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMscUNBQXFDLENBQUMsQ0FBQTtRQUMzRyxNQUFNLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSw4QkFBOEIsQ0FBQTtRQUV4RCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDN0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSTtRQUMzQixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsdUJBQXVCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLHFDQUFxQyxDQUFDLENBQUE7UUFDM0csTUFBTSxNQUFNLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsOEJBQThCLENBQUE7UUFFeEQsT0FBTyxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sS0FBSyxTQUFTLENBQUE7SUFDaEQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBBbHRlclRhYmxlIGZyb20gXCIuL3NxbC9hbHRlci10YWJsZS5qc1wiXG5pbXBvcnQgQmFzZSBmcm9tIFwiLi4vYmFzZS5qc1wiXG5pbXBvcnQgQ3JlYXRlRGF0YWJhc2UgZnJvbSBcIi4vc3FsL2NyZWF0ZS1kYXRhYmFzZS5qc1wiXG5pbXBvcnQgQ3JlYXRlSW5kZXggZnJvbSBcIi4vc3FsL2NyZWF0ZS1pbmRleC5qc1wiXG5pbXBvcnQgQ3JlYXRlVGFibGUgZnJvbSBcIi4vc3FsL2NyZWF0ZS10YWJsZS5qc1wiXG5pbXBvcnQgRGVsZXRlIGZyb20gXCIuL3NxbC9kZWxldGUuanNcIlxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCBEcm9wRGF0YWJhc2UgZnJvbSBcIi4vc3FsL2Ryb3AtZGF0YWJhc2UuanNcIlxuaW1wb3J0IERyb3BUYWJsZSBmcm9tIFwiLi9zcWwvZHJvcC10YWJsZS5qc1wiXG5pbXBvcnQgSW5zZXJ0IGZyb20gXCIuL3NxbC9pbnNlcnQuanNcIlxuaW1wb3J0IE9wdGlvbnMgZnJvbSBcIi4vb3B0aW9ucy5qc1wiXG5pbXBvcnQgbXlzcWwgZnJvbSBcIm15c3FsXCJcbmltcG9ydCBxdWVyeSBmcm9tIFwiLi9xdWVyeS5qc1wiXG5pbXBvcnQgUXVlcnlQYXJzZXIgZnJvbSBcIi4vcXVlcnktcGFyc2VyLmpzXCJcbmltcG9ydCBzdHJlYW1RdWVyeSBmcm9tIFwiLi9xdWVyeS1zdHJlYW0uanNcIlxuaW1wb3J0IFJlbW92ZUluZGV4IGZyb20gXCIuL3NxbC9yZW1vdmUtaW5kZXguanNcIlxuaW1wb3J0IFRhYmxlIGZyb20gXCIuL3RhYmxlLmpzXCJcbmltcG9ydCBTdHJ1Y3R1cmVTcWwgZnJvbSBcIi4vc3RydWN0dXJlLXNxbC5qc1wiXG5pbXBvcnQgVXBzZXJ0IGZyb20gXCIuL3NxbC91cHNlcnQuanNcIlxuaW1wb3J0IFVwZGF0ZSBmcm9tIFwiLi9zcWwvdXBkYXRlLmpzXCJcblxuLyoqXG4gKiBTZW50aW5lbCB0aW1lb3V0IChpbiBzZWNvbmRzKSB1c2VkIGFzIHRoZSBcImJsb2NrIGZvcmV2ZXJcIiB2YWx1ZSB3aGVuIGFcbiAqIGNhbGxlciBhc2tzIGZvciBhbiBpbmRlZmluaXRlIGFkdmlzb3J5IGxvY2sgYWNxdWlyZS4gTXlTUUwgaGlzdG9yaWNhbGx5XG4gKiBhY2NlcHRlZCBuZWdhdGl2ZSB0aW1lb3V0cyBhcyBcImluZmluaXRlXCIsIGJ1dCBNYXJpYURCIDEwKyBzaWxlbnRseVxuICogcmV0dXJucyBOVUxMIGZyb20gYEdFVF9MT0NLYCB3aGVuIHRoZSB0aW1lb3V0IGlzIG5lZ2F0aXZlLCBzbyB0aGVcbiAqIGRyaXZlciBjbGFtcHMgdG8gYSBjb21mb3J0YWJseSBsYXJnZSBwb3NpdGl2ZSB2YWx1ZSAoMSB5ZWFyIOKJqyBhbnlcbiAqIHJlYWxpc3RpYyBjcml0aWNhbCBzZWN0aW9uKSBpbnN0ZWFkLlxuICovXG5jb25zdCBNWVNRTF9JTkRFRklOSVRFX0xPQ0tfVElNRU9VVF9TRUNPTkRTID0gNjAgKiA2MCAqIDI0ICogMzY1XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlRHJpdmVyc015c3FsIGV4dGVuZHMgQmFzZXtcbiAgLyoqIEB0eXBlIHtpbXBvcnQoXCJteXNxbFwiKS5Qb29sIHwgdW5kZWZpbmVkfSAqL1xuICBwb29sID0gdW5kZWZpbmVkXG5cbiAgLyoqIEB0eXBlIHtzdHJpbmcgfCBudWxsfSAqL1xuICBfZGVzaXJlZFNlc3Npb25UaW1lWm9uZSA9IFwiKzAwOjAwXCJcblxuICAvKiogQHR5cGUge3N0cmluZyB8IG51bGx9ICovXG4gIF9jdXJyZW50U2Vzc2lvblRpbWVab25lID0gbnVsbFxuXG4gIC8qKlxuICAgKiBSdW5zIGNvbm5lY3QuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyBjb25uZWN0KCkge1xuICAgIHRoaXMucmVzZXRDdXJyZW50U2Vzc2lvblRpbWVab25lKClcbiAgICB0aGlzLnBvb2wgPSBteXNxbC5jcmVhdGVQb29sKE9iamVjdC5hc3NpZ24oe2Nvbm5lY3Rpb25MaW1pdDogMX0sIHRoaXMuY29ubmVjdEFyZ3MoKSkpXG4gICAgdGhpcy5wb29sLm9uKFwiZXJyb3JcIiwgdGhpcy5vblBvb2xFcnJvcilcbiAgfVxuXG4gIC8qKlxuICAgKiBPbiBwb29sIGVycm9yLlxuICAgKiBAcGFyYW0ge0Vycm9yfSBlcnJvciAtIEVycm9yIGZyb20gdGhlIGNvbm5lY3Rpb24gYXR0ZW1wdC5cbiAgICovXG4gIG9uUG9vbEVycm9yID0gKGVycm9yKSA9PiB7XG4gICAgY29uc29sZS5lcnJvcihcIlZlbG9jaW91cyAvIE15U1FMIGRyaXZlciAvIFBvb2wgZXJyb3JcIiwgZXJyb3IpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBjbG9zZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIGNsb3NlKCkge1xuICAgIGF3YWl0IHRoaXMucG9vbD8uZW5kKClcbiAgICB0aGlzLnBvb2wgPSB1bmRlZmluZWRcbiAgICB0aGlzLnJlc2V0Q3VycmVudFNlc3Npb25UaW1lWm9uZSgpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBzZXQgY29ubmVjdGlvbiBjaGVja291dCBuYW1lLlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHVuZGVmaW5lZH0gbmFtZSAtIEh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoaXMgYWN0aXZlIGNoZWNrb3V0LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgc2V0Q29ubmVjdGlvbkNoZWNrb3V0TmFtZShuYW1lKSB7XG4gICAgY29uc3QgcHJldmlvdXNOYW1lID0gdGhpcy5fY29ubmVjdGlvbkNoZWNrb3V0TmFtZVxuXG4gICAgYXdhaXQgc3VwZXIuc2V0Q29ubmVjdGlvbkNoZWNrb3V0TmFtZShuYW1lKVxuXG4gICAgaWYgKG5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHByZXZpb3VzTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucXVlcnkoXCJTRVQgQHZlbG9jaW91c19jb25uZWN0aW9uX2NoZWNrb3V0X25hbWUgPSBOVUxMXCIsIHtsb2dOYW1lOiBcIkNsZWFyIENvbm5lY3Rpb24gQ2hlY2tvdXQgTmFtZVwiLCBwcm9jZXNzTGlzdENvbW1lbnQ6IGZhbHNlLCBzZXNzaW9uVGltZVpvbmU6IGZhbHNlfSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5xdWVyeShgU0VUIEB2ZWxvY2lvdXNfY29ubmVjdGlvbl9jaGVja291dF9uYW1lID0gJHt0aGlzLnF1b3RlKG5hbWUpfWAsIHtsb2dOYW1lOiBcIlNldCBDb25uZWN0aW9uIENoZWNrb3V0IE5hbWVcIiwgcHJvY2Vzc0xpc3RDb21tZW50OiBmYWxzZSwgc2Vzc2lvblRpbWVab25lOiBmYWxzZX0pXG4gIH1cblxuICAvKipcbiAgICogUnVucyBjbGVhciBjb25uZWN0aW9uIGNoZWNrb3V0IG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyBjbGVhckNvbm5lY3Rpb25DaGVja291dE5hbWUoKSB7XG4gICAgaWYgKHRoaXMuX2Nvbm5lY3Rpb25DaGVja291dE5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXdhaXQgdGhpcy5xdWVyeShcIlNFVCBAdmVsb2Npb3VzX2Nvbm5lY3Rpb25fY2hlY2tvdXRfbmFtZSA9IE5VTExcIiwge2xvZ05hbWU6IFwiQ2xlYXIgQ29ubmVjdGlvbiBDaGVja291dCBOYW1lXCIsIHByb2Nlc3NMaXN0Q29tbWVudDogZmFsc2UsIHNlc3Npb25UaW1lWm9uZTogZmFsc2V9KVxuICAgIH1cblxuICAgIGF3YWl0IHN1cGVyLmNsZWFyQ29ubmVjdGlvbkNoZWNrb3V0TmFtZSgpXG4gIH1cblxuICAvKipcbiAgICogSG9vayBiZWZvcmUgZXZlcnkgcXVlcnkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBfc3FsIC0gU1FMIHN0cmluZy5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9iYXNlLmpzXCIpLlF1ZXJ5T3B0aW9uc30gb3B0aW9ucyAtIFF1ZXJ5IG9wdGlvbnMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyBiZWZvcmVRdWVyeShfc3FsLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMuc2Vzc2lvblRpbWVab25lICE9PSBmYWxzZSkgYXdhaXQgdGhpcy5lbnN1cmVTZXNzaW9uVGltZVpvbmUoKVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGRlc2lyZWQgZGF0YWJhc2Ugc2Vzc2lvbiB0aW1lIHpvbmUgZm9yIHRoaXMgY29ubmVjdGlvbiBjb250ZXh0LlxuICAgKiBAcmV0dXJucyB7c3RyaW5nIHwgbnVsbH0gLSBEZXNpcmVkIHNlc3Npb24gdGltZSB6b25lLlxuICAgKi9cbiAgZ2V0RGVzaXJlZFNlc3Npb25UaW1lWm9uZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVzaXJlZFNlc3Npb25UaW1lWm9uZVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRlc2lyZWQgZGF0YWJhc2Ugc2Vzc2lvbiB0aW1lIHpvbmUgd2l0aG91dCBxdWVyeWluZyBNeVNRTCBpbW1lZGlhdGVseS5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSB0aW1lWm9uZSAtIERlc2lyZWQgc2Vzc2lvbiB0aW1lIHpvbmUuXG4gICAqL1xuICBzZXREZXNpcmVkU2Vzc2lvblRpbWVab25lKHRpbWVab25lKSB7XG4gICAgdGhpcy5fZGVzaXJlZFNlc3Npb25UaW1lWm9uZSA9IHRpbWVab25lXG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZGF0YWJhc2Ugc2Vzc2lvbiB0aW1lIHpvbmUgbGFzdCBjb25maXJtZWQgdGhyb3VnaCBTRVQgdGltZV96b25lLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nIHwgbnVsbH0gLSBDdXJyZW50IGtub3duIHNlc3Npb24gdGltZSB6b25lLlxuICAgKi9cbiAgZ2V0Q3VycmVudFNlc3Npb25UaW1lWm9uZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFNlc3Npb25UaW1lWm9uZVxuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUgY3VycmVudCBrbm93biBkYXRhYmFzZSBzZXNzaW9uIHRpbWUgem9uZSB3aGVuIHRoZSBwaHlzaWNhbCBjb25uZWN0aW9uIGNoYW5nZXMuXG4gICAqL1xuICByZXNldEN1cnJlbnRTZXNzaW9uVGltZVpvbmUoKSB7XG4gICAgdGhpcy5fY3VycmVudFNlc3Npb25UaW1lWm9uZSA9IG51bGxcbiAgfVxuXG4gIC8qKlxuICAgKiBFbnN1cmVzIE15U1FMIGhhcyB0aGUgZGVzaXJlZCBzZXNzaW9uIHRpbWUgem9uZSBiZWZvcmUgdXNlciBTUUwgcnVucy5cbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IC0gVHJ1ZSB3aGVuIFNFVCB0aW1lX3pvbmUgd2FzIGV4ZWN1dGVkLlxuICAgKi9cbiAgYXN5bmMgZW5zdXJlU2Vzc2lvblRpbWVab25lKCkge1xuICAgIGNvbnN0IGRlc2lyZWRTZXNzaW9uVGltZVpvbmUgPSB0aGlzLmdldERlc2lyZWRTZXNzaW9uVGltZVpvbmUoKVxuXG4gICAgaWYgKGRlc2lyZWRTZXNzaW9uVGltZVpvbmUgPT09IG51bGwgfHwgdGhpcy5nZXRDdXJyZW50U2Vzc2lvblRpbWVab25lKCkgPT09IGRlc2lyZWRTZXNzaW9uVGltZVpvbmUpIHJldHVybiBmYWxzZVxuXG4gICAgYXdhaXQgdGhpcy5zZXRTZXNzaW9uVGltZVpvbmUoZGVzaXJlZFNlc3Npb25UaW1lWm9uZSlcblxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZGF0YWJhc2Ugc2Vzc2lvbiB0aW1lIHpvbmUgaWYgaXQgY2hhbmdlZCBmcm9tIHRoZSBsYXN0IGNvbmZpcm1lZCB2YWx1ZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRpbWVab25lIC0gU2Vzc2lvbiB0aW1lIHpvbmUgdmFsdWUgYWNjZXB0ZWQgYnkgTXlTUUwuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSAtIFRydWUgd2hlbiBTRVQgdGltZV96b25lIHdhcyBleGVjdXRlZC5cbiAgICovXG4gIGFzeW5jIHNldFNlc3Npb25UaW1lWm9uZSh0aW1lWm9uZSkge1xuICAgIGlmICh0aGlzLmdldEN1cnJlbnRTZXNzaW9uVGltZVpvbmUoKSA9PT0gdGltZVpvbmUpIHJldHVybiBmYWxzZVxuXG4gICAgYXdhaXQgdGhpcy5fcXVlcnlBY3R1YWwoYFNFVCB0aW1lX3pvbmUgPSAke3RoaXMucXVvdGUodGltZVpvbmUpfWApXG4gICAgdGhpcy5fY3VycmVudFNlc3Npb25UaW1lWm9uZSA9IHRpbWVab25lXG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgY29ubmVjdCBhcmdzLlxuICAgKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgPz59IC0gVGhlIGNvbm5lY3QgYXJncy5cbiAgICovXG4gIGNvbm5lY3RBcmdzKCkge1xuICAgIGNvbnN0IGFyZ3MgPSB0aGlzLmdldEFyZ3MoKVxuICAgIGNvbnN0IGZvcndhcmQgPSBbXCJkYXRhYmFzZVwiLCBcImhvc3RcIiwgXCJwYXNzd29yZFwiXVxuXG4gICAgLyoqXG4gICAgICogQ29ubmVjdCBhcmdzLlxuICAgICAqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCA/Pn0gKi9cbiAgICBjb25zdCBjb25uZWN0QXJncyA9IHtjaGFyc2V0OiBcInV0ZjhtYjRcIiwgdGltZXpvbmU6IFwiWlwifVxuXG4gICAgZm9yIChjb25zdCBmb3J3YXJkVmFsdWUgb2YgZm9yd2FyZCkge1xuICAgICAgaWYgKGZvcndhcmRWYWx1ZSBpbiBhcmdzKSBjb25uZWN0QXJnc1tmb3J3YXJkVmFsdWVdID0gZGlnZyhhcmdzLCBmb3J3YXJkVmFsdWUpXG4gICAgfVxuXG4gICAgaWYgKFwidXNlcm5hbWVcIiBpbiBhcmdzKSBjb25uZWN0QXJnc1tcInVzZXJcIl0gPSBhcmdzW1widXNlcm5hbWVcIl1cbiAgICBpZiAoXCJjaGFyc2V0XCIgaW4gYXJncykgY29ubmVjdEFyZ3NbXCJjaGFyc2V0XCJdID0gYXJnc1tcImNoYXJzZXRcIl1cblxuICAgIHJldHVybiBjb25uZWN0QXJnc1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgYWx0ZXIgdGFibGUgc3Fscy5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi90YWJsZS1kYXRhL2luZGV4LmpzXCIpLmRlZmF1bHR9IHRhYmxlRGF0YSAtIFRhYmxlIGRhdGEuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZ1tdPn0gLSBSZXNvbHZlcyB3aXRoIFNRTCBzdGF0ZW1lbnRzLlxuICAgKi9cbiAgYXN5bmMgYWx0ZXJUYWJsZVNRTHModGFibGVEYXRhKSB7XG4gICAgY29uc3QgYWx0ZXJBcmdzID0ge3RhYmxlRGF0YSwgZHJpdmVyOiB0aGlzfVxuICAgIGNvbnN0IGFsdGVyVGFibGUgPSBuZXcgQWx0ZXJUYWJsZShhbHRlckFyZ3MpXG5cbiAgICByZXR1cm4gYXdhaXQgYWx0ZXJUYWJsZS50b1NRTHMoKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgY3JlYXRlIGRhdGFiYXNlIHNxbC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGFiYXNlTmFtZSAtIERhdGFiYXNlIG5hbWUuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJnc10gLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtib29sZWFufSBbYXJncy5pZk5vdEV4aXN0c10gLSBXaGV0aGVyIGlmIG5vdCBleGlzdHMuXG4gICAqIEByZXR1cm5zIHtzdHJpbmdbXX0gLSBTUUwgc3RhdGVtZW50cy5cbiAgICovXG4gIGNyZWF0ZURhdGFiYXNlU3FsKGRhdGFiYXNlTmFtZSwgYXJncykge1xuICAgIGNvbnN0IGNyZWF0ZUFyZ3MgPSBPYmplY3QuYXNzaWduKHtkYXRhYmFzZU5hbWUsIGRyaXZlcjogdGhpc30sIGFyZ3MpXG4gICAgY29uc3QgY3JlYXRlRGF0YWJhc2UgPSBuZXcgQ3JlYXRlRGF0YWJhc2UoY3JlYXRlQXJncylcblxuICAgIHJldHVybiBjcmVhdGVEYXRhYmFzZS50b1NxbCgpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBkcm9wIGRhdGFiYXNlIHNxbC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGFiYXNlTmFtZSAtIERhdGFiYXNlIG5hbWUuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJnc10gLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtib29sZWFufSBbYXJncy5pZkV4aXN0c10gLSBXaGV0aGVyIGlmIGV4aXN0cy5cbiAgICogQHJldHVybnMge3N0cmluZ1tdfSAtIFNRTCBzdGF0ZW1lbnRzLlxuICAgKi9cbiAgZHJvcERhdGFiYXNlU3FsKGRhdGFiYXNlTmFtZSwgYXJncykge1xuICAgIGNvbnN0IGRyb3BBcmdzID0gT2JqZWN0LmFzc2lnbih7ZGF0YWJhc2VOYW1lLCBkcml2ZXI6IHRoaXN9LCBhcmdzKVxuICAgIGNvbnN0IGRyb3BEYXRhYmFzZSA9IG5ldyBEcm9wRGF0YWJhc2UoZHJvcEFyZ3MpXG5cbiAgICByZXR1cm4gZHJvcERhdGFiYXNlLnRvU3FsKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGNyZWF0ZSBpbmRleCBzcWxzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2Jhc2UuanNcIikuQ3JlYXRlSW5kZXhTcWxBcmdzfSBpbmRleERhdGEgLSBJbmRleCBkYXRhLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmdbXT59IC0gUmVzb2x2ZXMgd2l0aCBTUUwgc3RhdGVtZW50cy5cbiAgICovXG4gIGFzeW5jIGNyZWF0ZUluZGV4U1FMcyhpbmRleERhdGEpIHtcbiAgICBjb25zdCBjcmVhdGVBcmdzID0gT2JqZWN0LmFzc2lnbih7ZHJpdmVyOiB0aGlzfSwgaW5kZXhEYXRhKVxuICAgIGNvbnN0IGNyZWF0ZUluZGV4ID0gbmV3IENyZWF0ZUluZGV4KGNyZWF0ZUFyZ3MpXG5cbiAgICByZXR1cm4gYXdhaXQgY3JlYXRlSW5kZXgudG9TUUxzKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHJlbW92ZSBpbmRleCBzcWxzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2Jhc2UuanNcIikuUmVtb3ZlSW5kZXhTcWxBcmdzfSBpbmRleERhdGEgLSBJbmRleCBkYXRhLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmdbXT59IC0gUmVzb2x2ZXMgd2l0aCBTUUwgc3RhdGVtZW50cy5cbiAgICovXG4gIGFzeW5jIHJlbW92ZUluZGV4U1FMcyhpbmRleERhdGEpIHtcbiAgICBjb25zdCByZW1vdmVBcmdzID0gT2JqZWN0LmFzc2lnbih7ZHJpdmVyOiB0aGlzfSwgaW5kZXhEYXRhKVxuICAgIGNvbnN0IHJlbW92ZUluZGV4ID0gbmV3IFJlbW92ZUluZGV4KHJlbW92ZUFyZ3MpXG5cbiAgICByZXR1cm4gYXdhaXQgcmVtb3ZlSW5kZXgudG9TUUxzKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGNyZWF0ZSB0YWJsZSBzcWwuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vdGFibGUtZGF0YS9pbmRleC5qc1wiKS5kZWZhdWx0fSB0YWJsZURhdGEgLSBUYWJsZSBkYXRhLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmdbXT59IC0gUmVzb2x2ZXMgd2l0aCBTUUwgc3RhdGVtZW50cy5cbiAgICovXG4gIGFzeW5jIGNyZWF0ZVRhYmxlU3FsKHRhYmxlRGF0YSkge1xuICAgIGNvbnN0IGNyZWF0ZUFyZ3MgPSB7dGFibGVEYXRhLCBkcml2ZXI6IHRoaXN9XG4gICAgY29uc3QgY3JlYXRlVGFibGUgPSBuZXcgQ3JlYXRlVGFibGUoY3JlYXRlQXJncylcblxuICAgIHJldHVybiBjcmVhdGVUYWJsZS50b1NxbCgpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBjdXJyZW50IGRhdGFiYXNlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fSAtIFJlc29sdmVzIHdpdGggdGhlIGN1cnJlbnQgZGF0YWJhc2UuXG4gICAqL1xuICBhc3luYyBjdXJyZW50RGF0YWJhc2UoKSB7XG4gICAgY29uc3Qgcm93cyA9IGF3YWl0IHRoaXMucXVlcnkoXCJTRUxFQ1QgREFUQUJBU0UoKSBBUyBkYl9uYW1lXCIpXG5cbiAgICByZXR1cm4gZGlnZyhyb3dzLCAwLCBcImRiX25hbWVcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGRpc2FibGUgZm9yZWlnbiBrZXlzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgZGlzYWJsZUZvcmVpZ25LZXlzKCkge1xuICAgIGF3YWl0IHRoaXMucXVlcnkoXCJTRVQgRk9SRUlHTl9LRVlfQ0hFQ0tTID0gMFwiKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgZW5hYmxlIGZvcmVpZ24ga2V5cy5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIGVuYWJsZUZvcmVpZ25LZXlzKCkge1xuICAgIGF3YWl0IHRoaXMucXVlcnkoXCJTRVQgRk9SRUlHTl9LRVlfQ0hFQ0tTID0gMVwiKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgZHJvcCB0YWJsZSBzcWxzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGFibGUgbmFtZS5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9iYXNlLmpzXCIpLkRyb3BUYWJsZVNxbEFyZ3NUeXBlfSBbYXJnc10gLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nW10+fSAtIFJlc29sdmVzIHdpdGggU1FMIHN0YXRlbWVudHMuXG4gICAqL1xuICBhc3luYyBkcm9wVGFibGVTUUxzKHRhYmxlTmFtZSwgYXJncyA9IHt9KSB7XG4gICAgY29uc3QgZHJvcEFyZ3MgPSBPYmplY3QuYXNzaWduKHt0YWJsZU5hbWUsIGRyaXZlcjogdGhpc30sIGFyZ3MpXG4gICAgY29uc3QgZHJvcFRhYmxlID0gbmV3IERyb3BUYWJsZShkcm9wQXJncylcblxuICAgIHJldHVybiBhd2FpdCBkcm9wVGFibGUudG9TUUxzKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGdldCB0eXBlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFRoZSB0eXBlLlxuICAgKi9cbiAgZ2V0VHlwZSgpIHsgcmV0dXJuIFwibXlzcWxcIiB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcmV0cnlhYmxlIGRhdGFiYXNlIGVycm9yLlxuICAgKiBAcGFyYW0ge0Vycm9yfSBlcnJvciAtIEVycm9yIGluc3RhbmNlLlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vYmFzZS5qc1wiKS5SZXRyeWFibGVEYXRhYmFzZUVycm9yUmVzdWx0fSAtIFJldHJ5IGluZm8uXG4gICAqL1xuICByZXRyeWFibGVEYXRhYmFzZUVycm9yKGVycm9yKSB7XG4gICAgLyoqIEB0eXBlIHtFcnJvciB8IHVuZGVmaW5lZH0gKi9cbiAgICBsZXQgY3VycmVudEVycm9yID0gZXJyb3JcbiAgICBsZXQgc2hvdWxkUmVjb25uZWN0ID0gZmFsc2VcblxuICAgIHdoaWxlIChjdXJyZW50RXJyb3IpIHtcbiAgICAgIGNvbnN0IGVycm9yQ29kZSA9IFwiY29kZVwiIGluIGN1cnJlbnRFcnJvciAmJiB0eXBlb2YgY3VycmVudEVycm9yLmNvZGUgPT0gXCJzdHJpbmdcIiA/IGN1cnJlbnRFcnJvci5jb2RlIDogdW5kZWZpbmVkXG4gICAgICBjb25zdCBtZXNzYWdlID0gY3VycmVudEVycm9yLm1lc3NhZ2UgfHwgXCJcIlxuXG4gICAgICBpZiAoZXJyb3JDb2RlID09IFwiRVJfQ0hFQ0tSRUFEXCIgfHwgbWVzc2FnZS5pbmNsdWRlcyhcIlJlY29yZCBoYXMgY2hhbmdlZCBzaW5jZSBsYXN0IHJlYWRcIikpIHtcbiAgICAgICAgcmV0dXJuIHtyZXRyeTogdHJ1ZSwgcmVjb25uZWN0OiBmYWxzZSwgd2FpdE1zOiA1MH1cbiAgICAgIH1cblxuICAgICAgc2hvdWxkUmVjb25uZWN0IHx8PSAoXG4gICAgICAgIGVycm9yQ29kZSA9PSBcIkVDT05OUkVGVVNFRFwiIHx8XG4gICAgICAgIG1lc3NhZ2UuaW5jbHVkZXMoXCJFQ09OTlJFRlVTRURcIikgfHxcbiAgICAgICAgbWVzc2FnZS5pbmNsdWRlcyhcImNvbm5lY3QgRUNPTk5SRUZVU0VEXCIpIHx8XG4gICAgICAgIG1lc3NhZ2UuaW5jbHVkZXMoXCJQUk9UT0NPTF9DT05ORUNUSU9OX0xPU1RcIikgfHxcbiAgICAgICAgbWVzc2FnZS5pbmNsdWRlcyhcIkNvbm5lY3Rpb24gbG9zdFwiKVxuICAgICAgKVxuXG4gICAgICBjdXJyZW50RXJyb3IgPSBjdXJyZW50RXJyb3IuY2F1c2UgaW5zdGFuY2VvZiBFcnJvciA/IGN1cnJlbnRFcnJvci5jYXVzZSA6IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByZXRyeTogc2hvdWxkUmVjb25uZWN0LFxuICAgICAgcmVjb25uZWN0OiBzaG91bGRSZWNvbm5lY3QsXG4gICAgICB3YWl0TXM6IDUwXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcXVlcnkgYWN0dWFsLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3FsIC0gU1FMIHN0cmluZy5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi4vYmFzZS5qc1wiKS5RdWVyeVJlc3VsdFR5cGU+fSAtIFJlc29sdmVzIHdpdGggdGhlIHF1ZXJ5IGFjdHVhbC5cbiAgICovXG4gIGFzeW5jIF9xdWVyeUFjdHVhbChzcWwpIHtcbiAgICBpZiAoIXRoaXMucG9vbCkgYXdhaXQgdGhpcy5jb25uZWN0KClcbiAgICBpZiAoIXRoaXMucG9vbCkgdGhyb3cgbmV3IEVycm9yKFwiTXlTUUwgcG9vbCBmYWlsZWQgdG8gaW5pdGlhbGl6ZVwiKVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBxdWVyeSh0aGlzLnBvb2wsIHNxbClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gUmUtdGhyb3cgdG8gdW4tY29ycnVwdCBzdGFja3RyYWNlXG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFF1ZXJ5IGZhaWxlZDogJHtlcnJvci5tZXNzYWdlfWAsIHtjYXVzZTogZXJyb3J9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBRdWVyeSBmYWlsZWQ6ICR7ZXJyb3J9YCwge2NhdXNlOiBlcnJvcn0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN0cmVhbXMgdGhlIHJvd3Mgb2YgYHNxbGAgZnJvbSBhIGRlZGljYXRlZCBwb29sZWQgY29ubmVjdGlvbiB1c2luZyB0aGUgTXlTUUwgY3Vyc29yLCBzbyBhXG4gICAqIGxhcmdlIHJlc3VsdCBzZXQgaXMgcmVhZCBpbmNyZW1lbnRhbGx5IGluc3RlYWQgb2YgYmVpbmcgYnVmZmVyZWQuIE92ZXJyaWRlcyB0aGUgYmFzZVxuICAgKiBidWZmZXJlZCBmYWxsYmFjayB3aXRoIHRydWUgc2VydmVyLXNpZGUgc3RyZWFtaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3FsIC0gU1FMIHN0cmluZyB0byBzdHJlYW0uXG4gICAqIEB5aWVsZHMge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSAtIFRoZSByZXN1bHQgcm93cywgb25lIGF0IGEgdGltZS5cbiAgICovXG4gIGFzeW5jICpxdWVyeVN0cmVhbShzcWwpIHtcbiAgICBpZiAoIXRoaXMucG9vbCkgYXdhaXQgdGhpcy5jb25uZWN0KClcbiAgICBpZiAoIXRoaXMucG9vbCkgdGhyb3cgbmV3IEVycm9yKFwiTXlTUUwgcG9vbCBmYWlsZWQgdG8gaW5pdGlhbGl6ZVwiKVxuXG4gICAgeWllbGQqIHN0cmVhbVF1ZXJ5KHRoaXMucG9vbCwgc3FsKVxuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIGEgbXV0YXRpb24gd2l0aCBhZmZlY3RlZC1yb3cgbWV0YWRhdGEuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzcWwgLSBNdXRhdGlvbiBTUUwuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPG51bWJlcj59IC0gQWZmZWN0ZWQgcm93IGNvdW50LlxuICAgKi9cbiAgYXN5bmMgX2FmZmVjdGVkUm93c0FjdHVhbChzcWwpIHtcbiAgICBpZiAoIXRoaXMucG9vbCkgYXdhaXQgdGhpcy5jb25uZWN0KClcbiAgICBpZiAoIXRoaXMucG9vbCkgdGhyb3cgbmV3IEVycm9yKFwiTXlTUUwgcG9vbCBmYWlsZWQgdG8gaW5pdGlhbGl6ZVwiKVxuICAgIGNvbnN0IHBvb2wgPSB0aGlzLnBvb2xcblxuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBwb29sLnF1ZXJ5KHNxbCwgKGVycm9yLCByZXN1bHQpID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSByZWplY3QoZXJyb3IpXG4gICAgICAgIGVsc2UgcmVzb2x2ZShcImFmZmVjdGVkUm93c1wiIGluIHJlc3VsdCA/IHJlc3VsdC5hZmZlY3RlZFJvd3MgOiAwKVxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcXVlcnkgdG8gc3FsLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL3F1ZXJ5L2luZGV4LmpzXCIpLmRlZmF1bHR9IHF1ZXJ5IC0gUXVlcnkgaW5zdGFuY2UuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gU1FMIHN0cmluZy5cbiAgICovXG4gIHF1ZXJ5VG9TcWwocXVlcnkpIHsgcmV0dXJuIG5ldyBRdWVyeVBhcnNlcih7cXVlcnl9KS50b1NxbCgpIH1cblxuICAvKipcbiAgICogUnVucyBzaG91bGQgc2V0IGF1dG8gaW5jcmVtZW50IHdoZW4gcHJpbWFyeSBrZXkuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFdoZXRoZXIgc2V0IGF1dG8gaW5jcmVtZW50IHdoZW4gcHJpbWFyeSBrZXkuXG4gICAqL1xuICBzaG91bGRTZXRBdXRvSW5jcmVtZW50V2hlblByaW1hcnlLZXkoKSB7IHJldHVybiB0cnVlIH1cbiAgc3VwcG9ydHNEZWZhdWx0UHJpbWFyeUtleVVVSUQoKSB7IHJldHVybiBmYWxzZSB9XG4gIHN1cHBvcnRzQ3Jvc3NEYXRhYmFzZVJlZmVyZW5jZXMoKSB7IHJldHVybiB0cnVlIH1cblxuICAvKipcbiAgICogUnVucyBlc2NhcGUuXG4gICAqIEBwYXJhbSB7P30gdmFsdWUgLSBWYWx1ZSB0byB1c2UuXG4gICAqIEByZXR1cm5zIHs/fSAtIFRoZSBlc2NhcGUuXG4gICAqL1xuICBlc2NhcGUodmFsdWUpIHtcbiAgICBjb25zdCBlc2NhcGVkVmFsdWVXaXRoUXVvdGVzID0gdGhpcy5wb29sXG4gICAgICA/IHRoaXMucG9vbC5lc2NhcGUodGhpcy5fY29udmVydFZhbHVlKHZhbHVlKSlcbiAgICAgIDogbXlzcWwuZXNjYXBlKHRoaXMuX2NvbnZlcnRWYWx1ZSh2YWx1ZSkpXG5cbiAgICByZXR1cm4gZXNjYXBlZFZhbHVlV2l0aFF1b3Rlcy5zbGljZSgxLCBlc2NhcGVkVmFsdWVXaXRoUXVvdGVzLmxlbmd0aCAtIDEpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBxdW90ZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gVmFsdWUgdG8gdXNlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFRoZSBxdW90ZS5cbiAgICovXG4gIHF1b3RlKHZhbHVlKSB7XG4gICAgaWYgKHRoaXMucG9vbCkge1xuICAgICAgcmV0dXJuIHRoaXMucG9vbC5lc2NhcGUodGhpcy5fY29udmVydFZhbHVlKHZhbHVlKSlcbiAgICB9XG5cbiAgICByZXR1cm4gbXlzcWwuZXNjYXBlKHRoaXMuX2NvbnZlcnRWYWx1ZSh2YWx1ZSkpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBkZWxldGUgc3FsLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2Jhc2UuanNcIikuRGVsZXRlU3FsQXJnc1R5cGV9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBTUUwgc3RyaW5nLlxuICAgKi9cbiAgZGVsZXRlU3FsKHt0YWJsZU5hbWUsIGNvbmRpdGlvbnN9KSB7XG4gICAgY29uc3QgZGVsZXRlSW5zdHJ1Y3Rpb24gPSBuZXcgRGVsZXRlKHtjb25kaXRpb25zLCBkcml2ZXI6IHRoaXMsIHRhYmxlTmFtZX0pXG5cbiAgICByZXR1cm4gZGVsZXRlSW5zdHJ1Y3Rpb24udG9TcWwoKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgaW5zZXJ0IHNxbC5cbiAgICogQGFic3RyYWN0XG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vYmFzZS5qc1wiKS5JbnNlcnRTcWxBcmdzVHlwZX0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFNRTCBzdHJpbmcuXG4gICAqL1xuICBpbnNlcnRTcWwoYXJncykge1xuICAgIGNvbnN0IGluc2VydEFyZ3MgPSBPYmplY3QuYXNzaWduKHtkcml2ZXI6IHRoaXN9LCBhcmdzKVxuICAgIGNvbnN0IGluc2VydCA9IG5ldyBJbnNlcnQoaW5zZXJ0QXJncylcblxuICAgIHJldHVybiBpbnNlcnQudG9TcWwoKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgZ2V0IHRhYmxlcy5cbiAgICogQHJldHVybnMge1Byb21pc2U8QXJyYXk8aW1wb3J0KFwiLi4vYmFzZS10YWJsZS5qc1wiKS5kZWZhdWx0Pj59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgdGFibGVzLlxuICAgKi9cbiAgYXN5bmMgZ2V0VGFibGVzKCkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9jYWNoZWRTY2hlbWFNZXRhZGF0YShcInRhYmxlc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnF1ZXJ5KFwiU0hPVyBGVUxMIFRBQkxFU1wiKVxuICAgICAgY29uc3QgdGFibGVzID0gW11cblxuICAgICAgZm9yIChjb25zdCByb3cgb2YgcmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IHRhYmxlID0gbmV3IFRhYmxlKHRoaXMsIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgc3RyaW5nPn0gKi8gKHJvdykpXG5cbiAgICAgICAgdGFibGVzLnB1c2godGFibGUpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0YWJsZXNcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgc3RydWN0dXJlIHNxbC5cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nIHwgbnVsbD59IC0gUmVzb2x2ZXMgd2l0aCBTUUwgc3RyaW5nLlxuICAgKi9cbiAgYXN5bmMgc3RydWN0dXJlU3FsKCkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9jYWNoZWRTY2hlbWFNZXRhZGF0YShcInN0cnVjdHVyZVNxbFwiLCBhc3luYyAoKSA9PiBhd2FpdCBuZXcgU3RydWN0dXJlU3FsKHtkcml2ZXI6IHRoaXN9KS50b1NxbCgpKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgbGFzdCBpbnNlcnQgaWQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPG51bWJlcj59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgbGFzdCBpbnNlcnQgaWQuXG4gICAqL1xuICBhc3luYyBsYXN0SW5zZXJ0SUQoKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5xdWVyeShcIlNFTEVDVCBMQVNUX0lOU0VSVF9JRCgpIEFTIGxhc3RfaW5zZXJ0X2lkXCIpXG5cbiAgICByZXR1cm4gZGlnZyhyZXN1bHQsIDAsIFwibGFzdF9pbnNlcnRfaWRcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIG9wdGlvbnMuXG4gICAqIEByZXR1cm5zIHtPcHRpb25zfSAtIFRoZSBvcHRpb25zIG9wdGlvbnMuXG4gICAqL1xuICBvcHRpb25zKCkge1xuICAgIGlmICghdGhpcy5fb3B0aW9ucykgdGhpcy5fb3B0aW9ucyA9IG5ldyBPcHRpb25zKHtkcml2ZXI6IHRoaXN9KVxuXG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnNcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHN0YXJ0IHRyYW5zYWN0aW9uIGFjdGlvbi5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIF9zdGFydFRyYW5zYWN0aW9uQWN0aW9uKCkge1xuICAgIGF3YWl0IHRoaXMucXVlcnkoXCJTVEFSVCBUUkFOU0FDVElPTlwiKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgdXBkYXRlIHNxbC5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9iYXNlLmpzXCIpLlVwZGF0ZVNxbEFyZ3NUeXBlfSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gU1FMIHN0cmluZy5cbiAgICovXG4gIHVwZGF0ZVNxbCh7Y29uZGl0aW9ucywgZGF0YSwgdGFibGVOYW1lfSkge1xuICAgIGNvbnN0IHVwZGF0ZSA9IG5ldyBVcGRhdGUoe2NvbmRpdGlvbnMsIGRhdGEsIGRyaXZlcjogdGhpcywgdGFibGVOYW1lfSlcblxuICAgIHJldHVybiB1cGRhdGUudG9TcWwoKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgdXBzZXJ0IHNxbC5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9iYXNlLmpzXCIpLlVwc2VydFNxbEFyZ3NUeXBlfSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gU1FMIHN0cmluZy5cbiAgICovXG4gIHVwc2VydFNxbChhcmdzKSB7XG4gICAgY29uc3QgdXBzZXJ0ID0gbmV3IFVwc2VydCh7Li4uYXJncywgZHJpdmVyOiB0aGlzfSlcblxuICAgIHJldHVybiB1cHNlcnQudG9TcWwoKVxuICB9XG5cbiAgLyoqXG4gICAqIEJsb2NrcyB1bnRpbCBhIE15U1FML01hcmlhREIgdXNlci1sZXZlbCBsb2NrIGlzIGFjcXVpcmVkIG9uIHRoaXNcbiAgICogY29ubmVjdGlvbi4gSW1wbGVtZW50ZWQgdmlhIGBHRVRfTE9DSyhuYW1lLCB0aW1lb3V0KWAsIHdoZXJlIHRoZVxuICAgKiB0aW1lb3V0IGlzIGluIHNlY29uZHMuXG4gICAqXG4gICAqIE15U1FMIGhpc3RvcmljYWxseSBkb2N1bWVudGVkIGEgbmVnYXRpdmUgdGltZW91dCBhcyBcImluZmluaXRlXCIsXG4gICAqIGJ1dCBNYXJpYURCIDEwKyBzaWxlbnRseSByZWplY3RzIG5lZ2F0aXZlIHRpbWVvdXRzIGFuZCByZXR1cm5zXG4gICAqIGBOVUxMYCBmcm9tIGBHRVRfTE9DS2AuIFRvIG1ha2UgdGhlIGhlbHBlciBwb3J0YWJsZSBhY3Jvc3MgTXlTUUxcbiAgICogYW5kIE1hcmlhREIgdGhlIFwiaW5kZWZpbml0ZVwiIGNhc2UgaXMgZW5jb2RlZCBhcyBhIGxhcmdlIHBvc2l0aXZlXG4gICAqIHRpbWVvdXQgKG9uZSB5ZWFyKSwgd2hpY2ggaXMgY29tZm9ydGFibHkgbG9uZ2VyIHRoYW4gYW55XG4gICAqIHJlYWxpc3RpYyBjcml0aWNhbCBzZWN0aW9uIGFuZCB3b3JrcyBvbiBldmVyeSBzdXBwb3J0ZWQgdmVyc2lvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBMb2NrIG5hbWUuXG4gICAqIEBwYXJhbSB7e3RpbWVvdXRNcz86IG51bWJlciB8IG51bGx9fSBbYXJnc10gLSBPcHRpb25hbCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kczsgYG51bGxgLCBgdW5kZWZpbmVkYCwgb3IgbmVnYXRpdmUgYmxvY2tzIGZvciBgTVlTUUxfSU5ERUZJTklURV9MT0NLX1RJTUVPVVRfU0VDT05EU2AuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSAtIFRydWUgaWYgYWNxdWlyZWQsIGZhbHNlIGlmIHRoZSB0aW1lb3V0IGVsYXBzZWQuXG4gICAqL1xuICBhc3luYyBhY3F1aXJlQWR2aXNvcnlMb2NrKG5hbWUsIHt0aW1lb3V0TXN9ID0ge30pIHtcbiAgICBjb25zdCB0aW1lb3V0U2Vjb25kcyA9IHR5cGVvZiB0aW1lb3V0TXMgPT09IFwibnVtYmVyXCIgJiYgdGltZW91dE1zID49IDBcbiAgICAgID8gTWF0aC5jZWlsKHRpbWVvdXRNcyAvIDEwMDApXG4gICAgICA6IE1ZU1FMX0lOREVGSU5JVEVfTE9DS19USU1FT1VUX1NFQ09ORFNcbiAgICBjb25zdCByb3dzID0gYXdhaXQgdGhpcy5xdWVyeShgU0VMRUNUIEdFVF9MT0NLKCR7dGhpcy5xdW90ZShuYW1lKX0sICR7dGltZW91dFNlY29uZHN9KSBBUyB2ZWxvY2lvdXNfYWR2aXNvcnlfbG9ja19yZXN1bHRgKVxuICAgIGNvbnN0IHJlc3VsdCA9IHJvd3M/LlswXT8udmVsb2Npb3VzX2Fkdmlzb3J5X2xvY2tfcmVzdWx0XG5cbiAgICBpZiAocmVzdWx0ID09PSBudWxsIHx8IHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEdFVF9MT0NLIHJldHVybmVkIE5VTEwgZm9yIGFkdmlzb3J5IGxvY2sgJHtKU09OLnN0cmluZ2lmeShuYW1lKX0gKHR5cGljYWxseSBhbiBvdXQtb2YtbWVtb3J5IG9yIHRocmVhZC1raWxsZWQgY29uZGl0aW9uKWApXG4gICAgfVxuXG4gICAgcmV0dXJuIE51bWJlcihyZXN1bHQpID09PSAxXG4gIH1cblxuICAvKipcbiAgICogUnVucyB0cnkgYWNxdWlyZSBhZHZpc29yeSBsb2NrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIExvY2sgbmFtZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IC0gVHJ1ZSBpZiB0aGUgbG9jayB3YXMgYWNxdWlyZWQsIGZhbHNlIGlmIGl0IHdhcyBhbHJlYWR5IGhlbGQuXG4gICAqL1xuICBhc3luYyB0cnlBY3F1aXJlQWR2aXNvcnlMb2NrKG5hbWUpIHtcbiAgICBjb25zdCByb3dzID0gYXdhaXQgdGhpcy5xdWVyeShgU0VMRUNUIEdFVF9MT0NLKCR7dGhpcy5xdW90ZShuYW1lKX0sIDApIEFTIHZlbG9jaW91c19hZHZpc29yeV9sb2NrX3Jlc3VsdGApXG4gICAgY29uc3QgcmVzdWx0ID0gcm93cz8uWzBdPy52ZWxvY2lvdXNfYWR2aXNvcnlfbG9ja19yZXN1bHRcblxuICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgcmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgR0VUX0xPQ0sgcmV0dXJuZWQgTlVMTCBmb3IgYWR2aXNvcnkgbG9jayAke0pTT04uc3RyaW5naWZ5KG5hbWUpfSAodHlwaWNhbGx5IGFuIG91dC1vZi1tZW1vcnkgb3IgdGhyZWFkLWtpbGxlZCBjb25kaXRpb24pYClcbiAgICB9XG5cbiAgICByZXR1cm4gTnVtYmVyKHJlc3VsdCkgPT09IDFcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHJlbGVhc2UgYWR2aXNvcnkgbG9jay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBMb2NrIG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSAtIFRydWUgaWYgdGhlIGxvY2sgd2FzIGhlbGQgYnkgdGhpcyBzZXNzaW9uIGFuZCBoYXMgbm93IGJlZW4gcmVsZWFzZWQuXG4gICAqL1xuICBhc3luYyByZWxlYXNlQWR2aXNvcnlMb2NrKG5hbWUpIHtcbiAgICBjb25zdCByb3dzID0gYXdhaXQgdGhpcy5xdWVyeShgU0VMRUNUIFJFTEVBU0VfTE9DSygke3RoaXMucXVvdGUobmFtZSl9KSBBUyB2ZWxvY2lvdXNfYWR2aXNvcnlfbG9ja19yZXN1bHRgKVxuICAgIGNvbnN0IHJlc3VsdCA9IHJvd3M/LlswXT8udmVsb2Npb3VzX2Fkdmlzb3J5X2xvY2tfcmVzdWx0XG5cbiAgICByZXR1cm4gTnVtYmVyKHJlc3VsdCkgPT09IDFcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGlzIGFkdmlzb3J5IGxvY2sgaGVsZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBMb2NrIG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSAtIFRydWUgaWYgYW55IHNlc3Npb24gY3VycmVudGx5IGhvbGRzIHRoZSBsb2NrLlxuICAgKi9cbiAgYXN5bmMgaXNBZHZpc29yeUxvY2tIZWxkKG5hbWUpIHtcbiAgICBjb25zdCByb3dzID0gYXdhaXQgdGhpcy5xdWVyeShgU0VMRUNUIElTX1VTRURfTE9DSygke3RoaXMucXVvdGUobmFtZSl9KSBBUyB2ZWxvY2lvdXNfYWR2aXNvcnlfbG9ja19ob2xkZXJgKVxuICAgIGNvbnN0IGhvbGRlciA9IHJvd3M/LlswXT8udmVsb2Npb3VzX2Fkdmlzb3J5X2xvY2tfaG9sZGVyXG5cbiAgICByZXR1cm4gaG9sZGVyICE9PSBudWxsICYmIGhvbGRlciAhPT0gdW5kZWZpbmVkXG4gIH1cbn1cbiJdfQ==
546
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9teXNxbC9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxVQUFVLE1BQU0sc0JBQXNCLENBQUE7QUFDN0MsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFBO0FBQzdCLE9BQU8sY0FBYyxNQUFNLDBCQUEwQixDQUFBO0FBQ3JELE9BQU8sV0FBVyxNQUFNLHVCQUF1QixDQUFBO0FBQy9DLE9BQU8sV0FBVyxNQUFNLHVCQUF1QixDQUFBO0FBQy9DLE9BQU8sTUFBTSxNQUFNLGlCQUFpQixDQUFBO0FBQ3BDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDOUIsT0FBTyxZQUFZLE1BQU0sd0JBQXdCLENBQUE7QUFDakQsT0FBTyxTQUFTLE1BQU0scUJBQXFCLENBQUE7QUFDM0MsT0FBTyxNQUFNLE1BQU0saUJBQWlCLENBQUE7QUFDcEMsT0FBTyxPQUFPLE1BQU0sY0FBYyxDQUFBO0FBQ2xDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQTtBQUN6QixPQUFPLEtBQUssTUFBTSxZQUFZLENBQUE7QUFDOUIsT0FBTyxXQUFXLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxXQUFXLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxXQUFXLE1BQU0sdUJBQXVCLENBQUE7QUFDL0MsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFBO0FBQzlCLE9BQU8sWUFBWSxNQUFNLG9CQUFvQixDQUFBO0FBQzdDLE9BQU8sTUFBTSxNQUFNLGlCQUFpQixDQUFBO0FBQ3BDLE9BQU8sTUFBTSxNQUFNLGlCQUFpQixDQUFBO0FBRXBDOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLHFDQUFxQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQTtBQUVoRSxNQUFNLENBQUMsT0FBTyxPQUFPLDZCQUE4QixTQUFRLElBQUk7SUFDN0QsK0NBQStDO0lBQy9DLElBQUksR0FBRyxTQUFTLENBQUE7SUFFaEIsNEJBQTRCO0lBQzVCLHVCQUF1QixHQUFHLFFBQVEsQ0FBQTtJQUVsQyw0QkFBNEI7SUFDNUIsdUJBQXVCLEdBQUcsSUFBSSxDQUFBO0lBRTlCOzs7T0FHRztJQUNILEtBQUssQ0FBQyxPQUFPO1FBQ1gsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUE7UUFDbEMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxlQUFlLEVBQUUsQ0FBQyxFQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUNyRixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUN0QixPQUFPLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQy9ELENBQUMsQ0FBQTtJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxLQUFLO1FBQ1QsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFBO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFBO1FBQ3JCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFBO0lBQ3BDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLHlCQUF5QixDQUFDLElBQUk7UUFDbEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFBO1FBRWpELE1BQU0sS0FBSyxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFBO1FBRTNDLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksWUFBWSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUMvQixNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsZ0RBQWdELEVBQUUsRUFBQyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFBO1lBQ3BLLENBQUM7WUFFRCxPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyw2Q0FBNkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQTtJQUNqTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLDJCQUEyQjtRQUMvQixJQUFJLElBQUksQ0FBQyx1QkFBdUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMvQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsZ0RBQWdELEVBQUUsRUFBQyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFBO1FBQ3BLLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQywyQkFBMkIsRUFBRSxDQUFBO0lBQzNDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE9BQU87UUFDN0IsSUFBSSxPQUFPLENBQUMsZUFBZSxLQUFLLEtBQUs7WUFBRSxNQUFNLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFBO0lBQzNFLENBQUM7SUFFRDs7O09BR0c7SUFDSCx5QkFBeUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUE7SUFDckMsQ0FBQztJQUVEOzs7T0FHRztJQUNILHlCQUF5QixDQUFDLFFBQVE7UUFDaEMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLFFBQVEsQ0FBQTtJQUN6QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gseUJBQXlCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFBO0lBQ3JDLENBQUM7SUFFRDs7T0FFRztJQUNILDJCQUEyQjtRQUN6QixJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFBO0lBQ3JDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMscUJBQXFCO1FBQ3pCLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUE7UUFFL0QsSUFBSSxzQkFBc0IsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLHlCQUF5QixFQUFFLEtBQUssc0JBQXNCO1lBQUUsT0FBTyxLQUFLLENBQUE7UUFFaEgsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtRQUVyRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFFBQVE7UUFDL0IsSUFBSSxJQUFJLENBQUMseUJBQXlCLEVBQUUsS0FBSyxRQUFRO1lBQUUsT0FBTyxLQUFLLENBQUE7UUFFL0QsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNsRSxJQUFJLENBQUMsdUJBQXVCLEdBQUcsUUFBUSxDQUFBO1FBRXZDLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVc7UUFDVCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDM0IsTUFBTSxPQUFPLEdBQUcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBRWhEOzt1Q0FFK0I7UUFDL0IsTUFBTSxXQUFXLEdBQUcsRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUMsQ0FBQTtRQUV2RCxLQUFLLE1BQU0sWUFBWSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ25DLElBQUksWUFBWSxJQUFJLElBQUk7Z0JBQUUsV0FBVyxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUE7UUFDaEYsQ0FBQztRQUVELElBQUksVUFBVSxJQUFJLElBQUk7WUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQzlELElBQUksU0FBUyxJQUFJLElBQUk7WUFBRSxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBRS9ELE9BQU8sV0FBVyxDQUFBO0lBQ3BCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FBQyxTQUFTO1FBQzVCLE1BQU0sU0FBUyxHQUFHLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUMsQ0FBQTtRQUMzQyxNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUU1QyxPQUFPLE1BQU0sVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsSUFBSTtRQUNsQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUNwRSxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUVyRCxPQUFPLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUMvQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZUFBZSxDQUFDLFlBQVksRUFBRSxJQUFJO1FBQ2hDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ2xFLE1BQU0sWUFBWSxHQUFHLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRS9DLE9BQU8sWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQzdCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLGVBQWUsQ0FBQyxTQUFTO1FBQzdCLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDLEVBQUUsU0FBUyxDQUFDLENBQUE7UUFDM0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUE7UUFFL0MsT0FBTyxNQUFNLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUNuQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxlQUFlLENBQUMsU0FBUztRQUM3QixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBQzNELE1BQU0sV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBRS9DLE9BQU8sTUFBTSxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDbkMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsY0FBYyxDQUFDLFNBQVM7UUFDNUIsTUFBTSxVQUFVLEdBQUcsRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQyxDQUFBO1FBQzVDLE1BQU0sV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBRS9DLE9BQU8sV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsZUFBZTtRQUNuQixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQTtRQUU3RCxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQ2pDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsa0JBQWtCO1FBQ3RCLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFBO0lBQ2hELENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsaUJBQWlCO1FBQ3JCLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFBO0lBQ2hELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLElBQUksR0FBRyxFQUFFO1FBQ3RDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQy9ELE1BQU0sU0FBUyxHQUFHLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRXpDLE9BQU8sTUFBTSxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDakMsQ0FBQztJQUVEOzs7T0FHRztJQUNILE9BQU8sS0FBSyxPQUFPLE9BQU8sQ0FBQSxDQUFDLENBQUM7SUFFNUI7Ozs7T0FJRztJQUNILHNCQUFzQixDQUFDLEtBQUs7UUFDMUIsZ0NBQWdDO1FBQ2hDLElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQTtRQUN4QixJQUFJLGVBQWUsR0FBRyxLQUFLLENBQUE7UUFFM0IsT0FBTyxZQUFZLEVBQUUsQ0FBQztZQUNwQixNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksWUFBWSxJQUFJLE9BQU8sWUFBWSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtZQUNoSCxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQTtZQUUxQyxJQUFJLFNBQVMsSUFBSSxjQUFjLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxvQ0FBb0MsQ0FBQyxFQUFFLENBQUM7Z0JBQzFGLE9BQU8sRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBQyxDQUFBO1lBQ3BELENBQUM7WUFFRCwwRkFBMEY7WUFDMUYsMkZBQTJGO1lBQzNGLDZGQUE2RjtZQUM3RixJQUNFLFNBQVMsSUFBSSxrQkFBa0I7Z0JBQy9CLFNBQVMsSUFBSSxzQkFBc0I7Z0JBQ25DLE9BQU8sQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUM7Z0JBQ3BDLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ2xDLE9BQU8sQ0FBQyxRQUFRLENBQUMsNEJBQTRCLENBQUMsRUFDOUMsQ0FBQztnQkFDRCxPQUFPLEVBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBQyxDQUFBO1lBQ3JFLENBQUM7WUFFRCxlQUFlLEtBQUssQ0FDbEIsU0FBUyxJQUFJLGNBQWM7Z0JBQzNCLE9BQU8sQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDO2dCQUNoQyxPQUFPLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDO2dCQUN4QyxPQUFPLENBQUMsUUFBUSxDQUFDLDBCQUEwQixDQUFDO2dCQUM1QyxPQUFPLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQ3BDLENBQUE7WUFFRCxZQUFZLEdBQUcsWUFBWSxDQUFDLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtRQUNyRixDQUFDO1FBRUQsT0FBTztZQUNMLEtBQUssRUFBRSxlQUFlO1lBQ3RCLFNBQVMsRUFBRSxlQUFlO1lBQzFCLE1BQU0sRUFBRSxFQUFFO1NBQ1gsQ0FBQTtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQTtRQUVsRSxJQUFJLENBQUM7WUFDSCxPQUFPLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUE7UUFDcEMsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixvQ0FBb0M7WUFDcEMsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFLENBQUM7Z0JBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFBO1lBQ25FLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixLQUFLLEVBQUUsRUFBRSxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFBO1lBQzNELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQTtRQUVsRSxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUNwQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQTtRQUNsRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFBO1FBRXRCLE9BQU8sTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUMzQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDaEMsSUFBSSxLQUFLO29CQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTs7b0JBQ25CLE9BQU8sQ0FBQyxjQUFjLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUNsRSxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxVQUFVLENBQUMsS0FBSyxJQUFJLE9BQU8sSUFBSSxXQUFXLENBQUMsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFBLENBQUMsQ0FBQztJQUU3RDs7O09BR0c7SUFDSCxvQ0FBb0MsS0FBSyxPQUFPLElBQUksQ0FBQSxDQUFDLENBQUM7SUFDdEQsNkJBQTZCLEtBQUssT0FBTyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBQ2hELCtCQUErQixLQUFLLE9BQU8sSUFBSSxDQUFBLENBQUMsQ0FBQztJQUVqRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEtBQUs7UUFDVixNQUFNLHNCQUFzQixHQUFHLElBQUksQ0FBQyxJQUFJO1lBQ3RDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtRQUUzQyxPQUFPLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsc0JBQXNCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQzNFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLEtBQUs7UUFDVCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBQ3BELENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQ2hELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBQztRQUMvQixNQUFNLGlCQUFpQixHQUFHLElBQUksTUFBTSxDQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQTtRQUUzRSxPQUFPLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFNBQVMsQ0FBQyxJQUFJO1FBQ1osTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN0RCxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUVyQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUN2QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLFNBQVM7UUFDYixPQUFPLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksRUFBRTtZQUMzRCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtZQUNuRCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUE7WUFFakIsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLHFDQUFxQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtnQkFFMUUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNwQixDQUFDO1lBRUQsT0FBTyxNQUFNLENBQUE7UUFDZixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsWUFBWTtRQUNoQixPQUFPLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLE1BQU0sSUFBSSxZQUFZLENBQUMsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO0lBQ3JILENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsWUFBWTtRQUNoQixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQTtRQUU1RSxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUE7SUFDMUMsQ0FBQztJQUVEOzs7T0FHRztJQUNILE9BQU87UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksT0FBTyxDQUFDLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUE7UUFFL0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFBO0lBQ3RCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsdUJBQXVCO1FBQzNCLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLEVBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUM7UUFDckMsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsRUFBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQTtRQUV0RSxPQUFPLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUN2QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxJQUFJO1FBQ1osTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsRUFBQyxHQUFHLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQTtRQUVsRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUN2QixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7O09BY0c7SUFDSCxLQUFLLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLEVBQUMsU0FBUyxFQUFDLEdBQUcsRUFBRTtRQUM5QyxNQUFNLGNBQWMsR0FBRyxPQUFPLFNBQVMsS0FBSyxRQUFRLElBQUksU0FBUyxJQUFJLENBQUM7WUFDcEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUM3QixDQUFDLENBQUMscUNBQXFDLENBQUE7UUFDekMsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLGNBQWMscUNBQXFDLENBQUMsQ0FBQTtRQUMxSCxNQUFNLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSw4QkFBOEIsQ0FBQTtRQUV4RCxJQUFJLE1BQU0sS0FBSyxJQUFJLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzVDLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLDBEQUEwRCxDQUFDLENBQUE7UUFDN0ksQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM3QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJO1FBQy9CLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsd0NBQXdDLENBQUMsQ0FBQTtRQUMxRyxNQUFNLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSw4QkFBOEIsQ0FBQTtRQUV4RCxJQUFJLE1BQU0sS0FBSyxJQUFJLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzVDLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLDBEQUEwRCxDQUFDLENBQUE7UUFDN0ksQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM3QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJO1FBQzVCLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMscUNBQXFDLENBQUMsQ0FBQTtRQUMzRyxNQUFNLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSw4QkFBOEIsQ0FBQTtRQUV4RCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDN0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSTtRQUMzQixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsdUJBQXVCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLHFDQUFxQyxDQUFDLENBQUE7UUFDM0csTUFBTSxNQUFNLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsOEJBQThCLENBQUE7UUFFeEQsT0FBTyxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sS0FBSyxTQUFTLENBQUE7SUFDaEQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBBbHRlclRhYmxlIGZyb20gXCIuL3NxbC9hbHRlci10YWJsZS5qc1wiXG5pbXBvcnQgQmFzZSBmcm9tIFwiLi4vYmFzZS5qc1wiXG5pbXBvcnQgQ3JlYXRlRGF0YWJhc2UgZnJvbSBcIi4vc3FsL2NyZWF0ZS1kYXRhYmFzZS5qc1wiXG5pbXBvcnQgQ3JlYXRlSW5kZXggZnJvbSBcIi4vc3FsL2NyZWF0ZS1pbmRleC5qc1wiXG5pbXBvcnQgQ3JlYXRlVGFibGUgZnJvbSBcIi4vc3FsL2NyZWF0ZS10YWJsZS5qc1wiXG5pbXBvcnQgRGVsZXRlIGZyb20gXCIuL3NxbC9kZWxldGUuanNcIlxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCBEcm9wRGF0YWJhc2UgZnJvbSBcIi4vc3FsL2Ryb3AtZGF0YWJhc2UuanNcIlxuaW1wb3J0IERyb3BUYWJsZSBmcm9tIFwiLi9zcWwvZHJvcC10YWJsZS5qc1wiXG5pbXBvcnQgSW5zZXJ0IGZyb20gXCIuL3NxbC9pbnNlcnQuanNcIlxuaW1wb3J0IE9wdGlvbnMgZnJvbSBcIi4vb3B0aW9ucy5qc1wiXG5pbXBvcnQgbXlzcWwgZnJvbSBcIm15c3FsXCJcbmltcG9ydCBxdWVyeSBmcm9tIFwiLi9xdWVyeS5qc1wiXG5pbXBvcnQgUXVlcnlQYXJzZXIgZnJvbSBcIi4vcXVlcnktcGFyc2VyLmpzXCJcbmltcG9ydCBzdHJlYW1RdWVyeSBmcm9tIFwiLi9xdWVyeS1zdHJlYW0uanNcIlxuaW1wb3J0IFJlbW92ZUluZGV4IGZyb20gXCIuL3NxbC9yZW1vdmUtaW5kZXguanNcIlxuaW1wb3J0IFRhYmxlIGZyb20gXCIuL3RhYmxlLmpzXCJcbmltcG9ydCBTdHJ1Y3R1cmVTcWwgZnJvbSBcIi4vc3RydWN0dXJlLXNxbC5qc1wiXG5pbXBvcnQgVXBzZXJ0IGZyb20gXCIuL3NxbC91cHNlcnQuanNcIlxuaW1wb3J0IFVwZGF0ZSBmcm9tIFwiLi9zcWwvdXBkYXRlLmpzXCJcblxuLyoqXG4gKiBTZW50aW5lbCB0aW1lb3V0IChpbiBzZWNvbmRzKSB1c2VkIGFzIHRoZSBcImJsb2NrIGZvcmV2ZXJcIiB2YWx1ZSB3aGVuIGFcbiAqIGNhbGxlciBhc2tzIGZvciBhbiBpbmRlZmluaXRlIGFkdmlzb3J5IGxvY2sgYWNxdWlyZS4gTXlTUUwgaGlzdG9yaWNhbGx5XG4gKiBhY2NlcHRlZCBuZWdhdGl2ZSB0aW1lb3V0cyBhcyBcImluZmluaXRlXCIsIGJ1dCBNYXJpYURCIDEwKyBzaWxlbnRseVxuICogcmV0dXJucyBOVUxMIGZyb20gYEdFVF9MT0NLYCB3aGVuIHRoZSB0aW1lb3V0IGlzIG5lZ2F0aXZlLCBzbyB0aGVcbiAqIGRyaXZlciBjbGFtcHMgdG8gYSBjb21mb3J0YWJseSBsYXJnZSBwb3NpdGl2ZSB2YWx1ZSAoMSB5ZWFyIOKJqyBhbnlcbiAqIHJlYWxpc3RpYyBjcml0aWNhbCBzZWN0aW9uKSBpbnN0ZWFkLlxuICovXG5jb25zdCBNWVNRTF9JTkRFRklOSVRFX0xPQ0tfVElNRU9VVF9TRUNPTkRTID0gNjAgKiA2MCAqIDI0ICogMzY1XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlRHJpdmVyc015c3FsIGV4dGVuZHMgQmFzZXtcbiAgLyoqIEB0eXBlIHtpbXBvcnQoXCJteXNxbFwiKS5Qb29sIHwgdW5kZWZpbmVkfSAqL1xuICBwb29sID0gdW5kZWZpbmVkXG5cbiAgLyoqIEB0eXBlIHtzdHJpbmcgfCBudWxsfSAqL1xuICBfZGVzaXJlZFNlc3Npb25UaW1lWm9uZSA9IFwiKzAwOjAwXCJcblxuICAvKiogQHR5cGUge3N0cmluZyB8IG51bGx9ICovXG4gIF9jdXJyZW50U2Vzc2lvblRpbWVab25lID0gbnVsbFxuXG4gIC8qKlxuICAgKiBSdW5zIGNvbm5lY3QuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyBjb25uZWN0KCkge1xuICAgIHRoaXMucmVzZXRDdXJyZW50U2Vzc2lvblRpbWVab25lKClcbiAgICB0aGlzLnBvb2wgPSBteXNxbC5jcmVhdGVQb29sKE9iamVjdC5hc3NpZ24oe2Nvbm5lY3Rpb25MaW1pdDogMX0sIHRoaXMuY29ubmVjdEFyZ3MoKSkpXG4gICAgdGhpcy5wb29sLm9uKFwiZXJyb3JcIiwgdGhpcy5vblBvb2xFcnJvcilcbiAgfVxuXG4gIC8qKlxuICAgKiBPbiBwb29sIGVycm9yLlxuICAgKiBAcGFyYW0ge0Vycm9yfSBlcnJvciAtIEVycm9yIGZyb20gdGhlIGNvbm5lY3Rpb24gYXR0ZW1wdC5cbiAgICovXG4gIG9uUG9vbEVycm9yID0gKGVycm9yKSA9PiB7XG4gICAgY29uc29sZS5lcnJvcihcIlZlbG9jaW91cyAvIE15U1FMIGRyaXZlciAvIFBvb2wgZXJyb3JcIiwgZXJyb3IpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBjbG9zZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIGNsb3NlKCkge1xuICAgIGF3YWl0IHRoaXMucG9vbD8uZW5kKClcbiAgICB0aGlzLnBvb2wgPSB1bmRlZmluZWRcbiAgICB0aGlzLnJlc2V0Q3VycmVudFNlc3Npb25UaW1lWm9uZSgpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBzZXQgY29ubmVjdGlvbiBjaGVja291dCBuYW1lLlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHVuZGVmaW5lZH0gbmFtZSAtIEh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoaXMgYWN0aXZlIGNoZWNrb3V0LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgc2V0Q29ubmVjdGlvbkNoZWNrb3V0TmFtZShuYW1lKSB7XG4gICAgY29uc3QgcHJldmlvdXNOYW1lID0gdGhpcy5fY29ubmVjdGlvbkNoZWNrb3V0TmFtZVxuXG4gICAgYXdhaXQgc3VwZXIuc2V0Q29ubmVjdGlvbkNoZWNrb3V0TmFtZShuYW1lKVxuXG4gICAgaWYgKG5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHByZXZpb3VzTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucXVlcnkoXCJTRVQgQHZlbG9jaW91c19jb25uZWN0aW9uX2NoZWNrb3V0X25hbWUgPSBOVUxMXCIsIHtsb2dOYW1lOiBcIkNsZWFyIENvbm5lY3Rpb24gQ2hlY2tvdXQgTmFtZVwiLCBwcm9jZXNzTGlzdENvbW1lbnQ6IGZhbHNlLCBzZXNzaW9uVGltZVpvbmU6IGZhbHNlfSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5xdWVyeShgU0VUIEB2ZWxvY2lvdXNfY29ubmVjdGlvbl9jaGVja291dF9uYW1lID0gJHt0aGlzLnF1b3RlKG5hbWUpfWAsIHtsb2dOYW1lOiBcIlNldCBDb25uZWN0aW9uIENoZWNrb3V0IE5hbWVcIiwgcHJvY2Vzc0xpc3RDb21tZW50OiBmYWxzZSwgc2Vzc2lvblRpbWVab25lOiBmYWxzZX0pXG4gIH1cblxuICAvKipcbiAgICogUnVucyBjbGVhciBjb25uZWN0aW9uIGNoZWNrb3V0IG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyBjbGVhckNvbm5lY3Rpb25DaGVja291dE5hbWUoKSB7XG4gICAgaWYgKHRoaXMuX2Nvbm5lY3Rpb25DaGVja291dE5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXdhaXQgdGhpcy5xdWVyeShcIlNFVCBAdmVsb2Npb3VzX2Nvbm5lY3Rpb25fY2hlY2tvdXRfbmFtZSA9IE5VTExcIiwge2xvZ05hbWU6IFwiQ2xlYXIgQ29ubmVjdGlvbiBDaGVja291dCBOYW1lXCIsIHByb2Nlc3NMaXN0Q29tbWVudDogZmFsc2UsIHNlc3Npb25UaW1lWm9uZTogZmFsc2V9KVxuICAgIH1cblxuICAgIGF3YWl0IHN1cGVyLmNsZWFyQ29ubmVjdGlvbkNoZWNrb3V0TmFtZSgpXG4gIH1cblxuICAvKipcbiAgICogSG9vayBiZWZvcmUgZXZlcnkgcXVlcnkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBfc3FsIC0gU1FMIHN0cmluZy5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9iYXNlLmpzXCIpLlF1ZXJ5T3B0aW9uc30gb3B0aW9ucyAtIFF1ZXJ5IG9wdGlvbnMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyBiZWZvcmVRdWVyeShfc3FsLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMuc2Vzc2lvblRpbWVab25lICE9PSBmYWxzZSkgYXdhaXQgdGhpcy5lbnN1cmVTZXNzaW9uVGltZVpvbmUoKVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGRlc2lyZWQgZGF0YWJhc2Ugc2Vzc2lvbiB0aW1lIHpvbmUgZm9yIHRoaXMgY29ubmVjdGlvbiBjb250ZXh0LlxuICAgKiBAcmV0dXJucyB7c3RyaW5nIHwgbnVsbH0gLSBEZXNpcmVkIHNlc3Npb24gdGltZSB6b25lLlxuICAgKi9cbiAgZ2V0RGVzaXJlZFNlc3Npb25UaW1lWm9uZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVzaXJlZFNlc3Npb25UaW1lWm9uZVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRlc2lyZWQgZGF0YWJhc2Ugc2Vzc2lvbiB0aW1lIHpvbmUgd2l0aG91dCBxdWVyeWluZyBNeVNRTCBpbW1lZGlhdGVseS5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSB0aW1lWm9uZSAtIERlc2lyZWQgc2Vzc2lvbiB0aW1lIHpvbmUuXG4gICAqL1xuICBzZXREZXNpcmVkU2Vzc2lvblRpbWVab25lKHRpbWVab25lKSB7XG4gICAgdGhpcy5fZGVzaXJlZFNlc3Npb25UaW1lWm9uZSA9IHRpbWVab25lXG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZGF0YWJhc2Ugc2Vzc2lvbiB0aW1lIHpvbmUgbGFzdCBjb25maXJtZWQgdGhyb3VnaCBTRVQgdGltZV96b25lLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nIHwgbnVsbH0gLSBDdXJyZW50IGtub3duIHNlc3Npb24gdGltZSB6b25lLlxuICAgKi9cbiAgZ2V0Q3VycmVudFNlc3Npb25UaW1lWm9uZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFNlc3Npb25UaW1lWm9uZVxuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUgY3VycmVudCBrbm93biBkYXRhYmFzZSBzZXNzaW9uIHRpbWUgem9uZSB3aGVuIHRoZSBwaHlzaWNhbCBjb25uZWN0aW9uIGNoYW5nZXMuXG4gICAqL1xuICByZXNldEN1cnJlbnRTZXNzaW9uVGltZVpvbmUoKSB7XG4gICAgdGhpcy5fY3VycmVudFNlc3Npb25UaW1lWm9uZSA9IG51bGxcbiAgfVxuXG4gIC8qKlxuICAgKiBFbnN1cmVzIE15U1FMIGhhcyB0aGUgZGVzaXJlZCBzZXNzaW9uIHRpbWUgem9uZSBiZWZvcmUgdXNlciBTUUwgcnVucy5cbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IC0gVHJ1ZSB3aGVuIFNFVCB0aW1lX3pvbmUgd2FzIGV4ZWN1dGVkLlxuICAgKi9cbiAgYXN5bmMgZW5zdXJlU2Vzc2lvblRpbWVab25lKCkge1xuICAgIGNvbnN0IGRlc2lyZWRTZXNzaW9uVGltZVpvbmUgPSB0aGlzLmdldERlc2lyZWRTZXNzaW9uVGltZVpvbmUoKVxuXG4gICAgaWYgKGRlc2lyZWRTZXNzaW9uVGltZVpvbmUgPT09IG51bGwgfHwgdGhpcy5nZXRDdXJyZW50U2Vzc2lvblRpbWVab25lKCkgPT09IGRlc2lyZWRTZXNzaW9uVGltZVpvbmUpIHJldHVybiBmYWxzZVxuXG4gICAgYXdhaXQgdGhpcy5zZXRTZXNzaW9uVGltZVpvbmUoZGVzaXJlZFNlc3Npb25UaW1lWm9uZSlcblxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZGF0YWJhc2Ugc2Vzc2lvbiB0aW1lIHpvbmUgaWYgaXQgY2hhbmdlZCBmcm9tIHRoZSBsYXN0IGNvbmZpcm1lZCB2YWx1ZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRpbWVab25lIC0gU2Vzc2lvbiB0aW1lIHpvbmUgdmFsdWUgYWNjZXB0ZWQgYnkgTXlTUUwuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSAtIFRydWUgd2hlbiBTRVQgdGltZV96b25lIHdhcyBleGVjdXRlZC5cbiAgICovXG4gIGFzeW5jIHNldFNlc3Npb25UaW1lWm9uZSh0aW1lWm9uZSkge1xuICAgIGlmICh0aGlzLmdldEN1cnJlbnRTZXNzaW9uVGltZVpvbmUoKSA9PT0gdGltZVpvbmUpIHJldHVybiBmYWxzZVxuXG4gICAgYXdhaXQgdGhpcy5fcXVlcnlBY3R1YWwoYFNFVCB0aW1lX3pvbmUgPSAke3RoaXMucXVvdGUodGltZVpvbmUpfWApXG4gICAgdGhpcy5fY3VycmVudFNlc3Npb25UaW1lWm9uZSA9IHRpbWVab25lXG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgY29ubmVjdCBhcmdzLlxuICAgKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgPz59IC0gVGhlIGNvbm5lY3QgYXJncy5cbiAgICovXG4gIGNvbm5lY3RBcmdzKCkge1xuICAgIGNvbnN0IGFyZ3MgPSB0aGlzLmdldEFyZ3MoKVxuICAgIGNvbnN0IGZvcndhcmQgPSBbXCJkYXRhYmFzZVwiLCBcImhvc3RcIiwgXCJwYXNzd29yZFwiXVxuXG4gICAgLyoqXG4gICAgICogQ29ubmVjdCBhcmdzLlxuICAgICAqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCA/Pn0gKi9cbiAgICBjb25zdCBjb25uZWN0QXJncyA9IHtjaGFyc2V0OiBcInV0ZjhtYjRcIiwgdGltZXpvbmU6IFwiWlwifVxuXG4gICAgZm9yIChjb25zdCBmb3J3YXJkVmFsdWUgb2YgZm9yd2FyZCkge1xuICAgICAgaWYgKGZvcndhcmRWYWx1ZSBpbiBhcmdzKSBjb25uZWN0QXJnc1tmb3J3YXJkVmFsdWVdID0gZGlnZyhhcmdzLCBmb3J3YXJkVmFsdWUpXG4gICAgfVxuXG4gICAgaWYgKFwidXNlcm5hbWVcIiBpbiBhcmdzKSBjb25uZWN0QXJnc1tcInVzZXJcIl0gPSBhcmdzW1widXNlcm5hbWVcIl1cbiAgICBpZiAoXCJjaGFyc2V0XCIgaW4gYXJncykgY29ubmVjdEFyZ3NbXCJjaGFyc2V0XCJdID0gYXJnc1tcImNoYXJzZXRcIl1cblxuICAgIHJldHVybiBjb25uZWN0QXJnc1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgYWx0ZXIgdGFibGUgc3Fscy5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi90YWJsZS1kYXRhL2luZGV4LmpzXCIpLmRlZmF1bHR9IHRhYmxlRGF0YSAtIFRhYmxlIGRhdGEuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZ1tdPn0gLSBSZXNvbHZlcyB3aXRoIFNRTCBzdGF0ZW1lbnRzLlxuICAgKi9cbiAgYXN5bmMgYWx0ZXJUYWJsZVNRTHModGFibGVEYXRhKSB7XG4gICAgY29uc3QgYWx0ZXJBcmdzID0ge3RhYmxlRGF0YSwgZHJpdmVyOiB0aGlzfVxuICAgIGNvbnN0IGFsdGVyVGFibGUgPSBuZXcgQWx0ZXJUYWJsZShhbHRlckFyZ3MpXG5cbiAgICByZXR1cm4gYXdhaXQgYWx0ZXJUYWJsZS50b1NRTHMoKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgY3JlYXRlIGRhdGFiYXNlIHNxbC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGFiYXNlTmFtZSAtIERhdGFiYXNlIG5hbWUuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJnc10gLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtib29sZWFufSBbYXJncy5pZk5vdEV4aXN0c10gLSBXaGV0aGVyIGlmIG5vdCBleGlzdHMuXG4gICAqIEByZXR1cm5zIHtzdHJpbmdbXX0gLSBTUUwgc3RhdGVtZW50cy5cbiAgICovXG4gIGNyZWF0ZURhdGFiYXNlU3FsKGRhdGFiYXNlTmFtZSwgYXJncykge1xuICAgIGNvbnN0IGNyZWF0ZUFyZ3MgPSBPYmplY3QuYXNzaWduKHtkYXRhYmFzZU5hbWUsIGRyaXZlcjogdGhpc30sIGFyZ3MpXG4gICAgY29uc3QgY3JlYXRlRGF0YWJhc2UgPSBuZXcgQ3JlYXRlRGF0YWJhc2UoY3JlYXRlQXJncylcblxuICAgIHJldHVybiBjcmVhdGVEYXRhYmFzZS50b1NxbCgpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBkcm9wIGRhdGFiYXNlIHNxbC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGFiYXNlTmFtZSAtIERhdGFiYXNlIG5hbWUuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJnc10gLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtib29sZWFufSBbYXJncy5pZkV4aXN0c10gLSBXaGV0aGVyIGlmIGV4aXN0cy5cbiAgICogQHJldHVybnMge3N0cmluZ1tdfSAtIFNRTCBzdGF0ZW1lbnRzLlxuICAgKi9cbiAgZHJvcERhdGFiYXNlU3FsKGRhdGFiYXNlTmFtZSwgYXJncykge1xuICAgIGNvbnN0IGRyb3BBcmdzID0gT2JqZWN0LmFzc2lnbih7ZGF0YWJhc2VOYW1lLCBkcml2ZXI6IHRoaXN9LCBhcmdzKVxuICAgIGNvbnN0IGRyb3BEYXRhYmFzZSA9IG5ldyBEcm9wRGF0YWJhc2UoZHJvcEFyZ3MpXG5cbiAgICByZXR1cm4gZHJvcERhdGFiYXNlLnRvU3FsKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGNyZWF0ZSBpbmRleCBzcWxzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2Jhc2UuanNcIikuQ3JlYXRlSW5kZXhTcWxBcmdzfSBpbmRleERhdGEgLSBJbmRleCBkYXRhLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmdbXT59IC0gUmVzb2x2ZXMgd2l0aCBTUUwgc3RhdGVtZW50cy5cbiAgICovXG4gIGFzeW5jIGNyZWF0ZUluZGV4U1FMcyhpbmRleERhdGEpIHtcbiAgICBjb25zdCBjcmVhdGVBcmdzID0gT2JqZWN0LmFzc2lnbih7ZHJpdmVyOiB0aGlzfSwgaW5kZXhEYXRhKVxuICAgIGNvbnN0IGNyZWF0ZUluZGV4ID0gbmV3IENyZWF0ZUluZGV4KGNyZWF0ZUFyZ3MpXG5cbiAgICByZXR1cm4gYXdhaXQgY3JlYXRlSW5kZXgudG9TUUxzKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHJlbW92ZSBpbmRleCBzcWxzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2Jhc2UuanNcIikuUmVtb3ZlSW5kZXhTcWxBcmdzfSBpbmRleERhdGEgLSBJbmRleCBkYXRhLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmdbXT59IC0gUmVzb2x2ZXMgd2l0aCBTUUwgc3RhdGVtZW50cy5cbiAgICovXG4gIGFzeW5jIHJlbW92ZUluZGV4U1FMcyhpbmRleERhdGEpIHtcbiAgICBjb25zdCByZW1vdmVBcmdzID0gT2JqZWN0LmFzc2lnbih7ZHJpdmVyOiB0aGlzfSwgaW5kZXhEYXRhKVxuICAgIGNvbnN0IHJlbW92ZUluZGV4ID0gbmV3IFJlbW92ZUluZGV4KHJlbW92ZUFyZ3MpXG5cbiAgICByZXR1cm4gYXdhaXQgcmVtb3ZlSW5kZXgudG9TUUxzKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGNyZWF0ZSB0YWJsZSBzcWwuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vdGFibGUtZGF0YS9pbmRleC5qc1wiKS5kZWZhdWx0fSB0YWJsZURhdGEgLSBUYWJsZSBkYXRhLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmdbXT59IC0gUmVzb2x2ZXMgd2l0aCBTUUwgc3RhdGVtZW50cy5cbiAgICovXG4gIGFzeW5jIGNyZWF0ZVRhYmxlU3FsKHRhYmxlRGF0YSkge1xuICAgIGNvbnN0IGNyZWF0ZUFyZ3MgPSB7dGFibGVEYXRhLCBkcml2ZXI6IHRoaXN9XG4gICAgY29uc3QgY3JlYXRlVGFibGUgPSBuZXcgQ3JlYXRlVGFibGUoY3JlYXRlQXJncylcblxuICAgIHJldHVybiBjcmVhdGVUYWJsZS50b1NxbCgpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBjdXJyZW50IGRhdGFiYXNlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fSAtIFJlc29sdmVzIHdpdGggdGhlIGN1cnJlbnQgZGF0YWJhc2UuXG4gICAqL1xuICBhc3luYyBjdXJyZW50RGF0YWJhc2UoKSB7XG4gICAgY29uc3Qgcm93cyA9IGF3YWl0IHRoaXMucXVlcnkoXCJTRUxFQ1QgREFUQUJBU0UoKSBBUyBkYl9uYW1lXCIpXG5cbiAgICByZXR1cm4gZGlnZyhyb3dzLCAwLCBcImRiX25hbWVcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGRpc2FibGUgZm9yZWlnbiBrZXlzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgZGlzYWJsZUZvcmVpZ25LZXlzKCkge1xuICAgIGF3YWl0IHRoaXMucXVlcnkoXCJTRVQgRk9SRUlHTl9LRVlfQ0hFQ0tTID0gMFwiKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgZW5hYmxlIGZvcmVpZ24ga2V5cy5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIGVuYWJsZUZvcmVpZ25LZXlzKCkge1xuICAgIGF3YWl0IHRoaXMucXVlcnkoXCJTRVQgRk9SRUlHTl9LRVlfQ0hFQ0tTID0gMVwiKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgZHJvcCB0YWJsZSBzcWxzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGFibGUgbmFtZS5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9iYXNlLmpzXCIpLkRyb3BUYWJsZVNxbEFyZ3NUeXBlfSBbYXJnc10gLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nW10+fSAtIFJlc29sdmVzIHdpdGggU1FMIHN0YXRlbWVudHMuXG4gICAqL1xuICBhc3luYyBkcm9wVGFibGVTUUxzKHRhYmxlTmFtZSwgYXJncyA9IHt9KSB7XG4gICAgY29uc3QgZHJvcEFyZ3MgPSBPYmplY3QuYXNzaWduKHt0YWJsZU5hbWUsIGRyaXZlcjogdGhpc30sIGFyZ3MpXG4gICAgY29uc3QgZHJvcFRhYmxlID0gbmV3IERyb3BUYWJsZShkcm9wQXJncylcblxuICAgIHJldHVybiBhd2FpdCBkcm9wVGFibGUudG9TUUxzKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGdldCB0eXBlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFRoZSB0eXBlLlxuICAgKi9cbiAgZ2V0VHlwZSgpIHsgcmV0dXJuIFwibXlzcWxcIiB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcmV0cnlhYmxlIGRhdGFiYXNlIGVycm9yLlxuICAgKiBAcGFyYW0ge0Vycm9yfSBlcnJvciAtIEVycm9yIGluc3RhbmNlLlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vYmFzZS5qc1wiKS5SZXRyeWFibGVEYXRhYmFzZUVycm9yUmVzdWx0fSAtIFJldHJ5IGluZm8uXG4gICAqL1xuICByZXRyeWFibGVEYXRhYmFzZUVycm9yKGVycm9yKSB7XG4gICAgLyoqIEB0eXBlIHtFcnJvciB8IHVuZGVmaW5lZH0gKi9cbiAgICBsZXQgY3VycmVudEVycm9yID0gZXJyb3JcbiAgICBsZXQgc2hvdWxkUmVjb25uZWN0ID0gZmFsc2VcblxuICAgIHdoaWxlIChjdXJyZW50RXJyb3IpIHtcbiAgICAgIGNvbnN0IGVycm9yQ29kZSA9IFwiY29kZVwiIGluIGN1cnJlbnRFcnJvciAmJiB0eXBlb2YgY3VycmVudEVycm9yLmNvZGUgPT0gXCJzdHJpbmdcIiA/IGN1cnJlbnRFcnJvci5jb2RlIDogdW5kZWZpbmVkXG4gICAgICBjb25zdCBtZXNzYWdlID0gY3VycmVudEVycm9yLm1lc3NhZ2UgfHwgXCJcIlxuXG4gICAgICBpZiAoZXJyb3JDb2RlID09IFwiRVJfQ0hFQ0tSRUFEXCIgfHwgbWVzc2FnZS5pbmNsdWRlcyhcIlJlY29yZCBoYXMgY2hhbmdlZCBzaW5jZSBsYXN0IHJlYWRcIikpIHtcbiAgICAgICAgcmV0dXJuIHtyZXRyeTogdHJ1ZSwgcmVjb25uZWN0OiBmYWxzZSwgd2FpdE1zOiA1MH1cbiAgICAgIH1cblxuICAgICAgLy8gQSBkZWFkbG9jayBvciBsb2NrLXdhaXQtdGltZW91dCBhYm9ydHMgdGhlIHdob2xlIHRyYW5zYWN0aW9uOyBpdCBtdXN0IGJlIHJldHJpZWQgYXQgdGhlXG4gICAgICAvLyB0cmFuc2FjdGlvbiBsZXZlbCAocmUtcnVubmluZyB0aGUgY2FsbGJhY2spLCBub3QgdGhlIHF1ZXJ5IGxldmVsLCBzbyBmbGFnIGl0IGFzIHN1Y2ggYW5kXG4gICAgICAvLyBrZWVwIGByZXRyeWAgZmFsc2Ugc28gYW4gaW4tdHJhbnNhY3Rpb24gcXVlcnkgZG9lcyBub3QgcmV0cnkgYWdhaW5zdCB0aGUgZGVhZCB0cmFuc2FjdGlvbi5cbiAgICAgIGlmIChcbiAgICAgICAgZXJyb3JDb2RlID09IFwiRVJfTE9DS19ERUFETE9DS1wiIHx8XG4gICAgICAgIGVycm9yQ29kZSA9PSBcIkVSX0xPQ0tfV0FJVF9USU1FT1VUXCIgfHxcbiAgICAgICAgbWVzc2FnZS5pbmNsdWRlcyhcIkVSX0xPQ0tfREVBRExPQ0tcIikgfHxcbiAgICAgICAgbWVzc2FnZS5pbmNsdWRlcyhcIkRlYWRsb2NrIGZvdW5kXCIpIHx8XG4gICAgICAgIG1lc3NhZ2UuaW5jbHVkZXMoXCJMb2NrIHdhaXQgdGltZW91dCBleGNlZWRlZFwiKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB7cmV0cnk6IGZhbHNlLCByZWNvbm5lY3Q6IGZhbHNlLCBkZWFkbG9jazogdHJ1ZSwgd2FpdE1zOiA1MH1cbiAgICAgIH1cblxuICAgICAgc2hvdWxkUmVjb25uZWN0IHx8PSAoXG4gICAgICAgIGVycm9yQ29kZSA9PSBcIkVDT05OUkVGVVNFRFwiIHx8XG4gICAgICAgIG1lc3NhZ2UuaW5jbHVkZXMoXCJFQ09OTlJFRlVTRURcIikgfHxcbiAgICAgICAgbWVzc2FnZS5pbmNsdWRlcyhcImNvbm5lY3QgRUNPTk5SRUZVU0VEXCIpIHx8XG4gICAgICAgIG1lc3NhZ2UuaW5jbHVkZXMoXCJQUk9UT0NPTF9DT05ORUNUSU9OX0xPU1RcIikgfHxcbiAgICAgICAgbWVzc2FnZS5pbmNsdWRlcyhcIkNvbm5lY3Rpb24gbG9zdFwiKVxuICAgICAgKVxuXG4gICAgICBjdXJyZW50RXJyb3IgPSBjdXJyZW50RXJyb3IuY2F1c2UgaW5zdGFuY2VvZiBFcnJvciA/IGN1cnJlbnRFcnJvci5jYXVzZSA6IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByZXRyeTogc2hvdWxkUmVjb25uZWN0LFxuICAgICAgcmVjb25uZWN0OiBzaG91bGRSZWNvbm5lY3QsXG4gICAgICB3YWl0TXM6IDUwXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcXVlcnkgYWN0dWFsLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3FsIC0gU1FMIHN0cmluZy5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi4vYmFzZS5qc1wiKS5RdWVyeVJlc3VsdFR5cGU+fSAtIFJlc29sdmVzIHdpdGggdGhlIHF1ZXJ5IGFjdHVhbC5cbiAgICovXG4gIGFzeW5jIF9xdWVyeUFjdHVhbChzcWwpIHtcbiAgICBpZiAoIXRoaXMucG9vbCkgYXdhaXQgdGhpcy5jb25uZWN0KClcbiAgICBpZiAoIXRoaXMucG9vbCkgdGhyb3cgbmV3IEVycm9yKFwiTXlTUUwgcG9vbCBmYWlsZWQgdG8gaW5pdGlhbGl6ZVwiKVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBxdWVyeSh0aGlzLnBvb2wsIHNxbClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gUmUtdGhyb3cgdG8gdW4tY29ycnVwdCBzdGFja3RyYWNlXG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFF1ZXJ5IGZhaWxlZDogJHtlcnJvci5tZXNzYWdlfWAsIHtjYXVzZTogZXJyb3J9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBRdWVyeSBmYWlsZWQ6ICR7ZXJyb3J9YCwge2NhdXNlOiBlcnJvcn0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN0cmVhbXMgdGhlIHJvd3Mgb2YgYHNxbGAgZnJvbSBhIGRlZGljYXRlZCBwb29sZWQgY29ubmVjdGlvbiB1c2luZyB0aGUgTXlTUUwgY3Vyc29yLCBzbyBhXG4gICAqIGxhcmdlIHJlc3VsdCBzZXQgaXMgcmVhZCBpbmNyZW1lbnRhbGx5IGluc3RlYWQgb2YgYmVpbmcgYnVmZmVyZWQuIE92ZXJyaWRlcyB0aGUgYmFzZVxuICAgKiBidWZmZXJlZCBmYWxsYmFjayB3aXRoIHRydWUgc2VydmVyLXNpZGUgc3RyZWFtaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3FsIC0gU1FMIHN0cmluZyB0byBzdHJlYW0uXG4gICAqIEB5aWVsZHMge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSAtIFRoZSByZXN1bHQgcm93cywgb25lIGF0IGEgdGltZS5cbiAgICovXG4gIGFzeW5jICpxdWVyeVN0cmVhbShzcWwpIHtcbiAgICBpZiAoIXRoaXMucG9vbCkgYXdhaXQgdGhpcy5jb25uZWN0KClcbiAgICBpZiAoIXRoaXMucG9vbCkgdGhyb3cgbmV3IEVycm9yKFwiTXlTUUwgcG9vbCBmYWlsZWQgdG8gaW5pdGlhbGl6ZVwiKVxuXG4gICAgeWllbGQqIHN0cmVhbVF1ZXJ5KHRoaXMucG9vbCwgc3FsKVxuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIGEgbXV0YXRpb24gd2l0aCBhZmZlY3RlZC1yb3cgbWV0YWRhdGEuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzcWwgLSBNdXRhdGlvbiBTUUwuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPG51bWJlcj59IC0gQWZmZWN0ZWQgcm93IGNvdW50LlxuICAgKi9cbiAgYXN5bmMgX2FmZmVjdGVkUm93c0FjdHVhbChzcWwpIHtcbiAgICBpZiAoIXRoaXMucG9vbCkgYXdhaXQgdGhpcy5jb25uZWN0KClcbiAgICBpZiAoIXRoaXMucG9vbCkgdGhyb3cgbmV3IEVycm9yKFwiTXlTUUwgcG9vbCBmYWlsZWQgdG8gaW5pdGlhbGl6ZVwiKVxuICAgIGNvbnN0IHBvb2wgPSB0aGlzLnBvb2xcblxuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBwb29sLnF1ZXJ5KHNxbCwgKGVycm9yLCByZXN1bHQpID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSByZWplY3QoZXJyb3IpXG4gICAgICAgIGVsc2UgcmVzb2x2ZShcImFmZmVjdGVkUm93c1wiIGluIHJlc3VsdCA/IHJlc3VsdC5hZmZlY3RlZFJvd3MgOiAwKVxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcXVlcnkgdG8gc3FsLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL3F1ZXJ5L2luZGV4LmpzXCIpLmRlZmF1bHR9IHF1ZXJ5IC0gUXVlcnkgaW5zdGFuY2UuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gU1FMIHN0cmluZy5cbiAgICovXG4gIHF1ZXJ5VG9TcWwocXVlcnkpIHsgcmV0dXJuIG5ldyBRdWVyeVBhcnNlcih7cXVlcnl9KS50b1NxbCgpIH1cblxuICAvKipcbiAgICogUnVucyBzaG91bGQgc2V0IGF1dG8gaW5jcmVtZW50IHdoZW4gcHJpbWFyeSBrZXkuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFdoZXRoZXIgc2V0IGF1dG8gaW5jcmVtZW50IHdoZW4gcHJpbWFyeSBrZXkuXG4gICAqL1xuICBzaG91bGRTZXRBdXRvSW5jcmVtZW50V2hlblByaW1hcnlLZXkoKSB7IHJldHVybiB0cnVlIH1cbiAgc3VwcG9ydHNEZWZhdWx0UHJpbWFyeUtleVVVSUQoKSB7IHJldHVybiBmYWxzZSB9XG4gIHN1cHBvcnRzQ3Jvc3NEYXRhYmFzZVJlZmVyZW5jZXMoKSB7IHJldHVybiB0cnVlIH1cblxuICAvKipcbiAgICogUnVucyBlc2NhcGUuXG4gICAqIEBwYXJhbSB7P30gdmFsdWUgLSBWYWx1ZSB0byB1c2UuXG4gICAqIEByZXR1cm5zIHs/fSAtIFRoZSBlc2NhcGUuXG4gICAqL1xuICBlc2NhcGUodmFsdWUpIHtcbiAgICBjb25zdCBlc2NhcGVkVmFsdWVXaXRoUXVvdGVzID0gdGhpcy5wb29sXG4gICAgICA/IHRoaXMucG9vbC5lc2NhcGUodGhpcy5fY29udmVydFZhbHVlKHZhbHVlKSlcbiAgICAgIDogbXlzcWwuZXNjYXBlKHRoaXMuX2NvbnZlcnRWYWx1ZSh2YWx1ZSkpXG5cbiAgICByZXR1cm4gZXNjYXBlZFZhbHVlV2l0aFF1b3Rlcy5zbGljZSgxLCBlc2NhcGVkVmFsdWVXaXRoUXVvdGVzLmxlbmd0aCAtIDEpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBxdW90ZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gVmFsdWUgdG8gdXNlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFRoZSBxdW90ZS5cbiAgICovXG4gIHF1b3RlKHZhbHVlKSB7XG4gICAgaWYgKHRoaXMucG9vbCkge1xuICAgICAgcmV0dXJuIHRoaXMucG9vbC5lc2NhcGUodGhpcy5fY29udmVydFZhbHVlKHZhbHVlKSlcbiAgICB9XG5cbiAgICByZXR1cm4gbXlzcWwuZXNjYXBlKHRoaXMuX2NvbnZlcnRWYWx1ZSh2YWx1ZSkpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBkZWxldGUgc3FsLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2Jhc2UuanNcIikuRGVsZXRlU3FsQXJnc1R5cGV9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBTUUwgc3RyaW5nLlxuICAgKi9cbiAgZGVsZXRlU3FsKHt0YWJsZU5hbWUsIGNvbmRpdGlvbnN9KSB7XG4gICAgY29uc3QgZGVsZXRlSW5zdHJ1Y3Rpb24gPSBuZXcgRGVsZXRlKHtjb25kaXRpb25zLCBkcml2ZXI6IHRoaXMsIHRhYmxlTmFtZX0pXG5cbiAgICByZXR1cm4gZGVsZXRlSW5zdHJ1Y3Rpb24udG9TcWwoKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgaW5zZXJ0IHNxbC5cbiAgICogQGFic3RyYWN0XG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vYmFzZS5qc1wiKS5JbnNlcnRTcWxBcmdzVHlwZX0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFNRTCBzdHJpbmcuXG4gICAqL1xuICBpbnNlcnRTcWwoYXJncykge1xuICAgIGNvbnN0IGluc2VydEFyZ3MgPSBPYmplY3QuYXNzaWduKHtkcml2ZXI6IHRoaXN9LCBhcmdzKVxuICAgIGNvbnN0IGluc2VydCA9IG5ldyBJbnNlcnQoaW5zZXJ0QXJncylcblxuICAgIHJldHVybiBpbnNlcnQudG9TcWwoKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgZ2V0IHRhYmxlcy5cbiAgICogQHJldHVybnMge1Byb21pc2U8QXJyYXk8aW1wb3J0KFwiLi4vYmFzZS10YWJsZS5qc1wiKS5kZWZhdWx0Pj59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgdGFibGVzLlxuICAgKi9cbiAgYXN5bmMgZ2V0VGFibGVzKCkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9jYWNoZWRTY2hlbWFNZXRhZGF0YShcInRhYmxlc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnF1ZXJ5KFwiU0hPVyBGVUxMIFRBQkxFU1wiKVxuICAgICAgY29uc3QgdGFibGVzID0gW11cblxuICAgICAgZm9yIChjb25zdCByb3cgb2YgcmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IHRhYmxlID0gbmV3IFRhYmxlKHRoaXMsIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgc3RyaW5nPn0gKi8gKHJvdykpXG5cbiAgICAgICAgdGFibGVzLnB1c2godGFibGUpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0YWJsZXNcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgc3RydWN0dXJlIHNxbC5cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nIHwgbnVsbD59IC0gUmVzb2x2ZXMgd2l0aCBTUUwgc3RyaW5nLlxuICAgKi9cbiAgYXN5bmMgc3RydWN0dXJlU3FsKCkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9jYWNoZWRTY2hlbWFNZXRhZGF0YShcInN0cnVjdHVyZVNxbFwiLCBhc3luYyAoKSA9PiBhd2FpdCBuZXcgU3RydWN0dXJlU3FsKHtkcml2ZXI6IHRoaXN9KS50b1NxbCgpKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgbGFzdCBpbnNlcnQgaWQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPG51bWJlcj59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgbGFzdCBpbnNlcnQgaWQuXG4gICAqL1xuICBhc3luYyBsYXN0SW5zZXJ0SUQoKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5xdWVyeShcIlNFTEVDVCBMQVNUX0lOU0VSVF9JRCgpIEFTIGxhc3RfaW5zZXJ0X2lkXCIpXG5cbiAgICByZXR1cm4gZGlnZyhyZXN1bHQsIDAsIFwibGFzdF9pbnNlcnRfaWRcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIG9wdGlvbnMuXG4gICAqIEByZXR1cm5zIHtPcHRpb25zfSAtIFRoZSBvcHRpb25zIG9wdGlvbnMuXG4gICAqL1xuICBvcHRpb25zKCkge1xuICAgIGlmICghdGhpcy5fb3B0aW9ucykgdGhpcy5fb3B0aW9ucyA9IG5ldyBPcHRpb25zKHtkcml2ZXI6IHRoaXN9KVxuXG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnNcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHN0YXJ0IHRyYW5zYWN0aW9uIGFjdGlvbi5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIF9zdGFydFRyYW5zYWN0aW9uQWN0aW9uKCkge1xuICAgIGF3YWl0IHRoaXMucXVlcnkoXCJTVEFSVCBUUkFOU0FDVElPTlwiKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgdXBkYXRlIHNxbC5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9iYXNlLmpzXCIpLlVwZGF0ZVNxbEFyZ3NUeXBlfSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gU1FMIHN0cmluZy5cbiAgICovXG4gIHVwZGF0ZVNxbCh7Y29uZGl0aW9ucywgZGF0YSwgdGFibGVOYW1lfSkge1xuICAgIGNvbnN0IHVwZGF0ZSA9IG5ldyBVcGRhdGUoe2NvbmRpdGlvbnMsIGRhdGEsIGRyaXZlcjogdGhpcywgdGFibGVOYW1lfSlcblxuICAgIHJldHVybiB1cGRhdGUudG9TcWwoKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgdXBzZXJ0IHNxbC5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9iYXNlLmpzXCIpLlVwc2VydFNxbEFyZ3NUeXBlfSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gU1FMIHN0cmluZy5cbiAgICovXG4gIHVwc2VydFNxbChhcmdzKSB7XG4gICAgY29uc3QgdXBzZXJ0ID0gbmV3IFVwc2VydCh7Li4uYXJncywgZHJpdmVyOiB0aGlzfSlcblxuICAgIHJldHVybiB1cHNlcnQudG9TcWwoKVxuICB9XG5cbiAgLyoqXG4gICAqIEJsb2NrcyB1bnRpbCBhIE15U1FML01hcmlhREIgdXNlci1sZXZlbCBsb2NrIGlzIGFjcXVpcmVkIG9uIHRoaXNcbiAgICogY29ubmVjdGlvbi4gSW1wbGVtZW50ZWQgdmlhIGBHRVRfTE9DSyhuYW1lLCB0aW1lb3V0KWAsIHdoZXJlIHRoZVxuICAgKiB0aW1lb3V0IGlzIGluIHNlY29uZHMuXG4gICAqXG4gICAqIE15U1FMIGhpc3RvcmljYWxseSBkb2N1bWVudGVkIGEgbmVnYXRpdmUgdGltZW91dCBhcyBcImluZmluaXRlXCIsXG4gICAqIGJ1dCBNYXJpYURCIDEwKyBzaWxlbnRseSByZWplY3RzIG5lZ2F0aXZlIHRpbWVvdXRzIGFuZCByZXR1cm5zXG4gICAqIGBOVUxMYCBmcm9tIGBHRVRfTE9DS2AuIFRvIG1ha2UgdGhlIGhlbHBlciBwb3J0YWJsZSBhY3Jvc3MgTXlTUUxcbiAgICogYW5kIE1hcmlhREIgdGhlIFwiaW5kZWZpbml0ZVwiIGNhc2UgaXMgZW5jb2RlZCBhcyBhIGxhcmdlIHBvc2l0aXZlXG4gICAqIHRpbWVvdXQgKG9uZSB5ZWFyKSwgd2hpY2ggaXMgY29tZm9ydGFibHkgbG9uZ2VyIHRoYW4gYW55XG4gICAqIHJlYWxpc3RpYyBjcml0aWNhbCBzZWN0aW9uIGFuZCB3b3JrcyBvbiBldmVyeSBzdXBwb3J0ZWQgdmVyc2lvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBMb2NrIG5hbWUuXG4gICAqIEBwYXJhbSB7e3RpbWVvdXRNcz86IG51bWJlciB8IG51bGx9fSBbYXJnc10gLSBPcHRpb25hbCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kczsgYG51bGxgLCBgdW5kZWZpbmVkYCwgb3IgbmVnYXRpdmUgYmxvY2tzIGZvciBgTVlTUUxfSU5ERUZJTklURV9MT0NLX1RJTUVPVVRfU0VDT05EU2AuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSAtIFRydWUgaWYgYWNxdWlyZWQsIGZhbHNlIGlmIHRoZSB0aW1lb3V0IGVsYXBzZWQuXG4gICAqL1xuICBhc3luYyBhY3F1aXJlQWR2aXNvcnlMb2NrKG5hbWUsIHt0aW1lb3V0TXN9ID0ge30pIHtcbiAgICBjb25zdCB0aW1lb3V0U2Vjb25kcyA9IHR5cGVvZiB0aW1lb3V0TXMgPT09IFwibnVtYmVyXCIgJiYgdGltZW91dE1zID49IDBcbiAgICAgID8gTWF0aC5jZWlsKHRpbWVvdXRNcyAvIDEwMDApXG4gICAgICA6IE1ZU1FMX0lOREVGSU5JVEVfTE9DS19USU1FT1VUX1NFQ09ORFNcbiAgICBjb25zdCByb3dzID0gYXdhaXQgdGhpcy5xdWVyeShgU0VMRUNUIEdFVF9MT0NLKCR7dGhpcy5xdW90ZShuYW1lKX0sICR7dGltZW91dFNlY29uZHN9KSBBUyB2ZWxvY2lvdXNfYWR2aXNvcnlfbG9ja19yZXN1bHRgKVxuICAgIGNvbnN0IHJlc3VsdCA9IHJvd3M/LlswXT8udmVsb2Npb3VzX2Fkdmlzb3J5X2xvY2tfcmVzdWx0XG5cbiAgICBpZiAocmVzdWx0ID09PSBudWxsIHx8IHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEdFVF9MT0NLIHJldHVybmVkIE5VTEwgZm9yIGFkdmlzb3J5IGxvY2sgJHtKU09OLnN0cmluZ2lmeShuYW1lKX0gKHR5cGljYWxseSBhbiBvdXQtb2YtbWVtb3J5IG9yIHRocmVhZC1raWxsZWQgY29uZGl0aW9uKWApXG4gICAgfVxuXG4gICAgcmV0dXJuIE51bWJlcihyZXN1bHQpID09PSAxXG4gIH1cblxuICAvKipcbiAgICogUnVucyB0cnkgYWNxdWlyZSBhZHZpc29yeSBsb2NrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIExvY2sgbmFtZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IC0gVHJ1ZSBpZiB0aGUgbG9jayB3YXMgYWNxdWlyZWQsIGZhbHNlIGlmIGl0IHdhcyBhbHJlYWR5IGhlbGQuXG4gICAqL1xuICBhc3luYyB0cnlBY3F1aXJlQWR2aXNvcnlMb2NrKG5hbWUpIHtcbiAgICBjb25zdCByb3dzID0gYXdhaXQgdGhpcy5xdWVyeShgU0VMRUNUIEdFVF9MT0NLKCR7dGhpcy5xdW90ZShuYW1lKX0sIDApIEFTIHZlbG9jaW91c19hZHZpc29yeV9sb2NrX3Jlc3VsdGApXG4gICAgY29uc3QgcmVzdWx0ID0gcm93cz8uWzBdPy52ZWxvY2lvdXNfYWR2aXNvcnlfbG9ja19yZXN1bHRcblxuICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgcmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgR0VUX0xPQ0sgcmV0dXJuZWQgTlVMTCBmb3IgYWR2aXNvcnkgbG9jayAke0pTT04uc3RyaW5naWZ5KG5hbWUpfSAodHlwaWNhbGx5IGFuIG91dC1vZi1tZW1vcnkgb3IgdGhyZWFkLWtpbGxlZCBjb25kaXRpb24pYClcbiAgICB9XG5cbiAgICByZXR1cm4gTnVtYmVyKHJlc3VsdCkgPT09IDFcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHJlbGVhc2UgYWR2aXNvcnkgbG9jay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBMb2NrIG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSAtIFRydWUgaWYgdGhlIGxvY2sgd2FzIGhlbGQgYnkgdGhpcyBzZXNzaW9uIGFuZCBoYXMgbm93IGJlZW4gcmVsZWFzZWQuXG4gICAqL1xuICBhc3luYyByZWxlYXNlQWR2aXNvcnlMb2NrKG5hbWUpIHtcbiAgICBjb25zdCByb3dzID0gYXdhaXQgdGhpcy5xdWVyeShgU0VMRUNUIFJFTEVBU0VfTE9DSygke3RoaXMucXVvdGUobmFtZSl9KSBBUyB2ZWxvY2lvdXNfYWR2aXNvcnlfbG9ja19yZXN1bHRgKVxuICAgIGNvbnN0IHJlc3VsdCA9IHJvd3M/LlswXT8udmVsb2Npb3VzX2Fkdmlzb3J5X2xvY2tfcmVzdWx0XG5cbiAgICByZXR1cm4gTnVtYmVyKHJlc3VsdCkgPT09IDFcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGlzIGFkdmlzb3J5IGxvY2sgaGVsZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBMb2NrIG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSAtIFRydWUgaWYgYW55IHNlc3Npb24gY3VycmVudGx5IGhvbGRzIHRoZSBsb2NrLlxuICAgKi9cbiAgYXN5bmMgaXNBZHZpc29yeUxvY2tIZWxkKG5hbWUpIHtcbiAgICBjb25zdCByb3dzID0gYXdhaXQgdGhpcy5xdWVyeShgU0VMRUNUIElTX1VTRURfTE9DSygke3RoaXMucXVvdGUobmFtZSl9KSBBUyB2ZWxvY2lvdXNfYWR2aXNvcnlfbG9ja19ob2xkZXJgKVxuICAgIGNvbnN0IGhvbGRlciA9IHJvd3M/LlswXT8udmVsb2Npb3VzX2Fkdmlzb3J5X2xvY2tfaG9sZGVyXG5cbiAgICByZXR1cm4gaG9sZGVyICE9PSBudWxsICYmIGhvbGRlciAhPT0gdW5kZWZpbmVkXG4gIH1cbn1cbiJdfQ==
@@ -274,6 +274,22 @@ declare class VelociousDatabaseRecord<WriteAttributes extends Record<string, unk
274
274
  * @returns {void}
275
275
  */
276
276
  static stateMachine(definition: import("./state-machine.js").StateMachineDefinition): void;
277
+ /**
278
+ * Returns this model's state machine definition, or null when it declares none.
279
+ * `Model.stateMachine(...)` overrides this on classes that declare a machine.
280
+ * @returns {import("./state-machine.js").StateMachineDefinition | null} - The state machine definition, or null when none is declared.
281
+ */
282
+ static getStateMachineDefinition(): import("./state-machine.js").StateMachineDefinition | null;
283
+ /**
284
+ * Returns this model's state column, or null when it declares no state machine.
285
+ * @returns {string | null} - The state column name, or null when no state machine is declared.
286
+ */
287
+ static getStateMachineColumn(): string | null;
288
+ /**
289
+ * Returns this model's declared state names (empty when it has no state machine).
290
+ * @returns {string[]} - The declared state names, or an empty array when no state machine is declared.
291
+ */
292
+ static getStateMachineStateNames(): string[];
277
293
  /**
278
294
  * Maintains a counter column on a `belongsTo` parent as the sum of a per-record
279
295
  * magnitude, kept current by atomic increments diffed on every create/update/
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/database/record/index.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/database/record/index.js"],"names":[],"mappings":"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"}