@data-client/endpoint
Advanced tools
Comparing version 0.11.4 to 0.12.3
@@ -232,3 +232,2 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose"; | ||
pk, | ||
schema, | ||
key | ||
@@ -330,2 +329,2 @@ } = options, | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDUkVBVEUiLCJFbnRpdHlTY2hlbWEiLCJCYXNlIiwib3B0aW9ucyIsIkVudGl0eU1peGluIiwidG9TdHJpbmciLCJrZXkiLCJ0b0pTT04iLCJuYW1lIiwic2NoZW1hIiwicGsiLCJ2YWx1ZSIsInBhcmVudCIsImFyZ3MiLCJwcm90b3R5cGUiLCJjYWxsIiwic2hvdWxkVXBkYXRlIiwiZXhpc3RpbmdNZXRhIiwiaW5jb21pbmdNZXRhIiwiZXhpc3RpbmciLCJpbmNvbWluZyIsInNob3VsZFJlb3JkZXIiLCJmZXRjaGVkQXQiLCJtZXJnZSIsIk9iamVjdCIsImFzc2lnbiIsIm1lcmdlV2l0aFN0b3JlIiwibWVyZ2VNZXRhV2l0aFN0b3JlIiwiZnJvbUpTIiwicHJvcHMiLCJpbnN0YW5jZSIsImNyZWF0ZUlmVmFsaWQiLCJ2YWxpZGF0ZSIsInVuZGVmaW5lZCIsInByb2Nlc3MiLCJpbnB1dCIsIm5vcm1hbGl6ZSIsInZpc2l0IiwiYWRkRW50aXR5IiwidmlzaXRlZEVudGl0aWVzIiwic3RvcmVFbnRpdGllcyIsInByb2Nlc3NlZEVudGl0eSIsImlkIiwiTWF0aCIsInJhbmRvbSIsImVudiIsIk5PREVfRU5WIiwiZXJyb3IiLCJFcnJvciIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGF0dXMiLCJlbnRpdHlUeXBlIiwic29tZSIsImVudGl0eSIsImVycm9yTWVzc2FnZSIsInRocm93VmFsaWRhdGlvbkVycm9yIiwicHVzaCIsImtleXMiLCJmb3JFYWNoIiwiaGFzT3duIiwicXVlcnlLZXkiLCJnZXRFbnRpdHkiLCJnZXRJbmRleCIsInF1ZXJ5S2V5Q2FuZGlkYXRlIiwiZGVub3JtYWxpemUiLCJ1bnZpc2l0IiwiZGVmYXVsdHMiLCJkZWZpbmVQcm9wZXJ0eSIsIndyaXRhYmxlIiwiY29uZmlndXJhYmxlIiwiX19kZWZhdWx0cyIsInN0YXRpY1Byb3BzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJfZXhjbHVkZWQiLCJlbnVtZXJhYmxlIiwic2V0IiwiYmFzZUdldCIsImdldCIsImRvY3VtZW50IiwiQ0xTX01BTkdMRSIsImluZGV4RnJvbVBhcmFtcyIsInBhcmFtcyIsImluZGV4ZXMiLCJmaW5kIiwiaW5kZXgiLCJpbmNsdWRlcyIsImluZGV4TmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWFzL0VudGl0eVNjaGVtYS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbW9kdWxlLWJvdW5kYXJ5LXR5cGVzICovXG5pbXBvcnQgeyBDUkVBVEUgfSBmcm9tICcuL3NwZWNpYWwuanMnO1xuaW1wb3J0IHR5cGUgeyBTY2hlbWEsIEdldEluZGV4LCBHZXRFbnRpdHkgfSBmcm9tICcuLi9pbnRlcmZhY2UuanMnO1xuaW1wb3J0IHsgQWJzdHJhY3RJbnN0YW5jZVR5cGUgfSBmcm9tICcuLi9ub3JtYWwuanMnO1xuXG5leHBvcnQgdHlwZSBDb25zdHJ1Y3RvciA9IGFic3RyYWN0IG5ldyAoLi4uYXJnczogYW55W10pID0+IHt9O1xuZXhwb3J0IHR5cGUgSURDbGFzcyA9IGFic3RyYWN0IG5ldyAoLi4uYXJnczogYW55W10pID0+IHtcbiAgaWQ6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZDtcbn07XG5leHBvcnQgdHlwZSBQS0NsYXNzID0gYWJzdHJhY3QgbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4ge1xuICBwayhcbiAgICBwYXJlbnQ/OiBhbnksXG4gICAga2V5Pzogc3RyaW5nLFxuICAgIGFyZ3M/OiByZWFkb25seSBhbnlbXSxcbiAgKTogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkO1xufTtcblxuLy8gVE9ETzogRmlndXJlIG91dCB3aGF0IFNjaGVtYSBtdXN0IGJlIGZvciBlYWNoIGtleVxudHlwZSBWYWxpZFNjaGVtYXM8VEluc3RhbmNlPiA9IHsgW2sgaW4ga2V5b2YgVEluc3RhbmNlXT86IFNjaGVtYSB9O1xuXG5leHBvcnQgdHlwZSBFbnRpdHlPcHRpb25zPFRJbnN0YW5jZSBleHRlbmRzIHt9PiA9IHtcbiAgcmVhZG9ubHkgc2NoZW1hPzogVmFsaWRTY2hlbWFzPFRJbnN0YW5jZT47XG4gIHJlYWRvbmx5IHBrPzpcbiAgICB8ICgoXG4gICAgICAgIHZhbHVlOiBUSW5zdGFuY2UsXG4gICAgICAgIHBhcmVudD86IGFueSxcbiAgICAgICAga2V5Pzogc3RyaW5nLFxuICAgICAgKSA9PiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQpXG4gICAgfCBrZXlvZiBUSW5zdGFuY2U7XG4gIHJlYWRvbmx5IGtleT86IHN0cmluZztcbn0gJiB7XG4gIHJlYWRvbmx5IFtLIGluIEV4dHJhY3Q8XG4gICAga2V5b2YgSUVudGl0eUNsYXNzLFxuICAgIHwgJ3Byb2Nlc3MnXG4gICAgfCAnbWVyZ2UnXG4gICAgfCAnZXhwaXJlc0F0J1xuICAgIHwgJ2NyZWF0ZUlmVmFsaWQnXG4gICAgfCAnbWVyZ2VXaXRoU3RvcmUnXG4gICAgfCAndmFsaWRhdGUnXG4gICAgfCAnc2hvdWxkUmVvcmRlcidcbiAgICB8ICdzaG91bGRVcGRhdGUnXG4gID5dPzogSUVudGl0eUNsYXNzPGFic3RyYWN0IG5ldyAoLi4uYXJnczogYW55W10pID0+IFRJbnN0YW5jZT5bS107XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVpcmVkUEtPcHRpb25zPFRJbnN0YW5jZSBleHRlbmRzIHt9PlxuICBleHRlbmRzIEVudGl0eU9wdGlvbnM8VEluc3RhbmNlPiB7XG4gIHJlYWRvbmx5IHBrOlxuICAgIHwgKChcbiAgICAgICAgdmFsdWU6IFRJbnN0YW5jZSxcbiAgICAgICAgcGFyZW50PzogYW55LFxuICAgICAgICBrZXk/OiBzdHJpbmcsXG4gICAgICApID0+IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZClcbiAgICB8IGtleW9mIFRJbnN0YW5jZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRW50aXR5U2NoZW1hPFRCYXNlIGV4dGVuZHMgQ29uc3RydWN0b3I+KFxuICBCYXNlOiBUQmFzZSxcbiAgb3B0aW9uczogRW50aXR5T3B0aW9uczxJbnN0YW5jZVR5cGU8VEJhc2U+PiA9IHt9LFxuKSB7XG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIGRhdGEgdGhhdCBzaG91bGQgYmUgZGVkdXBlZCBieSBzcGVjaWZ5aW5nIGEgcHJpbWFyeSBrZXkuXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL3Jlc3QvYXBpL0VudGl0eVxuICAgKi9cbiAgYWJzdHJhY3QgY2xhc3MgRW50aXR5TWl4aW4gZXh0ZW5kcyBCYXNlIHtcbiAgICBzdGF0aWMgdG9TdHJpbmcoKSB7XG4gICAgICByZXR1cm4gdGhpcy5rZXk7XG4gICAgfVxuXG4gICAgc3RhdGljIHRvSlNPTigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgc2NoZW1hOiB0aGlzLnNjaGVtYSxcbiAgICAgICAga2V5OiB0aGlzLmtleSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqIERlZmluZXMgbmVzdGVkIGVudGl0aWVzICovXG4gICAgZGVjbGFyZSBzdGF0aWMgc2NoZW1hOiB7IFtrOiBzdHJpbmddOiBTY2hlbWEgfTtcblxuICAgIC8qKlxuICAgICAqIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGVhY2ggRW50aXR5XG4gICAgICpcbiAgICAgKiBAcGFyYW0gW3BhcmVudF0gV2hlbiBub3JtYWxpemluZywgdGhlIG9iamVjdCB3aGljaCBpbmNsdWRlZCB0aGUgZW50aXR5XG4gICAgICogQHBhcmFtIFtrZXldIFdoZW4gbm9ybWFsaXppbmcsIHRoZSBrZXkgd2hlcmUgdGhpcyBlbnRpdHkgd2FzIGZvdW5kXG4gICAgICogQHBhcmFtIFthcmdzXSAuLi5hcmdzIHNlbnQgdG8gRW5kcG9pbnRcbiAgICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9zY2hlbWEuRW50aXR5I3BrXG4gICAgICovXG4gICAgYWJzdHJhY3QgcGsoXG4gICAgICBwYXJlbnQ/OiBhbnksXG4gICAgICBrZXk/OiBzdHJpbmcsXG4gICAgICBhcmdzPzogcmVhZG9ubHkgYW55W10sXG4gICAgKTogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIFJldHVybnMgdGhlIGdsb2JhbGx5IHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgc3RhdGljIEVudGl0eSAqL1xuICAgIGRlY2xhcmUgc3RhdGljIGtleTogc3RyaW5nO1xuICAgIC8vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaW4gY2xhc3Mgc3RhdGljIGJsb2NrIGF0IGJvdHRvbSBvZiBkZWZpbml0aW9uXG5cbiAgICAvKiogRGVmaW5lcyBpbmRleGVzIHRvIGVuYWJsZSBsb29rdXAgYnkgKi9cbiAgICBkZWNsYXJlIHN0YXRpYyBpbmRleGVzPzogcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciBlYWNoIEVudGl0eVxuICAgICAqXG4gICAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvc2NoZW1hLkVudGl0eSNwa1xuICAgICAqIEBwYXJhbSBbdmFsdWVdIFBPSk8gb2YgdGhlIGVudGl0eSBvciBzdWJzZXQgdXNlZFxuICAgICAqIEBwYXJhbSBbcGFyZW50XSBXaGVuIG5vcm1hbGl6aW5nLCB0aGUgb2JqZWN0IHdoaWNoIGluY2x1ZGVkIHRoZSBlbnRpdHlcbiAgICAgKiBAcGFyYW0gW2tleV0gV2hlbiBub3JtYWxpemluZywgdGhlIGtleSB3aGVyZSB0aGlzIGVudGl0eSB3YXMgZm91bmRcbiAgICAgKiBAcGFyYW0gW2FyZ3NdIC4uLmFyZ3Mgc2VudCB0byBFbmRwb2ludFxuICAgICAqL1xuICAgIHN0YXRpYyBwazxUIGV4dGVuZHMgdHlwZW9mIEVudGl0eU1peGluPihcbiAgICAgIHRoaXM6IFQsXG4gICAgICB2YWx1ZTogUGFydGlhbDxBYnN0cmFjdEluc3RhbmNlVHlwZTxUPj4sXG4gICAgICBwYXJlbnQ/OiBhbnksXG4gICAgICBrZXk/OiBzdHJpbmcsXG4gICAgICBhcmdzPzogcmVhZG9ubHkgYW55W10sXG4gICAgKTogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3RvdHlwZS5way5jYWxsKHZhbHVlLCBwYXJlbnQsIGtleSwgYXJncyk7XG4gICAgfVxuXG4gICAgLyoqIFJldHVybiB0cnVlIHRvIG1lcmdlIGluY29taW5nIGRhdGE7IGZhbHNlIGtlZXBzIGV4aXN0aW5nIGVudGl0eVxuICAgICAqXG4gICAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvc2NoZW1hLkVudGl0eSNzaG91bGRVcGRhdGVcbiAgICAgKi9cbiAgICBzdGF0aWMgc2hvdWxkVXBkYXRlKFxuICAgICAgZXhpc3RpbmdNZXRhOiB7IGRhdGU6IG51bWJlcjsgZmV0Y2hlZEF0OiBudW1iZXIgfSxcbiAgICAgIGluY29taW5nTWV0YTogeyBkYXRlOiBudW1iZXI7IGZldGNoZWRBdDogbnVtYmVyIH0sXG4gICAgICBleGlzdGluZzogYW55LFxuICAgICAgaW5jb21pbmc6IGFueSxcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBEZXRlcm1pbmVzIHRoZSBvcmRlciBvZiBpbmNvbWluZyBlbnRpdHkgdnMgZW50aXR5IGFscmVhZHkgaW4gc3RvcmVcXFxuICAgICAqXG4gICAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvc2NoZW1hLkVudGl0eSNzaG91bGRSZW9yZGVyXG4gICAgICogQHJldHVybnMgdHJ1ZSBpZiBpbmNvbWluZyBlbnRpdHkgc2hvdWxkIGJlIGZpcnN0IGFyZ3VtZW50IG9mIG1lcmdlKClcbiAgICAgKi9cbiAgICBzdGF0aWMgc2hvdWxkUmVvcmRlcihcbiAgICAgIGV4aXN0aW5nTWV0YTogeyBkYXRlOiBudW1iZXI7IGZldGNoZWRBdDogbnVtYmVyIH0sXG4gICAgICBpbmNvbWluZ01ldGE6IHsgZGF0ZTogbnVtYmVyOyBmZXRjaGVkQXQ6IG51bWJlciB9LFxuICAgICAgZXhpc3Rpbmc6IGFueSxcbiAgICAgIGluY29taW5nOiBhbnksXG4gICAgKSB7XG4gICAgICByZXR1cm4gaW5jb21pbmdNZXRhLmZldGNoZWRBdCA8IGV4aXN0aW5nTWV0YS5mZXRjaGVkQXQ7XG4gICAgfVxuXG4gICAgLyoqIENyZWF0ZXMgbmV3IGluc3RhbmNlIGNvcHlpbmcgb3ZlciBkZWZpbmVkIHZhbHVlcyBvZiBhcmd1bWVudHNcbiAgICAgKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL3NjaGVtYS5FbnRpdHkjbWVyZ2VcbiAgICAgKi9cbiAgICBzdGF0aWMgbWVyZ2UoZXhpc3Rpbmc6IGFueSwgaW5jb21pbmc6IGFueSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZXhpc3RpbmcsXG4gICAgICAgIC4uLmluY29taW5nLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogUnVuIHdoZW4gYW4gZXhpc3RpbmcgZW50aXR5IGlzIGZvdW5kIGluIHRoZSBzdG9yZVxuICAgICAqXG4gICAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvc2NoZW1hLkVudGl0eSNtZXJnZVdpdGhTdG9yZVxuICAgICAqL1xuICAgIHN0YXRpYyBtZXJnZVdpdGhTdG9yZShcbiAgICAgIGV4aXN0aW5nTWV0YToge1xuICAgICAgICBkYXRlOiBudW1iZXI7XG4gICAgICAgIGZldGNoZWRBdDogbnVtYmVyO1xuICAgICAgfSxcbiAgICAgIGluY29taW5nTWV0YTogeyBkYXRlOiBudW1iZXI7IGZldGNoZWRBdDogbnVtYmVyIH0sXG4gICAgICBleGlzdGluZzogYW55LFxuICAgICAgaW5jb21pbmc6IGFueSxcbiAgICApIHtcbiAgICAgIGNvbnN0IHNob3VsZFVwZGF0ZSA9IHRoaXMuc2hvdWxkVXBkYXRlKFxuICAgICAgICBleGlzdGluZ01ldGEsXG4gICAgICAgIGluY29taW5nTWV0YSxcbiAgICAgICAgZXhpc3RpbmcsXG4gICAgICAgIGluY29taW5nLFxuICAgICAgKTtcblxuICAgICAgaWYgKHNob3VsZFVwZGF0ZSkge1xuICAgICAgICAvLyBkaXN0aW5jdCB0eXBlcyBhcmUgbm90IG1lcmdlYWJsZSAobGlrZSBkZWxldGUgc3ltYm9sKSwgc28ganVzdCByZXBsYWNlXG4gICAgICAgIGlmICh0eXBlb2YgaW5jb21pbmcgIT09IHR5cGVvZiBleGlzdGluZykge1xuICAgICAgICAgIHJldHVybiBpbmNvbWluZztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICB0aGlzLnNob3VsZFJlb3JkZXIoZXhpc3RpbmdNZXRhLCBpbmNvbWluZ01ldGEsIGV4aXN0aW5nLCBpbmNvbWluZylcbiAgICAgICAgICAgICkgP1xuICAgICAgICAgICAgICB0aGlzLm1lcmdlKGluY29taW5nLCBleGlzdGluZylcbiAgICAgICAgICAgIDogdGhpcy5tZXJnZShleGlzdGluZywgaW5jb21pbmcpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZXhpc3Rpbmc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFJ1biB3aGVuIGFuIGV4aXN0aW5nIGVudGl0eSBpcyBmb3VuZCBpbiB0aGUgc3RvcmVcbiAgICAgKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL3NjaGVtYS5FbnRpdHkjbWVyZ2VNZXRhV2l0aFN0b3JlXG4gICAgICovXG4gICAgc3RhdGljIG1lcmdlTWV0YVdpdGhTdG9yZShcbiAgICAgIGV4aXN0aW5nTWV0YToge1xuICAgICAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgICAgICAgZGF0ZTogbnVtYmVyO1xuICAgICAgICBmZXRjaGVkQXQ6IG51bWJlcjtcbiAgICAgIH0sXG4gICAgICBpbmNvbWluZ01ldGE6IHsgZXhwaXJlc0F0OiBudW1iZXI7IGRhdGU6IG51bWJlcjsgZmV0Y2hlZEF0OiBudW1iZXIgfSxcbiAgICAgIGV4aXN0aW5nOiBhbnksXG4gICAgICBpbmNvbWluZzogYW55LFxuICAgICkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgICB0aGlzLnNob3VsZFJlb3JkZXIoZXhpc3RpbmdNZXRhLCBpbmNvbWluZ01ldGEsIGV4aXN0aW5nLCBpbmNvbWluZylcbiAgICAgICAgKSA/XG4gICAgICAgICAgZXhpc3RpbmdNZXRhXG4gICAgICAgIDogaW5jb21pbmdNZXRhO1xuICAgIH1cblxuICAgIC8qKiBGYWN0b3J5IG1ldGhvZCB0byBjb252ZXJ0IGZyb20gUGxhaW4gSlMgT2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBbcHJvcHNdIFBsYWluIE9iamVjdCBvZiBwcm9wZXJ0aWVzIHRvIGFzc2lnbi5cbiAgICAgKi9cbiAgICBzdGF0aWMgZnJvbUpTPFQgZXh0ZW5kcyB0eXBlb2YgRW50aXR5TWl4aW4+KFxuICAgICAgdGhpczogVCxcbiAgICAgIC8vIFRPRE86IHRoaXMgc2hvdWxkIG9ubHkgYWNjZXB0IG1lbWJlcnMgdGhhdCBhcmUgbm90IGZ1bmN0aW9uc1xuICAgICAgcHJvcHM6IFBhcnRpYWw8QWJzdHJhY3RJbnN0YW5jZVR5cGU8VD4+ID0ge30sXG4gICAgKTogQWJzdHJhY3RJbnN0YW5jZVR5cGU8VD4ge1xuICAgICAgLy8gd2UgdHlwZSBndWFyZGVkIGFic3RyYWN0IGNhc2UgYWJvdmUsIHNvIG9rIHRvIGZvcmNlIHR5cGVzY3JpcHQgdG8gYWxsb3cgY29uc3RydWN0b3IgY2FsbFxuICAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgKHRoaXMgYXMgYW55KShwcm9wcykgYXMgQWJzdHJhY3RJbnN0YW5jZVR5cGU8VD47XG4gICAgICAvLyB3ZSBjYW4ndCByZWx5IG9uIGNvbnN0cnVjdG9ycyBhbmQgb3ZlcnJpZGUgdGhlIGRlZmF1bHRzIHByb3ZpZGVkIGFzIHByb3BlcnR5IGFzc2lnbm1lbnRzXG4gICAgICAvLyBhbGwgb2NjdXIgYWZ0ZXIgdGhlIGNvbnN0cnVjdG9yXG4gICAgICBPYmplY3QuYXNzaWduKGluc3RhbmNlLCBwcm9wcyk7XG4gICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfVxuXG4gICAgLyoqIENhbGxlZCB3aGVuIGRlbm9ybWFsaXppbmcgYW4gZW50aXR5IHRvIGNyZWF0ZSBhbiBpbnN0YW5jZSB3aGVuICd2YWxpZCdcbiAgICAgKlxuICAgICAqIEBwYXJhbSBbcHJvcHNdIFBsYWluIE9iamVjdCBvZiBwcm9wZXJ0aWVzIHRvIGFzc2lnbi5cbiAgICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9zY2hlbWEuRW50aXR5I2NyZWF0ZUlmVmFsaWRcbiAgICAgKi9cbiAgICBzdGF0aWMgY3JlYXRlSWZWYWxpZDxUIGV4dGVuZHMgdHlwZW9mIEVudGl0eU1peGluPihcbiAgICAgIHRoaXM6IFQsXG4gICAgICAvLyBUT0RPOiB0aGlzIHNob3VsZCBvbmx5IGFjY2VwdCBtZW1iZXJzIHRoYXQgYXJlIG5vdCBmdW5jdGlvbnNcbiAgICAgIHByb3BzOiBQYXJ0aWFsPEFic3RyYWN0SW5zdGFuY2VUeXBlPFQ+PixcbiAgICApOiBBYnN0cmFjdEluc3RhbmNlVHlwZTxUPiB8IHVuZGVmaW5lZCB7XG4gICAgICBpZiAodGhpcy52YWxpZGF0ZShwcm9wcykpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZCBhcyBhbnk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5mcm9tSlMocHJvcHMpO1xuICAgIH1cblxuICAgIC8qKiBEbyBhbnkgdHJhbnNmb3JtYXRpb25zIHdoZW4gZmlyc3QgcmVjZWl2aW5nIGlucHV0XG4gICAgICpcbiAgICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9zY2hlbWEuRW50aXR5I3Byb2Nlc3NcbiAgICAgKi9cbiAgICBzdGF0aWMgcHJvY2VzcyhcbiAgICAgIGlucHV0OiBhbnksXG4gICAgICBwYXJlbnQ6IGFueSxcbiAgICAgIGtleTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgYXJnczogYW55LFxuICAgICk6IGFueSB7XG4gICAgICByZXR1cm4geyAuLi5pbnB1dCB9O1xuICAgIH1cblxuICAgIHN0YXRpYyBub3JtYWxpemUoXG4gICAgICBpbnB1dDogYW55LFxuICAgICAgcGFyZW50OiBhbnksXG4gICAgICBrZXk6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgIHZpc2l0OiAoLi4uYXJnczogYW55KSA9PiBhbnksXG4gICAgICBhZGRFbnRpdHk6ICguLi5hcmdzOiBhbnkpID0+IGFueSxcbiAgICAgIHZpc2l0ZWRFbnRpdGllczogUmVjb3JkPHN0cmluZyB8IHN5bWJvbCwgYW55PixcbiAgICAgIHN0b3JlRW50aXRpZXM6IGFueSxcbiAgICAgIGFyZ3M/OiByZWFkb25seSBhbnlbXSxcbiAgICApOiBhbnkge1xuICAgICAgY29uc3QgcHJvY2Vzc2VkRW50aXR5ID0gdGhpcy5wcm9jZXNzKGlucHV0LCBwYXJlbnQsIGtleSwgYXJncyk7XG4gICAgICBsZXQgaWQgPSB0aGlzLnBrKHByb2Nlc3NlZEVudGl0eSwgcGFyZW50LCBrZXksIGFyZ3MpO1xuICAgICAgaWYgKGlkID09PSB1bmRlZmluZWQgfHwgaWQgPT09ICcnIHx8IGlkID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAvLyBjcmVhdGUgYSByYW5kb20gaWQgaWYgYSB2YWxpZCBvbmUgY2Fubm90IGJlIGNvbXB1dGVkXG4gICAgICAgIC8vIHRoaXMgaXMgdXNlZnVsIGZvciBvcHRpbWlzdGljIGNyZWF0ZXMgdGhhdCBkb24ndCBuZWVkIHJlYWwgaWRzIC0ganVzdCBzb21ldGhpbmcgdG8gaG9sZCB0aGVpciBwbGFjZVxuICAgICAgICBpZCA9IGBNSVNTLSR7TWF0aC5yYW5kb20oKX1gO1xuICAgICAgICAvLyAnY3JlYXRlcycgY29uY2VwdHVhbGx5IHNob3VsZCBhbGxvdyBtaXNzaW5nIFBLIHRvIG1ha2Ugb3B0aW1pc3RpYyBjcmVhdGVzIGVhc3lcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXZpc2l0ZWRFbnRpdGllc1tDUkVBVEVdKSB7XG4gICAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgTWlzc2luZyB1c2FibGUgcHJpbWFyeSBrZXkgd2hlbiBub3JtYWxpemluZyByZXNwb25zZS5cblxuICBUaGlzIGlzIGxpa2VseSBkdWUgdG8gYSBtYWxmb3JtZWQgcmVzcG9uc2UuXG4gIFRyeSBpbnNwZWN0aW5nIHRoZSBuZXR3b3JrIHJlc3BvbnNlIG9yIGZldGNoKCkgcmV0dXJuIHZhbHVlLlxuICBPciB1c2UgZGVidWdnaW5nIHRvb2xzOiBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9ndWlkZXMvZGVidWdnaW5nXG4gIExlYXJuIG1vcmUgYWJvdXQgcHJpbWFyeSBrZXlzOiBodHRwczovL2RhdGFjbGllbnQuaW8vcmVzdC9hcGkvRW50aXR5I3BrXG5cbiAgRW50aXR5OiAke3RoaXMua2V5fVxuICBWYWx1ZSAocHJvY2Vzc2VkKTogJHtcbiAgICBwcm9jZXNzZWRFbnRpdHkgJiYgSlNPTi5zdHJpbmdpZnkocHJvY2Vzc2VkRW50aXR5LCBudWxsLCAyKVxuICB9XG5gLFxuICAgICAgICAgICk7XG4gICAgICAgICAgKGVycm9yIGFzIGFueSkuc3RhdHVzID0gNDAwO1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZCA9IGAke2lkfWA7XG4gICAgICB9XG4gICAgICBjb25zdCBlbnRpdHlUeXBlID0gdGhpcy5rZXk7XG5cbiAgICAgIGlmICghKGVudGl0eVR5cGUgaW4gdmlzaXRlZEVudGl0aWVzKSkge1xuICAgICAgICB2aXNpdGVkRW50aXRpZXNbZW50aXR5VHlwZV0gPSB7fTtcbiAgICAgIH1cbiAgICAgIGlmICghKGlkIGluIHZpc2l0ZWRFbnRpdGllc1tlbnRpdHlUeXBlXSkpIHtcbiAgICAgICAgdmlzaXRlZEVudGl0aWVzW2VudGl0eVR5cGVdW2lkXSA9IFtdO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICB2aXNpdGVkRW50aXRpZXNbZW50aXR5VHlwZV1baWRdLnNvbWUoKGVudGl0eTogYW55KSA9PiBlbnRpdHkgPT09IGlucHV0KVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBpZDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHRoaXMudmFsaWRhdGUocHJvY2Vzc2VkRW50aXR5KTtcbiAgICAgIHRocm93VmFsaWRhdGlvbkVycm9yKGVycm9yTWVzc2FnZSk7XG5cbiAgICAgIHZpc2l0ZWRFbnRpdGllc1tlbnRpdHlUeXBlXVtpZF0ucHVzaChpbnB1dCk7XG5cbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuc2NoZW1hKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGlmIChPYmplY3QuaGFzT3duKHByb2Nlc3NlZEVudGl0eSwga2V5KSkge1xuICAgICAgICAgIHByb2Nlc3NlZEVudGl0eVtrZXldID0gdmlzaXQoXG4gICAgICAgICAgICBwcm9jZXNzZWRFbnRpdHlba2V5XSxcbiAgICAgICAgICAgIHByb2Nlc3NlZEVudGl0eSxcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIHRoaXMuc2NoZW1hW2tleV0sXG4gICAgICAgICAgICBhZGRFbnRpdHksXG4gICAgICAgICAgICB2aXNpdGVkRW50aXRpZXMsXG4gICAgICAgICAgICBzdG9yZUVudGl0aWVzLFxuICAgICAgICAgICAgYXJncyxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgYWRkRW50aXR5KHRoaXMsIHByb2Nlc3NlZEVudGl0eSwgaWQpO1xuICAgICAgcmV0dXJuIGlkO1xuICAgIH1cblxuICAgIHN0YXRpYyB2YWxpZGF0ZShwcm9jZXNzZWRFbnRpdHk6IGFueSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3RhdGljIHF1ZXJ5S2V5KFxuICAgICAgYXJnczogcmVhZG9ubHkgYW55W10sXG4gICAgICBxdWVyeUtleTogYW55LFxuICAgICAgZ2V0RW50aXR5OiBHZXRFbnRpdHksXG4gICAgICBnZXRJbmRleDogR2V0SW5kZXgsXG4gICAgKTogYW55IHtcbiAgICAgIGlmICghYXJnc1swXSkgcmV0dXJuO1xuICAgICAgY29uc3QgaWQgPSBxdWVyeUtleUNhbmRpZGF0ZSh0aGlzLCBhcmdzLCBnZXRJbmRleCk7XG4gICAgICAvLyBlbnN1cmUgdGhpcyBhY3R1YWxseSBoYXMgZW50aXR5IG9yIHdlIHNob3VsZG4ndCB0cnkgdG8gdXNlIGl0IGluIG91ciBxdWVyeVxuICAgICAgaWYgKGdldEVudGl0eSh0aGlzLmtleSwgaWQpKSByZXR1cm4gaWQ7XG4gICAgfVxuXG4gICAgc3RhdGljIGRlbm9ybWFsaXplPFQgZXh0ZW5kcyB0eXBlb2YgRW50aXR5TWl4aW4+KFxuICAgICAgdGhpczogVCxcbiAgICAgIGlucHV0OiBhbnksXG4gICAgICBhcmdzOiBhbnlbXSxcbiAgICAgIHVudmlzaXQ6IChpbnB1dDogYW55LCBzY2hlbWE6IGFueSkgPT4gYW55LFxuICAgICk6IEFic3RyYWN0SW5zdGFuY2VUeXBlPFQ+IHtcbiAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzeW1ib2wnKSB7XG4gICAgICAgIHJldHVybiBpbnB1dCBhcyBhbnk7XG4gICAgICB9XG5cbiAgICAgIC8vIG5vdGU6IGl0ZXJhdGlvbiBvcmRlciBtdXN0IGJlIHN0YWJsZVxuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5zY2hlbWEpKSB7XG4gICAgICAgIGNvbnN0IHNjaGVtYSA9IHRoaXMuc2NoZW1hW2tleV07XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdW52aXNpdChpbnB1dFtrZXldLCBzY2hlbWEpO1xuXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzeW1ib2wnKSB7XG4gICAgICAgICAgLy8gaWYgZGVmYXVsdCBpcyBub3QgJ2ZhbHN5JywgdGhlbiB0aGlzIGlzIHJlcXVpcmVkLCBzbyBwcm9wYWdhdGUgSU5WQUxJRCBzeW1ib2xcbiAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0c1trZXldKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgYXMgYW55O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpbnB1dFtrZXldID0gdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlucHV0W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH1cblxuICAgIC8qKiBBbGwgaW5zdGFuY2UgZGVmYXVsdHMgc2V0ICovXG4gICAgc3RhdGljIGdldCBkZWZhdWx0cygpIHtcbiAgICAgIC8vIHdlIHVzZSBoYXNPd24gYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIHVzZSBhIHBhcmVudHMnIGRlZmF1bHRzXG4gICAgICBpZiAoIU9iamVjdC5oYXNPd24odGhpcywgJ19fZGVmYXVsdHMnKSlcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdfX2RlZmF1bHRzJywge1xuICAgICAgICAgIHZhbHVlOiBuZXcgKHRoaXMgYXMgYW55KSgpLFxuICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICByZXR1cm4gKHRoaXMgYXMgYW55KS5fX2RlZmF1bHRzO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHsgcGssIHNjaGVtYSwga2V5LCAuLi5zdGF0aWNQcm9wcyB9ID0gb3B0aW9ucztcbiAgLy8gcmVtYWluaW5nIG9wdGlvbnNcbiAgT2JqZWN0LmFzc2lnbihFbnRpdHlNaXhpbiwgc3RhdGljUHJvcHMpO1xuXG4gIGlmICgnc2NoZW1hJyBpbiBvcHRpb25zKSB7XG4gICAgRW50aXR5TWl4aW4uc2NoZW1hID0gb3B0aW9ucy5zY2hlbWEgYXMgYW55O1xuICB9IGVsc2UgaWYgKCEoQmFzZSBhcyBhbnkpLnNjaGVtYSkge1xuICAgIEVudGl0eU1peGluLnNjaGVtYSA9IHt9O1xuICB9XG4gIGlmICgncGsnIGluIG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMucGsgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIEVudGl0eU1peGluLnByb3RvdHlwZS5wayA9IGZ1bmN0aW9uIChwYXJlbnQ/OiBhbnksIGtleT86IHN0cmluZykge1xuICAgICAgICByZXR1cm4gKG9wdGlvbnMucGsgYXMgYW55KSh0aGlzLCBwYXJlbnQsIGtleSk7XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBFbnRpdHlNaXhpbi5wcm90b3R5cGUucGsgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAodGhpcyBhcyBhbnkpW29wdGlvbnMucGtdO1xuICAgICAgfTtcbiAgICB9XG4gICAgLy8gZGVmYXVsdCB0byAnaWQnIGZpZWxkIGlmIHRoZSBiYXNlIGNsYXNzIGRvZXNuJ3QgaGF2ZSBhIHBrXG4gIH0gZWxzZSBpZiAodHlwZW9mIEJhc2UucHJvdG90eXBlLnBrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgRW50aXR5TWl4aW4ucHJvdG90eXBlLnBrID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuICh0aGlzIGFzIGFueSkuaWQ7XG4gICAgfTtcbiAgfVxuICBpZiAoJ2tleScgaW4gb3B0aW9ucykge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFbnRpdHlNaXhpbiwgJ2tleScsIHtcbiAgICAgIHZhbHVlOiBvcHRpb25zLmtleSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICB9KTtcbiAgfSBlbHNlIGlmICghKCdrZXknIGluIEJhc2UpKSB7XG4gICAgLy8gdGhpcyBhbGxvd3MgYXNzaWdubWVudCBpbiBzdHJpY3QtbW9kZVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1pbm5lci1kZWNsYXJhdGlvbnNcbiAgICBmdW5jdGlvbiBzZXQodGhpczogYW55LCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2tleScsIHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgYmFzZUdldCA9IGZ1bmN0aW9uICh0aGlzOiB7IG5hbWU6IHN0cmluZyB9KTogc3RyaW5nIHtcbiAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLm5hbWUgPT09ICdFbnRpdHlNaXhpbicgPyBCYXNlLm5hbWUgOiB0aGlzLm5hbWU7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgaWYgKFxuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICAgIChuYW1lID09PSAnJyB8fCBuYW1lID09PSAnRW50aXR5TWl4aW4nIHx8IG5hbWUgPT09ICdfdGVtcCcpXG4gICAgICApXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnRW50aXR5IGNsYXNzZXMgd2l0aG91dCBhIG5hbWUgbXVzdCBkZWZpbmUgYHN0YXRpYyBrZXlgXFxuU2VlOiBodHRwczovL2RhdGFjbGllbnQuaW8vcmVzdC9hcGkvRW50aXR5I2tleScsXG4gICAgICAgICk7XG4gICAgICByZXR1cm4gbmFtZTtcbiAgICB9O1xuICAgIGNvbnN0IGdldCA9XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgKGRvY3VtZW50IGFzIGFueSkuQ0xTX01BTkdMRSA/XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIGZ1bmN0aW9uICh0aGlzOiB7XG4gICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICB9KTogc3RyaW5nIHtcbiAgICAgICAgICAoZG9jdW1lbnQgYXMgYW55KS5DTFNfTUFOR0xFPy4odGhpcyk7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEVudGl0eU1peGluLCAna2V5Jywge1xuICAgICAgICAgICAgZ2V0OiBiYXNlR2V0LFxuICAgICAgICAgICAgc2V0LFxuICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gYmFzZUdldC5jYWxsKHRoaXMpO1xuICAgICAgICB9XG4gICAgICA6IGJhc2VHZXQ7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRW50aXR5TWl4aW4sICdrZXknLCB7XG4gICAgICBnZXQsXG4gICAgICBzZXQsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIEVudGl0eU1peGluIGFzIGFueTtcbn1cblxuZnVuY3Rpb24gaW5kZXhGcm9tUGFyYW1zPEkgZXh0ZW5kcyBzdHJpbmc+KFxuICBwYXJhbXM6IFJlYWRvbmx5PG9iamVjdD4sXG4gIGluZGV4ZXM/OiBSZWFkb25seTxJW10+LFxuKSB7XG4gIGlmICghaW5kZXhlcykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIGluZGV4ZXMuZmluZChpbmRleCA9PiBPYmplY3QuaGFzT3duKHBhcmFtcywgaW5kZXgpKTtcbn1cblxuLy8gcGFydCBvZiB0aGUgcmVhc29uIGZvciBwdWxsaW5nIHRoaXMgb3V0IGlzIHRoYXQgYWxsIGZ1bmN0aW9ucyB0aGF0IHRocm93IGFyZSBkZW9wdGltaXplZFxuZnVuY3Rpb24gdGhyb3dWYWxpZGF0aW9uRXJyb3IoZXJyb3JNZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgaWYgKGVycm9yTWVzc2FnZSkge1xuICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgKGVycm9yIGFzIGFueSkuc3RhdHVzID0gNDAwO1xuICAgIHRocm93IGVycm9yO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVudGl0eUNsYXNzPFRCYXNlIGV4dGVuZHMgQ29uc3RydWN0b3IgPSBhbnk+IHtcbiAgdG9KU09OKCk6IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgc2NoZW1hOiB7XG4gICAgICBbazogc3RyaW5nXTogU2NoZW1hO1xuICAgIH07XG4gICAga2V5OiBzdHJpbmc7XG4gIH07XG4gIC8qKiBEZWZpbmVzIG5lc3RlZCBlbnRpdGllc1xuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9yZXN0L2FwaS9FbnRpdHkjc2NoZW1hXG4gICAqL1xuICBzY2hlbWE6IHtcbiAgICBbazogc3RyaW5nXTogU2NoZW1hO1xuICB9O1xuICAvKiogUmV0dXJucyB0aGUgZ2xvYmFsbHkgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBzdGF0aWMgRW50aXR5XG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL3Jlc3QvYXBpL0VudGl0eSNrZXlcbiAgICovXG4gIGtleTogc3RyaW5nO1xuICAvKiogRGVmaW5lcyBpbmRleGVzIHRvIGVuYWJsZSBsb29rdXAgYnlcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vcmVzdC9hcGkvRW50aXR5I2luZGV4ZXNcbiAgICovXG4gIGluZGV4ZXM/OiByZWFkb25seSBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGVhY2ggRW50aXR5XG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL3Jlc3QvYXBpL0VudGl0eSNwa1xuICAgKiBAcGFyYW0gW3ZhbHVlXSBQT0pPIG9mIHRoZSBlbnRpdHkgb3Igc3Vic2V0IHVzZWRcbiAgICogQHBhcmFtIFtwYXJlbnRdIFdoZW4gbm9ybWFsaXppbmcsIHRoZSBvYmplY3Qgd2hpY2ggaW5jbHVkZWQgdGhlIGVudGl0eVxuICAgKiBAcGFyYW0gW2tleV0gV2hlbiBub3JtYWxpemluZywgdGhlIGtleSB3aGVyZSB0aGlzIGVudGl0eSB3YXMgZm91bmRcbiAgICogQHBhcmFtIFthcmdzXSAuLi5hcmdzIHNlbnQgdG8gRW5kcG9pbnRcbiAgICovXG4gIHBrPFxuICAgIFQgZXh0ZW5kcyAoYWJzdHJhY3QgbmV3IChcbiAgICAgIC4uLmFyZ3M6IGFueVtdXG4gICAgKSA9PiBJRW50aXR5SW5zdGFuY2UgJiBJbnN0YW5jZVR5cGU8VEJhc2U+KSAmXG4gICAgICBJRW50aXR5Q2xhc3MgJlxuICAgICAgVEJhc2UsXG4gID4oXG4gICAgdGhpczogVCxcbiAgICB2YWx1ZTogUGFydGlhbDxBYnN0cmFjdEluc3RhbmNlVHlwZTxUPj4sXG4gICAgcGFyZW50PzogYW55LFxuICAgIGtleT86IHN0cmluZyxcbiAgICBhcmdzPzogYW55W10sXG4gICk6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgLyoqIFJldHVybiB0cnVlIHRvIG1lcmdlIGluY29taW5nIGRhdGE7IGZhbHNlIGtlZXBzIGV4aXN0aW5nIGVudGl0eVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9zY2hlbWEuRW50aXR5I3Nob3VsZFVwZGF0ZVxuICAgKi9cbiAgc2hvdWxkVXBkYXRlKFxuICAgIGV4aXN0aW5nTWV0YToge1xuICAgICAgZGF0ZTogbnVtYmVyO1xuICAgICAgZmV0Y2hlZEF0OiBudW1iZXI7XG4gICAgfSxcbiAgICBpbmNvbWluZ01ldGE6IHtcbiAgICAgIGRhdGU6IG51bWJlcjtcbiAgICAgIGZldGNoZWRBdDogbnVtYmVyO1xuICAgIH0sXG4gICAgZXhpc3Rpbmc6IGFueSxcbiAgICBpbmNvbWluZzogYW55LFxuICApOiBib29sZWFuO1xuICAvKiogRGV0ZXJtaW5lcyB0aGUgb3JkZXIgb2YgaW5jb21pbmcgZW50aXR5IHZzIGVudGl0eSBhbHJlYWR5IGluIHN0b3JlXFxcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvc2NoZW1hLkVudGl0eSNzaG91bGRSZW9yZGVyXG4gICAqIEByZXR1cm5zIHRydWUgaWYgaW5jb21pbmcgZW50aXR5IHNob3VsZCBiZSBmaXJzdCBhcmd1bWVudCBvZiBtZXJnZSgpXG4gICAqL1xuICBzaG91bGRSZW9yZGVyKFxuICAgIGV4aXN0aW5nTWV0YTogeyBkYXRlOiBudW1iZXI7IGZldGNoZWRBdDogbnVtYmVyIH0sXG4gICAgaW5jb21pbmdNZXRhOiB7IGRhdGU6IG51bWJlcjsgZmV0Y2hlZEF0OiBudW1iZXIgfSxcbiAgICBleGlzdGluZzogYW55LFxuICAgIGluY29taW5nOiBhbnksXG4gICk6IGJvb2xlYW47XG4gIC8qKiBDcmVhdGVzIG5ldyBpbnN0YW5jZSBjb3B5aW5nIG92ZXIgZGVmaW5lZCB2YWx1ZXMgb2YgYXJndW1lbnRzXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL3NjaGVtYS5FbnRpdHkjbWVyZ2VcbiAgICovXG4gIG1lcmdlKGV4aXN0aW5nOiBhbnksIGluY29taW5nOiBhbnkpOiBhbnk7XG4gIC8qKiBSdW4gd2hlbiBhbiBleGlzdGluZyBlbnRpdHkgaXMgZm91bmQgaW4gdGhlIHN0b3JlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL3NjaGVtYS5FbnRpdHkjbWVyZ2VXaXRoU3RvcmVcbiAgICovXG4gIG1lcmdlV2l0aFN0b3JlKFxuICAgIGV4aXN0aW5nTWV0YToge1xuICAgICAgZGF0ZTogbnVtYmVyO1xuICAgICAgZmV0Y2hlZEF0OiBudW1iZXI7XG4gICAgfSxcbiAgICBpbmNvbWluZ01ldGE6IHtcbiAgICAgIGRhdGU6IG51bWJlcjtcbiAgICAgIGZldGNoZWRBdDogbnVtYmVyO1xuICAgIH0sXG4gICAgZXhpc3Rpbmc6IGFueSxcbiAgICBpbmNvbWluZzogYW55LFxuICApOiBhbnk7XG4gIC8qKiBSdW4gd2hlbiBhbiBleGlzdGluZyBlbnRpdHkgaXMgZm91bmQgaW4gdGhlIHN0b3JlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL3NjaGVtYS5FbnRpdHkjbWVyZ2VNZXRhV2l0aFN0b3JlXG4gICAqL1xuICBtZXJnZU1ldGFXaXRoU3RvcmUoXG4gICAgZXhpc3RpbmdNZXRhOiB7XG4gICAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgICAgIGRhdGU6IG51bWJlcjtcbiAgICAgIGZldGNoZWRBdDogbnVtYmVyO1xuICAgIH0sXG4gICAgaW5jb21pbmdNZXRhOiB7IGV4cGlyZXNBdDogbnVtYmVyOyBkYXRlOiBudW1iZXI7IGZldGNoZWRBdDogbnVtYmVyIH0sXG4gICAgZXhpc3Rpbmc6IGFueSxcbiAgICBpbmNvbWluZzogYW55LFxuICApOiB7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgZGF0ZTogbnVtYmVyO1xuICAgIGZldGNoZWRBdDogbnVtYmVyO1xuICB9O1xuICAvKiogRmFjdG9yeSBtZXRob2QgdG8gY29udmVydCBmcm9tIFBsYWluIEpTIE9iamVjdHMuXG4gICAqXG4gICAqIEBwYXJhbSBbcHJvcHNdIFBsYWluIE9iamVjdCBvZiBwcm9wZXJ0aWVzIHRvIGFzc2lnbi5cbiAgICovXG4gIGZyb21KUzxcbiAgICBUIGV4dGVuZHMgKGFic3RyYWN0IG5ldyAoXG4gICAgICAuLi5hcmdzOiBhbnlbXVxuICAgICkgPT4gSUVudGl0eUluc3RhbmNlICYgSW5zdGFuY2VUeXBlPFRCYXNlPikgJlxuICAgICAgSUVudGl0eUNsYXNzICZcbiAgICAgIFRCYXNlLFxuICA+KFxuICAgIHRoaXM6IFQsXG4gICAgcHJvcHM/OiBQYXJ0aWFsPEFic3RyYWN0SW5zdGFuY2VUeXBlPFQ+PixcbiAgKTogQWJzdHJhY3RJbnN0YW5jZVR5cGU8VD47XG4gIC8qKiBDYWxsZWQgd2hlbiBkZW5vcm1hbGl6aW5nIGFuIGVudGl0eSB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugd2hlbiAndmFsaWQnXG4gICAqXG4gICAqIEBwYXJhbSBbcHJvcHNdIFBsYWluIE9iamVjdCBvZiBwcm9wZXJ0aWVzIHRvIGFzc2lnbi5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vcmVzdC9hcGkvRW50aXR5I2NyZWF0ZUlmVmFsaWRcbiAgICovXG4gIGNyZWF0ZUlmVmFsaWQ8XG4gICAgVCBleHRlbmRzIChhYnN0cmFjdCBuZXcgKFxuICAgICAgLi4uYXJnczogYW55W11cbiAgICApID0+IElFbnRpdHlJbnN0YW5jZSAmIEluc3RhbmNlVHlwZTxUQmFzZT4pICZcbiAgICAgIElFbnRpdHlDbGFzcyAmXG4gICAgICBUQmFzZSxcbiAgPihcbiAgICB0aGlzOiBULFxuICAgIHByb3BzOiBQYXJ0aWFsPEFic3RyYWN0SW5zdGFuY2VUeXBlPFQ+PixcbiAgKTogQWJzdHJhY3RJbnN0YW5jZVR5cGU8VD4gfCB1bmRlZmluZWQ7XG4gIC8qKiBEbyBhbnkgdHJhbnNmb3JtYXRpb25zIHdoZW4gZmlyc3QgcmVjZWl2aW5nIGlucHV0XG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL3Jlc3QvYXBpL0VudGl0eSNwcm9jZXNzXG4gICAqL1xuICBwcm9jZXNzKGlucHV0OiBhbnksIHBhcmVudDogYW55LCBrZXk6IHN0cmluZyB8IHVuZGVmaW5lZCwgYXJnczogYW55W10pOiBhbnk7XG4gIG5vcm1hbGl6ZShcbiAgICBpbnB1dDogYW55LFxuICAgIHBhcmVudDogYW55LFxuICAgIGtleTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIHZpc2l0OiAoLi4uYXJnczogYW55KSA9PiBhbnksXG4gICAgYWRkRW50aXR5OiAoLi4uYXJnczogYW55KSA9PiBhbnksXG4gICAgdmlzaXRlZEVudGl0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICApOiBhbnk7XG4gIC8qKiBEbyBhbnkgdHJhbnNmb3JtYXRpb25zIHdoZW4gZmlyc3QgcmVjZWl2aW5nIGlucHV0XG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL3Jlc3QvYXBpL0VudGl0eSN2YWxpZGF0ZVxuICAgKi9cbiAgdmFsaWRhdGUocHJvY2Vzc2VkRW50aXR5OiBhbnkpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIC8qKiBCdWlsZHMgYSBrZXkgYWNjZXNzIHRoZSBlbnRpdHkgd2l0aG91dCBlbmRwb2ludCByZXN1bHRzXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL3Jlc3QvYXBpL0VudGl0eSNxdWVyeUtleVxuICAgKi9cbiAgcXVlcnlLZXkoXG4gICAgYXJnczogcmVhZG9ubHkgYW55W10sXG4gICAgcXVlcnlLZXk6IGFueSxcbiAgICBnZXRFbnRpdHk6IEdldEVudGl0eSxcbiAgICBnZXRJbmRleDogR2V0SW5kZXgsXG4gICk6IGFueTtcbiAgZGVub3JtYWxpemU8XG4gICAgVCBleHRlbmRzIChhYnN0cmFjdCBuZXcgKFxuICAgICAgLi4uYXJnczogYW55W11cbiAgICApID0+IElFbnRpdHlJbnN0YW5jZSAmIEluc3RhbmNlVHlwZTxUQmFzZT4pICZcbiAgICAgIElFbnRpdHlDbGFzcyAmXG4gICAgICBUQmFzZSxcbiAgPihcbiAgICB0aGlzOiBULFxuICAgIGlucHV0OiBhbnksXG4gICAgYXJnczogcmVhZG9ubHkgYW55W10sXG4gICAgdW52aXNpdDogKGlucHV0OiBhbnksIHNjaGVtYTogYW55KSA9PiBhbnksXG4gICk6IEFic3RyYWN0SW5zdGFuY2VUeXBlPFQ+O1xuICAvKiogQWxsIGluc3RhbmNlIGRlZmF1bHRzIHNldCAqL1xuICByZWFkb25seSBkZWZhdWx0czogYW55O1xuICAvL3NldChlbnRpdHk6IGFueSwga2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkO1xufVxuZXhwb3J0IGludGVyZmFjZSBJRW50aXR5SW5zdGFuY2Uge1xuICAvKipcbiAgICogQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgZWFjaCBFbnRpdHlcbiAgICpcbiAgICogQHBhcmFtIFtwYXJlbnRdIFdoZW4gbm9ybWFsaXppbmcsIHRoZSBvYmplY3Qgd2hpY2ggaW5jbHVkZWQgdGhlIGVudGl0eVxuICAgKiBAcGFyYW0gW2tleV0gV2hlbiBub3JtYWxpemluZywgdGhlIGtleSB3aGVyZSB0aGlzIGVudGl0eSB3YXMgZm91bmRcbiAgICogQHBhcmFtIFthcmdzXSAuLi5hcmdzIHNlbnQgdG8gRW5kcG9pbnRcbiAgICovXG4gIHBrKFxuICAgIHBhcmVudD86IGFueSxcbiAgICBrZXk/OiBzdHJpbmcsXG4gICAgYXJncz86IHJlYWRvbmx5IGFueVtdLFxuICApOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHF1ZXJ5S2V5Q2FuZGlkYXRlKFxuICBzY2hlbWE6IGFueSxcbiAgYXJnczogcmVhZG9ubHkgYW55W10sXG4gIGdldEluZGV4OiBHZXRJbmRleCxcbikge1xuICBpZiAoWydzdHJpbmcnLCAnbnVtYmVyJ10uaW5jbHVkZXModHlwZW9mIGFyZ3NbMF0pKSB7XG4gICAgcmV0dXJuIGAke2FyZ3NbMF19YDtcbiAgfVxuICBjb25zdCBpZCA9IHNjaGVtYS5wayhhcmdzWzBdLCB1bmRlZmluZWQsICcnLCBhcmdzKTtcbiAgLy8gV2FzIGFibGUgdG8gaW5mZXIgdGhlIGVudGl0eSdzIHByaW1hcnkga2V5IGZyb20gcGFyYW1zXG4gIGlmIChpZCAhPT0gdW5kZWZpbmVkICYmIGlkICE9PSAnJykgcmV0dXJuIGlkO1xuICAvLyBub3cgYXR0ZW1wdCBsb29rdXAgaW4gaW5kZXhlc1xuICBjb25zdCBpbmRleE5hbWUgPSBpbmRleEZyb21QYXJhbXMoYXJnc1swXSwgc2NoZW1hLmluZGV4ZXMpO1xuICBpZiAoIWluZGV4TmFtZSkgcmV0dXJuO1xuICBjb25zdCB2YWx1ZSA9IChhcmdzWzBdIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW2luZGV4TmFtZV07XG4gIHJldHVybiBnZXRJbmRleChzY2hlbWEua2V5LCBpbmRleE5hbWUsIHZhbHVlKVt2YWx1ZV07XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQSxTQUFTQSxNQUFNLFFBQVEsY0FBYzs7QUFnQnJDOztBQXNDQSxlQUFlLFNBQVNDLFlBQVlBLENBQ2xDQyxJQUFXLEVBQ1hDLE9BQTJDLEdBQUcsQ0FBQyxDQUFDLEVBQ2hEO0VBQ0E7QUFDRjtBQUNBO0FBQ0E7RUFDRSxNQUFlQyxXQUFXLFNBQVNGLElBQUksQ0FBQztJQUN0QyxPQUFPRyxRQUFRQSxDQUFBLEVBQUc7TUFDaEIsT0FBTyxJQUFJLENBQUNDLEdBQUc7SUFDakI7SUFFQSxPQUFPQyxNQUFNQSxDQUFBLEVBQUc7TUFDZCxPQUFPO1FBQ0xDLElBQUksRUFBRSxJQUFJLENBQUNBLElBQUk7UUFDZkMsTUFBTSxFQUFFLElBQUksQ0FBQ0EsTUFBTTtRQUNuQkgsR0FBRyxFQUFFLElBQUksQ0FBQ0E7TUFDWixDQUFDO0lBQ0g7O0lBRUE7O0lBR0E7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7SUFPSTs7SUFFQTs7SUFFQTs7SUFHQTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDSSxPQUFPSSxFQUFFQSxDQUVQQyxLQUF1QyxFQUN2Q0MsTUFBWSxFQUNaTixHQUFZLEVBQ1pPLElBQXFCLEVBQ1E7TUFDN0IsT0FBTyxJQUFJLENBQUNDLFNBQVMsQ0FBQ0osRUFBRSxDQUFDSyxJQUFJLENBQUNKLEtBQUssRUFBRUMsTUFBTSxFQUFFTixHQUFHLEVBQUVPLElBQUksQ0FBQztJQUN6RDs7SUFFQTtBQUNKO0FBQ0E7QUFDQTtJQUNJLE9BQU9HLFlBQVlBLENBQ2pCQyxZQUFpRCxFQUNqREMsWUFBaUQsRUFDakRDLFFBQWEsRUFDYkMsUUFBYSxFQUNiO01BQ0EsT0FBTyxJQUFJO0lBQ2I7O0lBRUE7QUFDSjtBQUNBO0FBQ0E7QUFDQTtJQUNJ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 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDUkVBVEUiLCJFbnRpdHlTY2hlbWEiLCJCYXNlIiwib3B0aW9ucyIsIkVudGl0eU1peGluIiwidG9TdHJpbmciLCJrZXkiLCJ0b0pTT04iLCJuYW1lIiwic2NoZW1hIiwicGsiLCJ2YWx1ZSIsInBhcmVudCIsImFyZ3MiLCJwcm90b3R5cGUiLCJjYWxsIiwic2hvdWxkVXBkYXRlIiwiZXhpc3RpbmdNZXRhIiwiaW5jb21pbmdNZXRhIiwiZXhpc3RpbmciLCJpbmNvbWluZyIsInNob3VsZFJlb3JkZXIiLCJmZXRjaGVkQXQiLCJtZXJnZSIsIk9iamVjdCIsImFzc2lnbiIsIm1lcmdlV2l0aFN0b3JlIiwibWVyZ2VNZXRhV2l0aFN0b3JlIiwiZnJvbUpTIiwicHJvcHMiLCJpbnN0YW5jZSIsImNyZWF0ZUlmVmFsaWQiLCJ2YWxpZGF0ZSIsInVuZGVmaW5lZCIsInByb2Nlc3MiLCJpbnB1dCIsIm5vcm1hbGl6ZSIsInZpc2l0IiwiYWRkRW50aXR5IiwidmlzaXRlZEVudGl0aWVzIiwic3RvcmVFbnRpdGllcyIsInByb2Nlc3NlZEVudGl0eSIsImlkIiwiTWF0aCIsInJhbmRvbSIsImVudiIsIk5PREVfRU5WIiwiZXJyb3IiLCJFcnJvciIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGF0dXMiLCJlbnRpdHlUeXBlIiwic29tZSIsImVudGl0eSIsImVycm9yTWVzc2FnZSIsInRocm93VmFsaWRhdGlvbkVycm9yIiwicHVzaCIsImtleXMiLCJmb3JFYWNoIiwiaGFzT3duIiwicXVlcnlLZXkiLCJnZXRFbnRpdHkiLCJnZXRJbmRleCIsInF1ZXJ5S2V5Q2FuZGlkYXRlIiwiZGVub3JtYWxpemUiLCJ1bnZpc2l0IiwiZGVmYXVsdHMiLCJkZWZpbmVQcm9wZXJ0eSIsIndyaXRhYmxlIiwiY29uZmlndXJhYmxlIiwiX19kZWZhdWx0cyIsInN0YXRpY1Byb3BzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJfZXhjbHVkZWQiLCJlbnVtZXJhYmxlIiwic2V0IiwiYmFzZUdldCIsImdldCIsImRvY3VtZW50IiwiQ0xTX01BTkdMRSIsImluZGV4RnJvbVBhcmFtcyIsInBhcmFtcyIsImluZGV4ZXMiLCJmaW5kIiwiaW5kZXgiLCJpbmNsdWRlcyIsImluZGV4TmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWFzL0VudGl0eVNjaGVtYS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbW9kdWxlLWJvdW5kYXJ5LXR5cGVzICovXG5pbXBvcnQgeyBDUkVBVEUgfSBmcm9tICcuL3NwZWNpYWwuanMnO1xuaW1wb3J0IHR5cGUgeyBTY2hlbWEsIEdldEluZGV4LCBHZXRFbnRpdHkgfSBmcm9tICcuLi9pbnRlcmZhY2UuanMnO1xuaW1wb3J0IHsgQWJzdHJhY3RJbnN0YW5jZVR5cGUgfSBmcm9tICcuLi9ub3JtYWwuanMnO1xuXG5leHBvcnQgdHlwZSBDb25zdHJ1Y3RvciA9IGFic3RyYWN0IG5ldyAoLi4uYXJnczogYW55W10pID0+IHt9O1xuZXhwb3J0IHR5cGUgSURDbGFzcyA9IGFic3RyYWN0IG5ldyAoLi4uYXJnczogYW55W10pID0+IHtcbiAgaWQ6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZDtcbn07XG5leHBvcnQgdHlwZSBQS0NsYXNzID0gYWJzdHJhY3QgbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4ge1xuICBwayhcbiAgICBwYXJlbnQ/OiBhbnksXG4gICAga2V5Pzogc3RyaW5nLFxuICAgIGFyZ3M/OiByZWFkb25seSBhbnlbXSxcbiAgKTogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkO1xufTtcblxuLy8gVE9ETzogRmlndXJlIG91dCB3aGF0IFNjaGVtYSBtdXN0IGJlIGZvciBlYWNoIGtleVxudHlwZSBWYWxpZFNjaGVtYXM8VEluc3RhbmNlPiA9IHsgW2sgaW4ga2V5b2YgVEluc3RhbmNlXT86IFNjaGVtYSB9O1xuXG5leHBvcnQgdHlwZSBFbnRpdHlPcHRpb25zPFRJbnN0YW5jZSBleHRlbmRzIHt9PiA9IHtcbiAgcmVhZG9ubHkgc2NoZW1hPzogVmFsaWRTY2hlbWFzPFRJbnN0YW5jZT47XG4gIHJlYWRvbmx5IHBrPzpcbiAgICB8ICgoXG4gICAgICAgIHZhbHVlOiBUSW5zdGFuY2UsXG4gICAgICAgIHBhcmVudD86IGFueSxcbiAgICAgICAga2V5Pzogc3RyaW5nLFxuICAgICAgKSA9PiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQpXG4gICAgfCBrZXlvZiBUSW5zdGFuY2U7XG4gIHJlYWRvbmx5IGtleT86IHN0cmluZztcbn0gJiB7XG4gIHJlYWRvbmx5IFtLIGluIEV4dHJhY3Q8XG4gICAga2V5b2YgSUVudGl0eUNsYXNzLFxuICAgIHwgJ3Byb2Nlc3MnXG4gICAgfCAnbWVyZ2UnXG4gICAgfCAnZXhwaXJlc0F0J1xuICAgIHwgJ2NyZWF0ZUlmVmFsaWQnXG4gICAgfCAnbWVyZ2VXaXRoU3RvcmUnXG4gICAgfCAndmFsaWRhdGUnXG4gICAgfCAnc2hvdWxkUmVvcmRlcidcbiAgICB8ICdzaG91bGRVcGRhdGUnXG4gID5dPzogSUVudGl0eUNsYXNzPGFic3RyYWN0IG5ldyAoLi4uYXJnczogYW55W10pID0+IFRJbnN0YW5jZT5bS107XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVpcmVkUEtPcHRpb25zPFRJbnN0YW5jZSBleHRlbmRzIHt9PlxuICBleHRlbmRzIEVudGl0eU9wdGlvbnM8VEluc3RhbmNlPiB7XG4gIHJlYWRvbmx5IHBrOlxuICAgIHwgKChcbiAgICAgICAgdmFsdWU6IFRJbnN0YW5jZSxcbiAgICAgICAgcGFyZW50PzogYW55LFxuICAgICAgICBrZXk/OiBzdHJpbmcsXG4gICAgICApID0+IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZClcbiAgICB8IGtleW9mIFRJbnN0YW5jZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRW50aXR5U2NoZW1hPFRCYXNlIGV4dGVuZHMgQ29uc3RydWN0b3I+KFxuICBCYXNlOiBUQmFzZSxcbiAgb3B0aW9uczogRW50aXR5T3B0aW9uczxJbnN0YW5jZVR5cGU8VEJhc2U+PiA9IHt9LFxuKSB7XG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIGRhdGEgdGhhdCBzaG91bGQgYmUgZGVkdXBlZCBieSBzcGVjaWZ5aW5nIGEgcHJpbWFyeSBrZXkuXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL3Jlc3QvYXBpL0VudGl0eVxuICAgKi9cbiAgYWJzdHJhY3QgY2xhc3MgRW50aXR5TWl4aW4gZXh0ZW5kcyBCYXNlIHtcbiAgICBzdGF0aWMgdG9TdHJpbmcoKSB7XG4gICAgICByZXR1cm4gdGhpcy5rZXk7XG4gICAgfVxuXG4gICAgc3RhdGljIHRvSlNPTigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgc2NoZW1hOiB0aGlzLnNjaGVtYSxcbiAgICAgICAga2V5OiB0aGlzLmtleSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqIERlZmluZXMgbmVzdGVkIGVudGl0aWVzICovXG4gICAgZGVjbGFyZSBzdGF0aWMgc2NoZW1hOiB7IFtrOiBzdHJpbmddOiBTY2hlbWEgfTtcblxuICAgIC8qKlxuICAgICAqIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGVhY2ggRW50aXR5XG4gICAgICpcbiAgICAgKiBAcGFyYW0gW3BhcmVudF0gV2hlbiBub3JtYWxpemluZywgdGhlIG9iamVjdCB3aGljaCBpbmNsdWRlZCB0aGUgZW50aXR5XG4gICAgICogQHBhcmFtIFtrZXldIFdoZW4gbm9ybWFsaXppbmcsIHRoZSBrZXkgd2hlcmUgdGhpcyBlbnRpdHkgd2FzIGZvdW5kXG4gICAgICogQHBhcmFtIFthcmdzXSAuLi5hcmdzIHNlbnQgdG8gRW5kcG9pbnRcbiAgICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9zY2hlbWEuRW50aXR5I3BrXG4gICAgICovXG4gICAgYWJzdHJhY3QgcGsoXG4gICAgICBwYXJlbnQ/OiBhbnksXG4gICAgICBrZXk/OiBzdHJpbmcsXG4gICAgICBhcmdzPzogcmVhZG9ubHkgYW55W10sXG4gICAgKTogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIFJldHVybnMgdGhlIGdsb2JhbGx5IHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgc3RhdGljIEVudGl0eSAqL1xuICAgIGRlY2xhcmUgc3RhdGljIGtleTogc3RyaW5nO1xuICAgIC8vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaW4gY2xhc3Mgc3RhdGljIGJsb2NrIGF0IGJvdHRvbSBvZiBkZWZpbml0aW9uXG5cbiAgICAvKiogRGVmaW5lcyBpbmRleGVzIHRvIGVuYWJsZSBsb29rdXAgYnkgKi9cbiAgICBkZWNsYXJlIHN0YXRpYyBpbmRleGVzPzogcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciBlYWNoIEVudGl0eVxuICAgICAqXG4gICAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvc2NoZW1hLkVudGl0eSNwa1xuICAgICAqIEBwYXJhbSBbdmFsdWVdIFBPSk8gb2YgdGhlIGVudGl0eSBvciBzdWJzZXQgdXNlZFxuICAgICAqIEBwYXJhbSBbcGFyZW50XSBXaGVuIG5vcm1hbGl6aW5nLCB0aGUgb2JqZWN0IHdoaWNoIGluY2x1ZGVkIHRoZSBlbnRpdHlcbiAgICAgKiBAcGFyYW0gW2tleV0gV2hlbiBub3JtYWxpemluZywgdGhlIGtleSB3aGVyZSB0aGlzIGVudGl0eSB3YXMgZm91bmRcbiAgICAgKiBAcGFyYW0gW2FyZ3NdIC4uLmFyZ3Mgc2VudCB0byBFbmRwb2ludFxuICAgICAqL1xuICAgIHN0YXRpYyBwazxUIGV4dGVuZHMgdHlwZW9mIEVudGl0eU1peGluPihcbiAgICAgIHRoaXM6IFQsXG4gICAgICB2YWx1ZTogUGFydGlhbDxBYnN0cmFjdEluc3RhbmNlVHlwZTxUPj4sXG4gICAgICBwYXJlbnQ/OiBhbnksXG4gICAgICBrZXk/OiBzdHJpbmcsXG4gICAgICBhcmdzPzogcmVhZG9ubHkgYW55W10sXG4gICAgKTogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3RvdHlwZS5way5jYWxsKHZhbHVlLCBwYXJlbnQsIGtleSwgYXJncyk7XG4gICAgfVxuXG4gICAgLyoqIFJldHVybiB0cnVlIHRvIG1lcmdlIGluY29taW5nIGRhdGE7IGZhbHNlIGtlZXBzIGV4aXN0aW5nIGVudGl0eVxuICAgICAqXG4gICAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvc2NoZW1hLkVudGl0eSNzaG91bGRVcGRhdGVcbiAgICAgKi9cbiAgICBzdGF0aWMgc2hvdWxkVXBkYXRlKFxuICAgICAgZXhpc3RpbmdNZXRhOiB7IGRhdGU6IG51bWJlcjsgZmV0Y2hlZEF0OiBudW1iZXIgfSxcbiAgICAgIGluY29taW5nTWV0YTogeyBkYXRlOiBudW1iZXI7IGZldGNoZWRBdDogbnVtYmVyIH0sXG4gICAgICBleGlzdGluZzogYW55LFxuICAgICAgaW5jb21pbmc6IGFueSxcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBEZXRlcm1pbmVzIHRoZSBvcmRlciBvZiBpbmNvbWluZyBlbnRpdHkgdnMgZW50aXR5IGFscmVhZHkgaW4gc3RvcmVcXFxuICAgICAqXG4gICAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvc2NoZW1hLkVudGl0eSNzaG91bGRSZW9yZGVyXG4gICAgICogQHJldHVybnMgdHJ1ZSBpZiBpbmNvbWluZyBlbnRpdHkgc2hvdWxkIGJlIGZpcnN0IGFyZ3VtZW50IG9mIG1lcmdlKClcbiAgICAgKi9cbiAgICBzdGF0aWMgc2hvdWxkUmVvcmRlcihcbiAgICAgIGV4aXN0aW5nTWV0YTogeyBkYXRlOiBudW1iZXI7IGZldGNoZWRBdDogbnVtYmVyIH0sXG4gICAgICBpbmNvbWluZ01ldGE6IHsgZGF0ZTogbnVtYmVyOyBmZXRjaGVkQXQ6IG51bWJlciB9LFxuICAgICAgZXhpc3Rpbmc6IGFueSxcbiAgICAgIGluY29taW5nOiBhbnksXG4gICAgKSB7XG4gICAgICByZXR1cm4gaW5jb21pbmdNZXRhLmZldGNoZWRBdCA8IGV4aXN0aW5nTWV0YS5mZXRjaGVkQXQ7XG4gICAgfVxuXG4gICAgLyoqIENyZWF0ZXMgbmV3IGluc3RhbmNlIGNvcHlpbmcgb3ZlciBkZWZpbmVkIHZhbHVlcyBvZiBhcmd1bWVudHNcbiAgICAgKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL3NjaGVtYS5FbnRpdHkjbWVyZ2VcbiAgICAgKi9cbiAgICBzdGF0aWMgbWVyZ2UoZXhpc3Rpbmc6IGFueSwgaW5jb21pbmc6IGFueSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZXhpc3RpbmcsXG4gICAgICAgIC4uLmluY29taW5nLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogUnVuIHdoZW4gYW4gZXhpc3RpbmcgZW50aXR5IGlzIGZvdW5kIGluIHRoZSBzdG9yZVxuICAgICAqXG4gICAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvc2NoZW1hLkVudGl0eSNtZXJnZVdpdGhTdG9yZVxuICAgICAqL1xuICAgIHN0YXRpYyBtZXJnZVdpdGhTdG9yZShcbiAgICAgIGV4aXN0aW5nTWV0YToge1xuICAgICAgICBkYXRlOiBudW1iZXI7XG4gICAgICAgIGZldGNoZWRBdDogbnVtYmVyO1xuICAgICAgfSxcbiAgICAgIGluY29taW5nTWV0YTogeyBkYXRlOiBudW1iZXI7IGZldGNoZWRBdDogbnVtYmVyIH0sXG4gICAgICBleGlzdGluZzogYW55LFxuICAgICAgaW5jb21pbmc6IGFueSxcbiAgICApIHtcbiAgICAgIGNvbnN0IHNob3VsZFVwZGF0ZSA9IHRoaXMuc2hvdWxkVXBkYXRlKFxuICAgICAgICBleGlzdGluZ01ldGEsXG4gICAgICAgIGluY29taW5nTWV0YSxcbiAgICAgICAgZXhpc3RpbmcsXG4gICAgICAgIGluY29taW5nLFxuICAgICAgKTtcblxuICAgICAgaWYgKHNob3VsZFVwZGF0ZSkge1xuICAgICAgICAvLyBkaXN0aW5jdCB0eXBlcyBhcmUgbm90IG1lcmdlYWJsZSAobGlrZSBkZWxldGUgc3ltYm9sKSwgc28ganVzdCByZXBsYWNlXG4gICAgICAgIGlmICh0eXBlb2YgaW5jb21pbmcgIT09IHR5cGVvZiBleGlzdGluZykge1xuICAgICAgICAgIHJldHVybiBpbmNvbWluZztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICB0aGlzLnNob3VsZFJlb3JkZXIoZXhpc3RpbmdNZXRhLCBpbmNvbWluZ01ldGEsIGV4aXN0aW5nLCBpbmNvbWluZylcbiAgICAgICAgICAgICkgP1xuICAgICAgICAgICAgICB0aGlzLm1lcmdlKGluY29taW5nLCBleGlzdGluZylcbiAgICAgICAgICAgIDogdGhpcy5tZXJnZShleGlzdGluZywgaW5jb21pbmcpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZXhpc3Rpbmc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFJ1biB3aGVuIGFuIGV4aXN0aW5nIGVudGl0eSBpcyBmb3VuZCBpbiB0aGUgc3RvcmVcbiAgICAgKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL3NjaGVtYS5FbnRpdHkjbWVyZ2VNZXRhV2l0aFN0b3JlXG4gICAgICovXG4gICAgc3RhdGljIG1lcmdlTWV0YVdpdGhTdG9yZShcbiAgICAgIGV4aXN0aW5nTWV0YToge1xuICAgICAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgICAgICAgZGF0ZTogbnVtYmVyO1xuICAgICAgICBmZXRjaGVkQXQ6IG51bWJlcjtcbiAgICAgIH0sXG4gICAgICBpbmNvbWluZ01ldGE6IHsgZXhwaXJlc0F0OiBudW1iZXI7IGRhdGU6IG51bWJlcjsgZmV0Y2hlZEF0OiBudW1iZXIgfSxcbiAgICAgIGV4aXN0aW5nOiBhbnksXG4gICAgICBpbmNvbWluZzogYW55LFxuICAgICkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgICB0aGlzLnNob3VsZFJlb3JkZXIoZXhpc3RpbmdNZXRhLCBpbmNvbWluZ01ldGEsIGV4aXN0aW5nLCBpbmNvbWluZylcbiAgICAgICAgKSA/XG4gICAgICAgICAgZXhpc3RpbmdNZXRhXG4gICAgICAgIDogaW5jb21pbmdNZXRhO1xuICAgIH1cblxuICAgIC8qKiBGYWN0b3J5IG1ldGhvZCB0byBjb252ZXJ0IGZyb20gUGxhaW4gSlMgT2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBbcHJvcHNdIFBsYWluIE9iamVjdCBvZiBwcm9wZXJ0aWVzIHRvIGFzc2lnbi5cbiAgICAgKi9cbiAgICBzdGF0aWMgZnJvbUpTPFQgZXh0ZW5kcyB0eXBlb2YgRW50aXR5TWl4aW4+KFxuICAgICAgdGhpczogVCxcbiAgICAgIC8vIFRPRE86IHRoaXMgc2hvdWxkIG9ubHkgYWNjZXB0IG1lbWJlcnMgdGhhdCBhcmUgbm90IGZ1bmN0aW9uc1xuICAgICAgcHJvcHM6IFBhcnRpYWw8QWJzdHJhY3RJbnN0YW5jZVR5cGU8VD4+ID0ge30sXG4gICAgKTogQWJzdHJhY3RJbnN0YW5jZVR5cGU8VD4ge1xuICAgICAgLy8gd2UgdHlwZSBndWFyZGVkIGFic3RyYWN0IGNhc2UgYWJvdmUsIHNvIG9rIHRvIGZvcmNlIHR5cGVzY3JpcHQgdG8gYWxsb3cgY29uc3RydWN0b3IgY2FsbFxuICAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgKHRoaXMgYXMgYW55KShwcm9wcykgYXMgQWJzdHJhY3RJbnN0YW5jZVR5cGU8VD47XG4gICAgICAvLyB3ZSBjYW4ndCByZWx5IG9uIGNvbnN0cnVjdG9ycyBhbmQgb3ZlcnJpZGUgdGhlIGRlZmF1bHRzIHByb3ZpZGVkIGFzIHByb3BlcnR5IGFzc2lnbm1lbnRzXG4gICAgICAvLyBhbGwgb2NjdXIgYWZ0ZXIgdGhlIGNvbnN0cnVjdG9yXG4gICAgICBPYmplY3QuYXNzaWduKGluc3RhbmNlLCBwcm9wcyk7XG4gICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfVxuXG4gICAgLyoqIENhbGxlZCB3aGVuIGRlbm9ybWFsaXppbmcgYW4gZW50aXR5IHRvIGNyZWF0ZSBhbiBpbnN0YW5jZSB3aGVuICd2YWxpZCdcbiAgICAgKlxuICAgICAqIEBwYXJhbSBbcHJvcHNdIFBsYWluIE9iamVjdCBvZiBwcm9wZXJ0aWVzIHRvIGFzc2lnbi5cbiAgICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9zY2hlbWEuRW50aXR5I2NyZWF0ZUlmVmFsaWRcbiAgICAgKi9cbiAgICBzdGF0aWMgY3JlYXRlSWZWYWxpZDxUIGV4dGVuZHMgdHlwZW9mIEVudGl0eU1peGluPihcbiAgICAgIHRoaXM6IFQsXG4gICAgICAvLyBUT0RPOiB0aGlzIHNob3VsZCBvbmx5IGFjY2VwdCBtZW1iZXJzIHRoYXQgYXJlIG5vdCBmdW5jdGlvbnNcbiAgICAgIHByb3BzOiBQYXJ0aWFsPEFic3RyYWN0SW5zdGFuY2VUeXBlPFQ+PixcbiAgICApOiBBYnN0cmFjdEluc3RhbmNlVHlwZTxUPiB8IHVuZGVmaW5lZCB7XG4gICAgICBpZiAodGhpcy52YWxpZGF0ZShwcm9wcykpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZCBhcyBhbnk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5mcm9tSlMocHJvcHMpO1xuICAgIH1cblxuICAgIC8qKiBEbyBhbnkgdHJhbnNmb3JtYXRpb25zIHdoZW4gZmlyc3QgcmVjZWl2aW5nIGlucHV0XG4gICAgICpcbiAgICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9zY2hlbWEuRW50aXR5I3Byb2Nlc3NcbiAgICAgKi9cbiAgICBzdGF0aWMgcHJvY2VzcyhcbiAgICAgIGlucHV0OiBhbnksXG4gICAgICBwYXJlbnQ6IGFueSxcbiAgICAgIGtleTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgYXJnczogYW55LFxuICAgICk6IGFueSB7XG4gICAgICByZXR1cm4geyAuLi5pbnB1dCB9O1xuICAgIH1cblxuICAgIHN0YXRpYyBub3JtYWxpemUoXG4gICAgICBpbnB1dDogYW55LFxuICAgICAgcGFyZW50OiBhbnksXG4gICAgICBrZXk6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgIHZpc2l0OiAoLi4uYXJnczogYW55KSA9PiBhbnksXG4gICAgICBhZGRFbnRpdHk6ICguLi5hcmdzOiBhbnkpID0+IGFueSxcbiAgICAgIHZpc2l0ZWRFbnRpdGllczogUmVjb3JkPHN0cmluZyB8IHN5bWJvbCwgYW55PixcbiAgICAgIHN0b3JlRW50aXRpZXM6IGFueSxcbiAgICAgIGFyZ3M/OiByZWFkb25seSBhbnlbXSxcbiAgICApOiBhbnkge1xuICAgICAgY29uc3QgcHJvY2Vzc2VkRW50aXR5ID0gdGhpcy5wcm9jZXNzKGlucHV0LCBwYXJlbnQsIGtleSwgYXJncyk7XG4gICAgICBsZXQgaWQgPSB0aGlzLnBrKHByb2Nlc3NlZEVudGl0eSwgcGFyZW50LCBrZXksIGFyZ3MpO1xuICAgICAgaWYgKGlkID09PSB1bmRlZmluZWQgfHwgaWQgPT09ICcnIHx8IGlkID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAvLyBjcmVhdGUgYSByYW5kb20gaWQgaWYgYSB2YWxpZCBvbmUgY2Fubm90IGJlIGNvbXB1dGVkXG4gICAgICAgIC8vIHRoaXMgaXMgdXNlZnVsIGZvciBvcHRpbWlzdGljIGNyZWF0ZXMgdGhhdCBkb24ndCBuZWVkIHJlYWwgaWRzIC0ganVzdCBzb21ldGhpbmcgdG8gaG9sZCB0aGVpciBwbGFjZVxuICAgICAgICBpZCA9IGBNSVNTLSR7TWF0aC5yYW5kb20oKX1gO1xuICAgICAgICAvLyAnY3JlYXRlcycgY29uY2VwdHVhbGx5IHNob3VsZCBhbGxvdyBtaXNzaW5nIFBLIHRvIG1ha2Ugb3B0aW1pc3RpYyBjcmVhdGVzIGVhc3lcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXZpc2l0ZWRFbnRpdGllc1tDUkVBVEVdKSB7XG4gICAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgTWlzc2luZyB1c2FibGUgcHJpbWFyeSBrZXkgd2hlbiBub3JtYWxpemluZyByZXNwb25zZS5cblxuICBUaGlzIGlzIGxpa2VseSBkdWUgdG8gYSBtYWxmb3JtZWQgcmVzcG9uc2UuXG4gIFRyeSBpbnNwZWN0aW5nIHRoZSBuZXR3b3JrIHJlc3BvbnNlIG9yIGZldGNoKCkgcmV0dXJuIHZhbHVlLlxuICBPciB1c2UgZGVidWdnaW5nIHRvb2xzOiBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9ndWlkZXMvZGVidWdnaW5nXG4gIExlYXJuIG1vcmUgYWJvdXQgcHJpbWFyeSBrZXlzOiBodHRwczovL2RhdGFjbGllbnQuaW8vcmVzdC9hcGkvRW50aXR5I3BrXG5cbiAgRW50aXR5OiAke3RoaXMua2V5fVxuICBWYWx1ZSAocHJvY2Vzc2VkKTogJHtcbiAgICBwcm9jZXNzZWRFbnRpdHkgJiYgSlNPTi5zdHJpbmdpZnkocHJvY2Vzc2VkRW50aXR5LCBudWxsLCAyKVxuICB9XG5gLFxuICAgICAgICAgICk7XG4gICAgICAgICAgKGVycm9yIGFzIGFueSkuc3RhdHVzID0gNDAwO1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZCA9IGAke2lkfWA7XG4gICAgICB9XG4gICAgICBjb25zdCBlbnRpdHlUeXBlID0gdGhpcy5rZXk7XG5cbiAgICAgIGlmICghKGVudGl0eVR5cGUgaW4gdmlzaXRlZEVudGl0aWVzKSkge1xuICAgICAgICB2aXNpdGVkRW50aXRpZXNbZW50aXR5VHlwZV0gPSB7fTtcbiAgICAgIH1cbiAgICAgIGlmICghKGlkIGluIHZpc2l0ZWRFbnRpdGllc1tlbnRpdHlUeXBlXSkpIHtcbiAgICAgICAgdmlzaXRlZEVudGl0aWVzW2VudGl0eVR5cGVdW2lkXSA9IFtdO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICB2aXNpdGVkRW50aXRpZXNbZW50aXR5VHlwZV1baWRdLnNvbWUoKGVudGl0eTogYW55KSA9PiBlbnRpdHkgPT09IGlucHV0KVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBpZDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHRoaXMudmFsaWRhdGUocHJvY2Vzc2VkRW50aXR5KTtcbiAgICAgIHRocm93VmFsaWRhdGlvbkVycm9yKGVycm9yTWVzc2FnZSk7XG5cbiAgICAgIHZpc2l0ZWRFbnRpdGllc1tlbnRpdHlUeXBlXVtpZF0ucHVzaChpbnB1dCk7XG5cbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuc2NoZW1hKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGlmIChPYmplY3QuaGFzT3duKHByb2Nlc3NlZEVudGl0eSwga2V5KSkge1xuICAgICAgICAgIHByb2Nlc3NlZEVudGl0eVtrZXldID0gdmlzaXQoXG4gICAgICAgICAgICBwcm9jZXNzZWRFbnRpdHlba2V5XSxcbiAgICAgICAgICAgIHByb2Nlc3NlZEVudGl0eSxcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIHRoaXMuc2NoZW1hW2tleV0sXG4gICAgICAgICAgICBhZGRFbnRpdHksXG4gICAgICAgICAgICB2aXNpdGVkRW50aXRpZXMsXG4gICAgICAgICAgICBzdG9yZUVudGl0aWVzLFxuICAgICAgICAgICAgYXJncyxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgYWRkRW50aXR5KHRoaXMsIHByb2Nlc3NlZEVudGl0eSwgaWQpO1xuICAgICAgcmV0dXJuIGlkO1xuICAgIH1cblxuICAgIHN0YXRpYyB2YWxpZGF0ZShwcm9jZXNzZWRFbnRpdHk6IGFueSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3RhdGljIHF1ZXJ5S2V5KFxuICAgICAgYXJnczogcmVhZG9ubHkgYW55W10sXG4gICAgICBxdWVyeUtleTogYW55LFxuICAgICAgZ2V0RW50aXR5OiBHZXRFbnRpdHksXG4gICAgICBnZXRJbmRleDogR2V0SW5kZXgsXG4gICAgKTogYW55IHtcbiAgICAgIGlmICghYXJnc1swXSkgcmV0dXJuO1xuICAgICAgY29uc3QgaWQgPSBxdWVyeUtleUNhbmRpZGF0ZSh0aGlzLCBhcmdzLCBnZXRJbmRleCk7XG4gICAgICAvLyBlbnN1cmUgdGhpcyBhY3R1YWxseSBoYXMgZW50aXR5IG9yIHdlIHNob3VsZG4ndCB0cnkgdG8gdXNlIGl0IGluIG91ciBxdWVyeVxuICAgICAgaWYgKGdldEVudGl0eSh0aGlzLmtleSwgaWQpKSByZXR1cm4gaWQ7XG4gICAgfVxuXG4gICAgc3RhdGljIGRlbm9ybWFsaXplPFQgZXh0ZW5kcyB0eXBlb2YgRW50aXR5TWl4aW4+KFxuICAgICAgdGhpczogVCxcbiAgICAgIGlucHV0OiBhbnksXG4gICAgICBhcmdzOiBhbnlbXSxcbiAgICAgIHVudmlzaXQ6IChpbnB1dDogYW55LCBzY2hlbWE6IGFueSkgPT4gYW55LFxuICAgICk6IEFic3RyYWN0SW5zdGFuY2VUeXBlPFQ+IHtcbiAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzeW1ib2wnKSB7XG4gICAgICAgIHJldHVybiBpbnB1dCBhcyBhbnk7XG4gICAgICB9XG5cbiAgICAgIC8vIG5vdGU6IGl0ZXJhdGlvbiBvcmRlciBtdXN0IGJlIHN0YWJsZVxuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5zY2hlbWEpKSB7XG4gICAgICAgIGNvbnN0IHNjaGVtYSA9IHRoaXMuc2NoZW1hW2tleV07XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdW52aXNpdChpbnB1dFtrZXldLCBzY2hlbWEpO1xuXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzeW1ib2wnKSB7XG4gICAgICAgICAgLy8gaWYgZGVmYXVsdCBpcyBub3QgJ2ZhbHN5JywgdGhlbiB0aGlzIGlzIHJlcXVpcmVkLCBzbyBwcm9wYWdhdGUgSU5WQUxJRCBzeW1ib2xcbiAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0c1trZXldKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgYXMgYW55O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpbnB1dFtrZXldID0gdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlucHV0W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH1cblxuICAgIC8qKiBBbGwgaW5zdGFuY2UgZGVmYXVsdHMgc2V0ICovXG4gICAgc3RhdGljIGdldCBkZWZhdWx0cygpIHtcbiAgICAgIC8vIHdlIHVzZSBoYXNPd24gYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIHVzZSBhIHBhcmVudHMnIGRlZmF1bHRzXG4gICAgICBpZiAoIU9iamVjdC5oYXNPd24odGhpcywgJ19fZGVmYXVsdHMnKSlcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdfX2RlZmF1bHRzJywge1xuICAgICAgICAgIHZhbHVlOiBuZXcgKHRoaXMgYXMgYW55KSgpLFxuICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICByZXR1cm4gKHRoaXMgYXMgYW55KS5fX2RlZmF1bHRzO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHsgcGssIHNjaGVtYSwga2V5LCAuLi5zdGF0aWNQcm9wcyB9ID0gb3B0aW9ucztcbiAgLy8gcmVtYWluaW5nIG9wdGlvbnNcbiAgT2JqZWN0LmFzc2lnbihFbnRpdHlNaXhpbiwgc3RhdGljUHJvcHMpO1xuXG4gIGlmICgnc2NoZW1hJyBpbiBvcHRpb25zKSB7XG4gICAgRW50aXR5TWl4aW4uc2NoZW1hID0gb3B0aW9ucy5zY2hlbWEgYXMgYW55O1xuICB9IGVsc2UgaWYgKCEoQmFzZSBhcyBhbnkpLnNjaGVtYSkge1xuICAgIEVudGl0eU1peGluLnNjaGVtYSA9IHt9O1xuICB9XG4gIGlmICgncGsnIGluIG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMucGsgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIEVudGl0eU1peGluLnByb3RvdHlwZS5wayA9IGZ1bmN0aW9uIChwYXJlbnQ/OiBhbnksIGtleT86IHN0cmluZykge1xuICAgICAgICByZXR1cm4gKG9wdGlvbnMucGsgYXMgYW55KSh0aGlzLCBwYXJlbnQsIGtleSk7XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBFbnRpdHlNaXhpbi5wcm90b3R5cGUucGsgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAodGhpcyBhcyBhbnkpW29wdGlvbnMucGtdO1xuICAgICAgfTtcbiAgICB9XG4gICAgLy8gZGVmYXVsdCB0byAnaWQnIGZpZWxkIGlmIHRoZSBiYXNlIGNsYXNzIGRvZXNuJ3QgaGF2ZSBhIHBrXG4gIH0gZWxzZSBpZiAodHlwZW9mIEJhc2UucHJvdG90eXBlLnBrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgRW50aXR5TWl4aW4ucHJvdG90eXBlLnBrID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuICh0aGlzIGFzIGFueSkuaWQ7XG4gICAgfTtcbiAgfVxuICBpZiAoJ2tleScgaW4gb3B0aW9ucykge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFbnRpdHlNaXhpbiwgJ2tleScsIHtcbiAgICAgIHZhbHVlOiBvcHRpb25zLmtleSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICB9KTtcbiAgfSBlbHNlIGlmICghKCdrZXknIGluIEJhc2UpKSB7XG4gICAgLy8gdGhpcyBhbGxvd3MgYXNzaWdubWVudCBpbiBzdHJpY3QtbW9kZVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1pbm5lci1kZWNsYXJhdGlvbnNcbiAgICBmdW5jdGlvbiBzZXQodGhpczogYW55LCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2tleScsIHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgYmFzZUdldCA9IGZ1bmN0aW9uICh0aGlzOiB7IG5hbWU6IHN0cmluZyB9KTogc3RyaW5nIHtcbiAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLm5hbWUgPT09ICdFbnRpdHlNaXhpbicgPyBCYXNlLm5hbWUgOiB0aGlzLm5hbWU7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgaWYgKFxuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICAgIChuYW1lID09PSAnJyB8fCBuYW1lID09PSAnRW50aXR5TWl4aW4nIHx8IG5hbWUgPT09ICdfdGVtcCcpXG4gICAgICApXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnRW50aXR5IGNsYXNzZXMgd2l0aG91dCBhIG5hbWUgbXVzdCBkZWZpbmUgYHN0YXRpYyBrZXlgXFxuU2VlOiBodHRwczovL2RhdGFjbGllbnQuaW8vcmVzdC9hcGkvRW50aXR5I2tleScsXG4gICAgICAgICk7XG4gICAgICByZXR1cm4gbmFtZTtcbiAgICB9O1xuICAgIGNvbnN0IGdldCA9XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgKGRvY3VtZW50IGFzIGFueSkuQ0xTX01BTkdMRSA/XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIGZ1bmN0aW9uICh0aGlzOiB7XG4gICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICB9KTogc3RyaW5nIHtcbiAgICAgICAgICAoZG9jdW1lbnQgYXMgYW55KS5DTFNfTUFOR0xFPy4odGhpcyk7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEVudGl0eU1peGluLCAna2V5Jywge1xuICAgICAgICAgICAgZ2V0OiBiYXNlR2V0LFxuICAgICAgICAgICAgc2V0LFxuICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gYmFzZUdldC5jYWxsKHRoaXMpO1xuICAgICAgICB9XG4gICAgICA6IGJhc2VHZXQ7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRW50aXR5TWl4aW4sICdrZXknLCB7XG4gICAgICBnZXQsXG4gICAgICBzZXQsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIEVudGl0eU1peGluIGFzIGFueTtcbn1cblxuZnVuY3Rpb24gaW5kZXhGcm9tUGFyYW1zPEkgZXh0ZW5kcyBzdHJpbmc+KFxuICBwYXJhbXM6IFJlYWRvbmx5PG9iamVjdD4sXG4gIGluZGV4ZXM/OiBSZWFkb25seTxJW10+LFxuKSB7XG4gIGlmICghaW5kZXhlcykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIGluZGV4ZXMuZmluZChpbmRleCA9PiBPYmplY3QuaGFzT3duKHBhcmFtcywgaW5kZXgpKTtcbn1cblxuLy8gcGFydCBvZiB0aGUgcmVhc29uIGZvciBwdWxsaW5nIHRoaXMgb3V0IGlzIHRoYXQgYWxsIGZ1bmN0aW9ucyB0aGF0IHRocm93IGFyZSBkZW9wdGltaXplZFxuZnVuY3Rpb24gdGhyb3dWYWxpZGF0aW9uRXJyb3IoZXJyb3JNZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgaWYgKGVycm9yTWVzc2FnZSkge1xuICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgKGVycm9yIGFzIGFueSkuc3RhdHVzID0gNDAwO1xuICAgIHRocm93IGVycm9yO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVudGl0eUNsYXNzPFRCYXNlIGV4dGVuZHMgQ29uc3RydWN0b3IgPSBhbnk+IHtcbiAgdG9KU09OKCk6IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgc2NoZW1hOiB7XG4gICAgICBbazogc3RyaW5nXTogU2NoZW1hO1xuICAgIH07XG4gICAga2V5OiBzdHJpbmc7XG4gIH07XG4gIC8qKiBEZWZpbmVzIG5lc3RlZCBlbnRpdGllc1xuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9yZXN0L2FwaS9FbnRpdHkjc2NoZW1hXG4gICAqL1xuICBzY2hlbWE6IHtcbiAgICBbazogc3RyaW5nXTogU2NoZW1hO1xuICB9O1xuICAvKiogUmV0dXJucyB0aGUgZ2xvYmFsbHkgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBzdGF0aWMgRW50aXR5XG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL3Jlc3QvYXBpL0VudGl0eSNrZXlcbiAgICovXG4gIGtleTogc3RyaW5nO1xuICAvKiogRGVmaW5lcyBpbmRleGVzIHRvIGVuYWJsZSBsb29rdXAgYnlcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vcmVzdC9hcGkvRW50aXR5I2luZGV4ZXNcbiAgICovXG4gIGluZGV4ZXM/OiByZWFkb25seSBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGVhY2ggRW50aXR5XG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL3Jlc3QvYXBpL0VudGl0eSNwa1xuICAgKiBAcGFyYW0gW3ZhbHVlXSBQT0pPIG9mIHRoZSBlbnRpdHkgb3Igc3Vic2V0IHVzZWRcbiAgICogQHBhcmFtIFtwYXJlbnRdIFdoZW4gbm9ybWFsaXppbmcsIHRoZSBvYmplY3Qgd2hpY2ggaW5jbHVkZWQgdGhlIGVudGl0eVxuICAgKiBAcGFyYW0gW2tleV0gV2hlbiBub3JtYWxpemluZywgdGhlIGtleSB3aGVyZSB0aGlzIGVudGl0eSB3YXMgZm91bmRcbiAgICogQHBhcmFtIFthcmdzXSAuLi5hcmdzIHNlbnQgdG8gRW5kcG9pbnRcbiAgICovXG4gIHBrPFxuICAgIFQgZXh0ZW5kcyAoYWJzdHJhY3QgbmV3IChcbiAgICAgIC4uLmFyZ3M6IGFueVtdXG4gICAgKSA9PiBJRW50aXR5SW5zdGFuY2UgJiBJbnN0YW5jZVR5cGU8VEJhc2U+KSAmXG4gICAgICBJRW50aXR5Q2xhc3MgJlxuICAgICAgVEJhc2UsXG4gID4oXG4gICAgdGhpczogVCxcbiAgICB2YWx1ZTogUGFydGlhbDxBYnN0cmFjdEluc3RhbmNlVHlwZTxUPj4sXG4gICAgcGFyZW50PzogYW55LFxuICAgIGtleT86IHN0cmluZyxcbiAgICBhcmdzPzogYW55W10sXG4gICk6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgLyoqIFJldHVybiB0cnVlIHRvIG1lcmdlIGluY29taW5nIGRhdGE7IGZhbHNlIGtlZXBzIGV4aXN0aW5nIGVudGl0eVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9zY2hlbWEuRW50aXR5I3Nob3VsZFVwZGF0ZVxuICAgKi9cbiAgc2hvdWxkVXBkYXRlKFxuICAgIGV4aXN0aW5nTWV0YToge1xuICAgICAgZGF0ZTogbnVtYmVyO1xuICAgICAgZmV0Y2hlZEF0OiBudW1iZXI7XG4gICAgfSxcbiAgICBpbmNvbWluZ01ldGE6IHtcbiAgICAgIGRhdGU6IG51bWJlcjtcbiAgICAgIGZldGNoZWRBdDogbnVtYmVyO1xuICAgIH0sXG4gICAgZXhpc3Rpbmc6IGFueSxcbiAgICBpbmNvbWluZzogYW55LFxuICApOiBib29sZWFuO1xuICAvKiogRGV0ZXJtaW5lcyB0aGUgb3JkZXIgb2YgaW5jb21pbmcgZW50aXR5IHZzIGVudGl0eSBhbHJlYWR5IGluIHN0b3JlXFxcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvc2NoZW1hLkVudGl0eSNzaG91bGRSZW9yZGVyXG4gICAqIEByZXR1cm5zIHRydWUgaWYgaW5jb21pbmcgZW50aXR5IHNob3VsZCBiZSBmaXJzdCBhcmd1bWVudCBvZiBtZXJnZSgpXG4gICAqL1xuICBzaG91bGRSZW9yZGVyKFxuICAgIGV4aXN0aW5nTWV0YTogeyBkYXRlOiBudW1iZXI7IGZldGNoZWRBdDogbnVtYmVyIH0sXG4gICAgaW5jb21pbmdNZXRhOiB7IGRhdGU6IG51bWJlcjsgZmV0Y2hlZEF0OiBudW1iZXIgfSxcbiAgICBleGlzdGluZzogYW55LFxuICAgIGluY29taW5nOiBhbnksXG4gICk6IGJvb2xlYW47XG4gIC8qKiBDcmVhdGVzIG5ldyBpbnN0YW5jZSBjb3B5aW5nIG92ZXIgZGVmaW5lZCB2YWx1ZXMgb2YgYXJndW1lbnRzXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL3NjaGVtYS5FbnRpdHkjbWVyZ2VcbiAgICovXG4gIG1lcmdlKGV4aXN0aW5nOiBhbnksIGluY29taW5nOiBhbnkpOiBhbnk7XG4gIC8qKiBSdW4gd2hlbiBhbiBleGlzdGluZyBlbnRpdHkgaXMgZm91bmQgaW4gdGhlIHN0b3JlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL3NjaGVtYS5FbnRpdHkjbWVyZ2VXaXRoU3RvcmVcbiAgICovXG4gIG1lcmdlV2l0aFN0b3JlKFxuICAgIGV4aXN0aW5nTWV0YToge1xuICAgICAgZGF0ZTogbnVtYmVyO1xuICAgICAgZmV0Y2hlZEF0OiBudW1iZXI7XG4gICAgfSxcbiAgICBpbmNvbWluZ01ldGE6IHtcbiAgICAgIGRhdGU6IG51bWJlcjtcbiAgICAgIGZldGNoZWRBdDogbnVtYmVyO1xuICAgIH0sXG4gICAgZXhpc3Rpbmc6IGFueSxcbiAgICBpbmNvbWluZzogYW55LFxuICApOiBhbnk7XG4gIC8qKiBSdW4gd2hlbiBhbiBleGlzdGluZyBlbnRpdHkgaXMgZm91bmQgaW4gdGhlIHN0b3JlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL3NjaGVtYS5FbnRpdHkjbWVyZ2VNZXRhV2l0aFN0b3JlXG4gICAqL1xuICBtZXJnZU1ldGFXaXRoU3RvcmUoXG4gICAgZXhpc3RpbmdNZXRhOiB7XG4gICAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgICAgIGRhdGU6IG51bWJlcjtcbiAgICAgIGZldGNoZWRBdDogbnVtYmVyO1xuICAgIH0sXG4gICAgaW5jb21pbmdNZXRhOiB7IGV4cGlyZXNBdDogbnVtYmVyOyBkYXRlOiBudW1iZXI7IGZldGNoZWRBdDogbnVtYmVyIH0sXG4gICAgZXhpc3Rpbmc6IGFueSxcbiAgICBpbmNvbWluZzogYW55LFxuICApOiB7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgZGF0ZTogbnVtYmVyO1xuICAgIGZldGNoZWRBdDogbnVtYmVyO1xuICB9O1xuICAvKiogRmFjdG9yeSBtZXRob2QgdG8gY29udmVydCBmcm9tIFBsYWluIEpTIE9iamVjdHMuXG4gICAqXG4gICAqIEBwYXJhbSBbcHJvcHNdIFBsYWluIE9iamVjdCBvZiBwcm9wZXJ0aWVzIHRvIGFzc2lnbi5cbiAgICovXG4gIGZyb21KUzxcbiAgICBUIGV4dGVuZHMgKGFic3RyYWN0IG5ldyAoXG4gICAgICAuLi5hcmdzOiBhbnlbXVxuICAgICkgPT4gSUVudGl0eUluc3RhbmNlICYgSW5zdGFuY2VUeXBlPFRCYXNlPikgJlxuICAgICAgSUVudGl0eUNsYXNzICZcbiAgICAgIFRCYXNlLFxuICA+KFxuICAgIHRoaXM6IFQsXG4gICAgcHJvcHM/OiBQYXJ0aWFsPEFic3RyYWN0SW5zdGFuY2VUeXBlPFQ+PixcbiAgKTogQWJzdHJhY3RJbnN0YW5jZVR5cGU8VD47XG4gIC8qKiBDYWxsZWQgd2hlbiBkZW5vcm1hbGl6aW5nIGFuIGVudGl0eSB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugd2hlbiAndmFsaWQnXG4gICAqXG4gICAqIEBwYXJhbSBbcHJvcHNdIFBsYWluIE9iamVjdCBvZiBwcm9wZXJ0aWVzIHRvIGFzc2lnbi5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vcmVzdC9hcGkvRW50aXR5I2NyZWF0ZUlmVmFsaWRcbiAgICovXG4gIGNyZWF0ZUlmVmFsaWQ8XG4gICAgVCBleHRlbmRzIChhYnN0cmFjdCBuZXcgKFxuICAgICAgLi4uYXJnczogYW55W11cbiAgICApID0+IElFbnRpdHlJbnN0YW5jZSAmIEluc3RhbmNlVHlwZTxUQmFzZT4pICZcbiAgICAgIElFbnRpdHlDbGFzcyAmXG4gICAgICBUQmFzZSxcbiAgPihcbiAgICB0aGlzOiBULFxuICAgIHByb3BzOiBQYXJ0aWFsPEFic3RyYWN0SW5zdGFuY2VUeXBlPFQ+PixcbiAgKTogQWJzdHJhY3RJbnN0YW5jZVR5cGU8VD4gfCB1bmRlZmluZWQ7XG4gIC8qKiBEbyBhbnkgdHJhbnNmb3JtYXRpb25zIHdoZW4gZmlyc3QgcmVjZWl2aW5nIGlucHV0XG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL3Jlc3QvYXBpL0VudGl0eSNwcm9jZXNzXG4gICAqL1xuICBwcm9jZXNzKGlucHV0OiBhbnksIHBhcmVudDogYW55LCBrZXk6IHN0cmluZyB8IHVuZGVmaW5lZCwgYXJnczogYW55W10pOiBhbnk7XG4gIG5vcm1hbGl6ZShcbiAgICBpbnB1dDogYW55LFxuICAgIHBhcmVudDogYW55LFxuICAgIGtleTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIHZpc2l0OiAoLi4uYXJnczogYW55KSA9PiBhbnksXG4gICAgYWRkRW50aXR5OiAoLi4uYXJnczogYW55KSA9PiBhbnksXG4gICAgdmlzaXRlZEVudGl0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICApOiBhbnk7XG4gIC8qKiBEbyBhbnkgdHJhbnNmb3JtYXRpb25zIHdoZW4gZmlyc3QgcmVjZWl2aW5nIGlucHV0XG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL3Jlc3QvYXBpL0VudGl0eSN2YWxpZGF0ZVxuICAgKi9cbiAgdmFsaWRhdGUocHJvY2Vzc2VkRW50aXR5OiBhbnkpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIC8qKiBCdWlsZHMgYSBrZXkgYWNjZXNzIHRoZSBlbnRpdHkgd2l0aG91dCBlbmRwb2ludCByZXN1bHRzXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL3Jlc3QvYXBpL0VudGl0eSNxdWVyeUtleVxuICAgKi9cbiAgcXVlcnlLZXkoXG4gICAgYXJnczogcmVhZG9ubHkgYW55W10sXG4gICAgcXVlcnlLZXk6IGFueSxcbiAgICBnZXRFbnRpdHk6IEdldEVudGl0eSxcbiAgICBnZXRJbmRleDogR2V0SW5kZXgsXG4gICk6IGFueTtcbiAgZGVub3JtYWxpemU8XG4gICAgVCBleHRlbmRzIChhYnN0cmFjdCBuZXcgKFxuICAgICAgLi4uYXJnczogYW55W11cbiAgICApID0+IElFbnRpdHlJbnN0YW5jZSAmIEluc3RhbmNlVHlwZTxUQmFzZT4pICZcbiAgICAgIElFbnRpdHlDbGFzcyAmXG4gICAgICBUQmFzZSxcbiAgPihcbiAgICB0aGlzOiBULFxuICAgIGlucHV0OiBhbnksXG4gICAgYXJnczogcmVhZG9ubHkgYW55W10sXG4gICAgdW52aXNpdDogKGlucHV0OiBhbnksIHNjaGVtYTogYW55KSA9PiBhbnksXG4gICk6IEFic3RyYWN0SW5zdGFuY2VUeXBlPFQ+O1xuICAvKiogQWxsIGluc3RhbmNlIGRlZmF1bHRzIHNldCAqL1xuICByZWFkb25seSBkZWZhdWx0czogYW55O1xuICAvL3NldChlbnRpdHk6IGFueSwga2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkO1xufVxuZXhwb3J0IGludGVyZmFjZSBJRW50aXR5SW5zdGFuY2Uge1xuICAvKipcbiAgICogQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgZWFjaCBFbnRpdHlcbiAgICpcbiAgICogQHBhcmFtIFtwYXJlbnRdIFdoZW4gbm9ybWFsaXppbmcsIHRoZSBvYmplY3Qgd2hpY2ggaW5jbHVkZWQgdGhlIGVudGl0eVxuICAgKiBAcGFyYW0gW2tleV0gV2hlbiBub3JtYWxpemluZywgdGhlIGtleSB3aGVyZSB0aGlzIGVudGl0eSB3YXMgZm91bmRcbiAgICogQHBhcmFtIFthcmdzXSAuLi5hcmdzIHNlbnQgdG8gRW5kcG9pbnRcbiAgICovXG4gIHBrKFxuICAgIHBhcmVudD86IGFueSxcbiAgICBrZXk/OiBzdHJpbmcsXG4gICAgYXJncz86IHJlYWRvbmx5IGFueVtdLFxuICApOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHF1ZXJ5S2V5Q2FuZGlkYXRlKFxuICBzY2hlbWE6IGFueSxcbiAgYXJnczogcmVhZG9ubHkgYW55W10sXG4gIGdldEluZGV4OiBHZXRJbmRleCxcbikge1xuICBpZiAoWydzdHJpbmcnLCAnbnVtYmVyJ10uaW5jbHVkZXModHlwZW9mIGFyZ3NbMF0pKSB7XG4gICAgcmV0dXJuIGAke2FyZ3NbMF19YDtcbiAgfVxuICBjb25zdCBpZCA9IHNjaGVtYS5wayhhcmdzWzBdLCB1bmRlZmluZWQsICcnLCBhcmdzKTtcbiAgLy8gV2FzIGFibGUgdG8gaW5mZXIgdGhlIGVudGl0eSdzIHByaW1hcnkga2V5IGZyb20gcGFyYW1zXG4gIGlmIChpZCAhPT0gdW5kZWZpbmVkICYmIGlkICE9PSAnJykgcmV0dXJuIGlkO1xuICAvLyBub3cgYXR0ZW1wdCBsb29rdXAgaW4gaW5kZXhlc1xuICBjb25zdCBpbmRleE5hbWUgPSBpbmRleEZyb21QYXJhbXMoYXJnc1swXSwgc2NoZW1hLmluZGV4ZXMpO1xuICBpZiAoIWluZGV4TmFtZSkgcmV0dXJuO1xuICBjb25zdCB2YWx1ZSA9IChhcmdzWzBdIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW2luZGV4TmFtZV07XG4gIHJldHVybiBnZXRJbmRleChzY2hlbWEua2V5LCBpbmRleE5hbWUsIHZhbHVlKVt2YWx1ZV07XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQSxTQUFTQSxNQUFNLFFBQVEsY0FBYzs7QUFnQnJDOztBQXNDQSxlQUFlLFNBQVNDLFlBQVlBLENBQ2xDQyxJQUFXLEVBQ1hDLE9BQTJDLEdBQUcsQ0FBQyxDQUFDLEVBQ2hEO0VBQ0E7QUFDRjtBQUNBO0FBQ0E7RUFDRSxNQUFlQyxXQUFXLFNBQVNGLElBQUksQ0FBQztJQUN0QyxPQUFPRyxRQUFRQSxDQUFBLEVBQUc7TUFDaEIsT0FBTyxJQUFJLENBQUNDLEdBQUc7SUFDakI7SUFFQSxPQUFPQyxNQUFNQSxDQUFBLEVBQUc7TUFDZCxPQUFPO1FBQ0xDLElBQUksRUFBRSxJQUFJLENBQUNBLElBQUk7UUFDZkMsTUFBTSxFQUFFLElBQUksQ0FBQ0EsTUFBTTtRQUNuQkgsR0FBRyxFQUFFLElBQUksQ0FBQ0E7TUFDWixDQUFDO0lBQ0g7O0lBRUE7O0lBR0E7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7SUFPSTs7SUFFQTs7SUFFQTs7SUFHQTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDSSxPQUFPSSxFQUFFQSxDQUVQQyxLQUF1QyxFQUN2Q0MsTUFBWSxFQUNaTixHQUFZLEVBQ1pPLElBQXFCLEVBQ1E7TUFDN0IsT0FBTyxJQUFJLENBQUNDLFNBQVMsQ0FBQ0osRUFBRSxDQUFDSyxJQUFJLENBQUNKLEtBQUssRUFBRUMsTUFBTSxFQUFFTixHQUFHLEVBQUVPLElBQUksQ0FBQztJQUN6RDs7SUFFQTtBQUNKO0FBQ0E7QUFDQTtJQUNJLE9BQU9HLFlBQVlBLENBQ2pCQyxZQUFpRCxFQUNqREMsWUFBaUQsRUFDakRDLFFBQWEsRUFDYkMsUUFBYSxFQUNiO01BQ0EsT0FBTyxJQUFJO0lBQ2I7O0lBRUE7QUFDSjtBQUNBO0FBQ0E7QUFDQTtJQUNJ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 |
export {}; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL1NuYXBzaG90SW50ZXJmYWNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRXJyb3JUeXBlcyB9IGZyb20gJy4vRXJyb3JUeXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEVuZHBvaW50SW50ZXJmYWNlLCBRdWVyeWFibGUgfSBmcm9tICcuL2ludGVyZmFjZS5qcyc7XG5pbXBvcnQgdHlwZSB7IERlbm9ybWFsaXplTnVsbGFibGUsIFNjaGVtYUFyZ3MgfSBmcm9tICcuL25vcm1hbC5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU25hcHNob3RJbnRlcmZhY2Uge1xuICAvKipcbiAgICogR2V0cyB0aGUgKGdsb2JhbGx5IHJlZmVyZW50aWFsbHkgc3RhYmxlKSByZXNwb25zZSBmb3IgYSBnaXZlbiBlbmRwb2ludC9hcmdzIHBhaXIgZnJvbSBzdGF0ZSBnaXZlbi5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvU25hcHNob3QjZ2V0UmVzcG9uc2VcbiAgICovXG4gIGdldFJlc3BvbnNlPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgW251bGxdXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPEVbJ3NjaGVtYSddPjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1c0ludGVyZmFjZTtcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgfTtcblxuICBnZXRSZXNwb25zZTxFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XVxuICApOiB7XG4gICAgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxFWydzY2hlbWEnXT47XG4gICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXNJbnRlcmZhY2U7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gIH07XG5cbiAgZ2V0UmVzcG9uc2U8XG4gICAgRSBleHRlbmRzIFBpY2s8RW5kcG9pbnRJbnRlcmZhY2UsICdrZXknIHwgJ3NjaGVtYScgfCAnaW52YWxpZElmU3RhbGUnPixcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPEVbJ3NjaGVtYSddPjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1c0ludGVyZmFjZTtcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgfTtcblxuICAvKiogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvU25hcHNob3QjZ2V0RXJyb3IgKi9cbiAgZ2V0RXJyb3I6IDxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleSc+LFxuICAgIEFyZ3MgZXh0ZW5kcyByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dLFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IEFyZ3NcbiAgKSA9PiBFcnJvclR5cGVzIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZWQgbWVtb2l6ZWQgdmFsdWUgZm9yIGFueSBRdWVyYWJsZSBzY2hlbWFcbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvU25hcHNob3QjZ2V0XG4gICAqL1xuICBnZXQ8UyBleHRlbmRzIFF1ZXJ5YWJsZT4oXG4gICAgc2NoZW1hOiBTLFxuICAgIC4uLmFyZ3M6IFNjaGVtYUFyZ3M8Uz5cbiAgKTogRGVub3JtYWxpemVOdWxsYWJsZTxTPiB8IHVuZGVmaW5lZDtcblxuICByZWFkb25seSBmZXRjaGVkQXQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgYWJvcnQ6IEVycm9yO1xufVxuXG4vLyBsb29zZXIgdmVyc2lvbiB0byBhbGxvdyBmb3IgY3Jvc3MtcGFja2FnZSB2ZXJzaW9uIGNvbXBhdGliaWxpdHlcbmV4cG9ydCB0eXBlIEV4cGlyeVN0YXR1c0ludGVyZmFjZSA9IDEgfCAyIHwgMztcbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL1NuYXBzaG90SW50ZXJmYWNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRXJyb3JUeXBlcyB9IGZyb20gJy4vRXJyb3JUeXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEVuZHBvaW50SW50ZXJmYWNlLCBRdWVyeWFibGUgfSBmcm9tICcuL2ludGVyZmFjZS5qcyc7XG5pbXBvcnQgdHlwZSB7IERlbm9ybWFsaXplTnVsbGFibGUsIFNjaGVtYUFyZ3MgfSBmcm9tICcuL25vcm1hbC5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU25hcHNob3RJbnRlcmZhY2Uge1xuICByZWFkb25seSBmZXRjaGVkQXQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgYWJvcnQ6IEVycm9yO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSAoZ2xvYmFsbHkgcmVmZXJlbnRpYWxseSBzdGFibGUpIHJlc3BvbnNlIGZvciBhIGdpdmVuIGVuZHBvaW50L2FyZ3MgcGFpciBmcm9tIHN0YXRlIGdpdmVuLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9TbmFwc2hvdCNnZXRSZXNwb25zZVxuICAgKi9cbiAgZ2V0UmVzcG9uc2U8RSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbbnVsbF1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzSW50ZXJmYWNlO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9O1xuXG4gIGdldFJlc3BvbnNlPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPEVbJ3NjaGVtYSddPjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1c0ludGVyZmFjZTtcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgfTtcblxuICBnZXRSZXNwb25zZTxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleScgfCAnc2NoZW1hJyB8ICdpbnZhbGlkSWZTdGFsZSc+LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEVbJ2tleSddPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzSW50ZXJmYWNlO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9O1xuXG4gIC8qKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9TbmFwc2hvdCNnZXRFcnJvciAqL1xuICBnZXRFcnJvcjxFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XSB8IHJlYWRvbmx5IFtudWxsXVxuICApOiBFcnJvclR5cGVzIHwgdW5kZWZpbmVkO1xuXG4gIGdldEVycm9yPEUgZXh0ZW5kcyBQaWNrPEVuZHBvaW50SW50ZXJmYWNlLCAna2V5Jz4+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEVbJ2tleSddPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKTogRXJyb3JUeXBlcyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogUmV0cmlldmVkIG1lbW9pemVkIHZhbHVlIGZvciBhbnkgUXVlcmFibGUgc2NoZW1hXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL1NuYXBzaG90I2dldFxuICAgKi9cbiAgZ2V0PFMgZXh0ZW5kcyBRdWVyeWFibGU+KFxuICAgIHNjaGVtYTogUyxcbiAgICAuLi5hcmdzOiBTY2hlbWFBcmdzPFM+XG4gICk6IERlbm9ybWFsaXplTnVsbGFibGU8Uz4gfCB1bmRlZmluZWQ7XG59XG5cbi8vIGxvb3NlciB2ZXJzaW9uIHRvIGFsbG93IGZvciBjcm9zcy1wYWNrYWdlIHZlcnNpb24gY29tcGF0aWJpbGl0eVxuZXhwb3J0IHR5cGUgRXhwaXJ5U3RhdHVzSW50ZXJmYWNlID0gMSB8IDIgfCAzO1xuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119 |
@@ -5,2 +5,4 @@ import type { ErrorTypes } from './ErrorTypes.js'; | ||
export interface SnapshotInterface { | ||
readonly fetchedAt: number; | ||
readonly abort: Error; | ||
/** | ||
@@ -26,3 +28,4 @@ * Gets the (globally referentially stable) response for a given endpoint/args pair from state given. | ||
/** @see https://dataclient.io/docs/api/Snapshot#getError */ | ||
getError: <E extends Pick<EndpointInterface, 'key'>, Args extends readonly [...Parameters<E['key']>]>(endpoint: E, ...args: Args) => ErrorTypes | undefined; | ||
getError<E extends EndpointInterface>(endpoint: E, ...args: readonly [...Parameters<E>] | readonly [null]): ErrorTypes | undefined; | ||
getError<E extends Pick<EndpointInterface, 'key'>>(endpoint: E, ...args: readonly [...Parameters<E['key']>] | readonly [null]): ErrorTypes | undefined; | ||
/** | ||
@@ -33,6 +36,4 @@ * Retrieved memoized value for any Querable schema | ||
get<S extends Queryable>(schema: S, ...args: SchemaArgs<S>): DenormalizeNullable<S> | undefined; | ||
readonly fetchedAt: number; | ||
readonly abort: Error; | ||
} | ||
export type ExpiryStatusInterface = 1 | 2 | 3; | ||
//# sourceMappingURL=SnapshotInterface.d.ts.map |
export {}; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL1NuYXBzaG90SW50ZXJmYWNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRXJyb3JUeXBlcyB9IGZyb20gJy4vRXJyb3JUeXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEVuZHBvaW50SW50ZXJmYWNlLCBRdWVyeWFibGUgfSBmcm9tICcuL2ludGVyZmFjZS5qcyc7XG5pbXBvcnQgdHlwZSB7IERlbm9ybWFsaXplTnVsbGFibGUsIFNjaGVtYUFyZ3MgfSBmcm9tICcuL25vcm1hbC5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU25hcHNob3RJbnRlcmZhY2Uge1xuICAvKipcbiAgICogR2V0cyB0aGUgKGdsb2JhbGx5IHJlZmVyZW50aWFsbHkgc3RhYmxlKSByZXNwb25zZSBmb3IgYSBnaXZlbiBlbmRwb2ludC9hcmdzIHBhaXIgZnJvbSBzdGF0ZSBnaXZlbi5cbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvU25hcHNob3QjZ2V0UmVzcG9uc2VcbiAgICovXG4gIGdldFJlc3BvbnNlPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgW251bGxdXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPEVbJ3NjaGVtYSddPjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1c0ludGVyZmFjZTtcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgfTtcblxuICBnZXRSZXNwb25zZTxFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XVxuICApOiB7XG4gICAgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxFWydzY2hlbWEnXT47XG4gICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXNJbnRlcmZhY2U7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gIH07XG5cbiAgZ2V0UmVzcG9uc2U8XG4gICAgRSBleHRlbmRzIFBpY2s8RW5kcG9pbnRJbnRlcmZhY2UsICdrZXknIHwgJ3NjaGVtYScgfCAnaW52YWxpZElmU3RhbGUnPixcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPEVbJ3NjaGVtYSddPjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1c0ludGVyZmFjZTtcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgfTtcblxuICAvKiogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvU25hcHNob3QjZ2V0RXJyb3IgKi9cbiAgZ2V0RXJyb3I6IDxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleSc+LFxuICAgIEFyZ3MgZXh0ZW5kcyByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dLFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IEFyZ3NcbiAgKSA9PiBFcnJvclR5cGVzIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZWQgbWVtb2l6ZWQgdmFsdWUgZm9yIGFueSBRdWVyYWJsZSBzY2hlbWFcbiAgICogQHNlZSBodHRwczovL2RhdGFjbGllbnQuaW8vZG9jcy9hcGkvU25hcHNob3QjZ2V0XG4gICAqL1xuICBnZXQ8UyBleHRlbmRzIFF1ZXJ5YWJsZT4oXG4gICAgc2NoZW1hOiBTLFxuICAgIC4uLmFyZ3M6IFNjaGVtYUFyZ3M8Uz5cbiAgKTogRGVub3JtYWxpemVOdWxsYWJsZTxTPiB8IHVuZGVmaW5lZDtcblxuICByZWFkb25seSBmZXRjaGVkQXQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgYWJvcnQ6IEVycm9yO1xufVxuXG4vLyBsb29zZXIgdmVyc2lvbiB0byBhbGxvdyBmb3IgY3Jvc3MtcGFja2FnZSB2ZXJzaW9uIGNvbXBhdGliaWxpdHlcbmV4cG9ydCB0eXBlIEV4cGlyeVN0YXR1c0ludGVyZmFjZSA9IDEgfCAyIHwgMztcbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL1NuYXBzaG90SW50ZXJmYWNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRXJyb3JUeXBlcyB9IGZyb20gJy4vRXJyb3JUeXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEVuZHBvaW50SW50ZXJmYWNlLCBRdWVyeWFibGUgfSBmcm9tICcuL2ludGVyZmFjZS5qcyc7XG5pbXBvcnQgdHlwZSB7IERlbm9ybWFsaXplTnVsbGFibGUsIFNjaGVtYUFyZ3MgfSBmcm9tICcuL25vcm1hbC5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU25hcHNob3RJbnRlcmZhY2Uge1xuICByZWFkb25seSBmZXRjaGVkQXQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgYWJvcnQ6IEVycm9yO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSAoZ2xvYmFsbHkgcmVmZXJlbnRpYWxseSBzdGFibGUpIHJlc3BvbnNlIGZvciBhIGdpdmVuIGVuZHBvaW50L2FyZ3MgcGFpciBmcm9tIHN0YXRlIGdpdmVuLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9TbmFwc2hvdCNnZXRSZXNwb25zZVxuICAgKi9cbiAgZ2V0UmVzcG9uc2U8RSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbbnVsbF1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzSW50ZXJmYWNlO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9O1xuXG4gIGdldFJlc3BvbnNlPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dXG4gICk6IHtcbiAgICBkYXRhOiBEZW5vcm1hbGl6ZU51bGxhYmxlPEVbJ3NjaGVtYSddPjtcbiAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1c0ludGVyZmFjZTtcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgfTtcblxuICBnZXRSZXNwb25zZTxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleScgfCAnc2NoZW1hJyB8ICdpbnZhbGlkSWZTdGFsZSc+LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEVbJ2tleSddPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzSW50ZXJmYWNlO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9O1xuXG4gIC8qKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9TbmFwc2hvdCNnZXRFcnJvciAqL1xuICBnZXRFcnJvcjxFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XSB8IHJlYWRvbmx5IFtudWxsXVxuICApOiBFcnJvclR5cGVzIHwgdW5kZWZpbmVkO1xuXG4gIGdldEVycm9yPEUgZXh0ZW5kcyBQaWNrPEVuZHBvaW50SW50ZXJmYWNlLCAna2V5Jz4+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEVbJ2tleSddPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKTogRXJyb3JUeXBlcyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogUmV0cmlldmVkIG1lbW9pemVkIHZhbHVlIGZvciBhbnkgUXVlcmFibGUgc2NoZW1hXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhY2xpZW50LmlvL2RvY3MvYXBpL1NuYXBzaG90I2dldFxuICAgKi9cbiAgZ2V0PFMgZXh0ZW5kcyBRdWVyeWFibGU+KFxuICAgIHNjaGVtYTogUyxcbiAgICAuLi5hcmdzOiBTY2hlbWFBcmdzPFM+XG4gICk6IERlbm9ybWFsaXplTnVsbGFibGU8Uz4gfCB1bmRlZmluZWQ7XG59XG5cbi8vIGxvb3NlciB2ZXJzaW9uIHRvIGFsbG93IGZvciBjcm9zcy1wYWNrYWdlIHZlcnNpb24gY29tcGF0aWJpbGl0eVxuZXhwb3J0IHR5cGUgRXhwaXJ5U3RhdHVzSW50ZXJmYWNlID0gMSB8IDIgfCAzO1xuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119 |
{ | ||
"name": "@data-client/endpoint", | ||
"version": "0.11.4", | ||
"version": "0.12.3", | ||
"description": "Declarative Network Interface Definitions", | ||
@@ -120,2 +120,3 @@ "homepage": "https://dataclient.io/docs/guides/custom-protocol", | ||
"author": "Nathaniel Tucker <me@ntucker.me> (https://github.com/ntucker)", | ||
"funding": "https://github.com/sponsors/ntucker", | ||
"license": "Apache-2.0", | ||
@@ -122,0 +123,0 @@ "repository": { |
@@ -57,3 +57,5 @@ // eslint-env jest | ||
}); | ||
beforeEach(() => (warnSpy = jest.spyOn(console, 'warn'))); | ||
beforeEach(() => | ||
(warnSpy = jest.spyOn(console, 'warn')).mockImplementation(() => {}), | ||
); | ||
@@ -60,0 +62,0 @@ test('should throw a custom error if data loads with string unexpected value', () => { |
@@ -63,3 +63,5 @@ // eslint-env jest | ||
}); | ||
beforeEach(() => (warnSpy = jest.spyOn(console, 'warn'))); | ||
beforeEach(() => | ||
(warnSpy = jest.spyOn(console, 'warn')).mockImplementation(() => {}), | ||
); | ||
@@ -66,0 +68,0 @@ test('normalizes an entity', () => { |
@@ -303,3 +303,5 @@ // eslint-env jest | ||
}); | ||
beforeEach(() => (warnSpy = jest.spyOn(console, 'warn'))); | ||
beforeEach(() => | ||
(warnSpy = jest.spyOn(console, 'warn')).mockImplementation(() => {}), | ||
); | ||
@@ -306,0 +308,0 @@ test('normalizes an entity', () => { |
@@ -20,2 +20,9 @@ // eslint-env jest | ||
}); | ||
let warnSpy; | ||
afterEach(() => { | ||
warnSpy.mockRestore(); | ||
}); | ||
beforeEach(() => | ||
(warnSpy = jest.spyOn(console, 'warn')).mockImplementation(() => {}), | ||
); | ||
@@ -64,2 +71,3 @@ describe(`${schema.Union.name} normalization`, () => { | ||
expect(normalize({ id: '3', notdefined: 'yep' }, union)).toMatchSnapshot(); | ||
expect(warnSpy.mock.calls).toMatchSnapshot(); | ||
}); | ||
@@ -340,2 +348,3 @@ }); | ||
).toMatchSnapshot(); | ||
expect(warnSpy.mock.calls).toMatchSnapshot(); | ||
}); | ||
@@ -357,2 +366,3 @@ | ||
).toMatchSnapshot(); | ||
expect(warnSpy.mock.calls).toMatchSnapshot(); | ||
}); | ||
@@ -359,0 +369,0 @@ |
@@ -30,2 +30,10 @@ // eslint-env jest | ||
describe(`${schema.Values.name} normalization`, () => { | ||
let warnSpy; | ||
afterEach(() => { | ||
warnSpy.mockRestore(); | ||
}); | ||
beforeEach(() => | ||
(warnSpy = jest.spyOn(console, 'warn')).mockImplementation(() => {}), | ||
); | ||
test('normalizes without schemaAttribute', () => { | ||
@@ -93,2 +101,3 @@ class MyEntity extends IDEntity { | ||
).toMatchSnapshot(); | ||
expect(warnSpy.mock.calls).toMatchSnapshot(); | ||
}); | ||
@@ -95,0 +104,0 @@ |
@@ -6,2 +6,5 @@ import type { ErrorTypes } from './ErrorTypes.js'; | ||
export interface SnapshotInterface { | ||
readonly fetchedAt: number; | ||
readonly abort: Error; | ||
/** | ||
@@ -41,10 +44,12 @@ * Gets the (globally referentially stable) response for a given endpoint/args pair from state given. | ||
/** @see https://dataclient.io/docs/api/Snapshot#getError */ | ||
getError: < | ||
E extends Pick<EndpointInterface, 'key'>, | ||
Args extends readonly [...Parameters<E['key']>], | ||
>( | ||
getError<E extends EndpointInterface>( | ||
endpoint: E, | ||
...args: Args | ||
) => ErrorTypes | undefined; | ||
...args: readonly [...Parameters<E>] | readonly [null] | ||
): ErrorTypes | undefined; | ||
getError<E extends Pick<EndpointInterface, 'key'>>( | ||
endpoint: E, | ||
...args: readonly [...Parameters<E['key']>] | readonly [null] | ||
): ErrorTypes | undefined; | ||
/** | ||
@@ -58,5 +63,2 @@ * Retrieved memoized value for any Querable schema | ||
): DenormalizeNullable<S> | undefined; | ||
readonly fetchedAt: number; | ||
readonly abort: Error; | ||
} | ||
@@ -63,0 +65,0 @@ |
@@ -5,2 +5,4 @@ import { ErrorTypes } from './ErrorTypes.js'; | ||
export interface SnapshotInterface { | ||
readonly fetchedAt: number; | ||
readonly abort: Error; | ||
/** | ||
@@ -34,5 +36,12 @@ * Gets the (globally referentially stable) response for a given endpoint/args pair from state given. | ||
/** @see https://dataclient.io/docs/api/Snapshot#getError */ | ||
getError: <E extends Pick<EndpointInterface, 'key'>, Args extends readonly [ | ||
getError<E extends EndpointInterface>(endpoint: E, ...args: readonly [ | ||
...Parameters<E> | ||
] | readonly [ | ||
null | ||
]): ErrorTypes | undefined; | ||
getError<E extends Pick<EndpointInterface, 'key'>>(endpoint: E, ...args: readonly [ | ||
...Parameters<E['key']> | ||
]>(endpoint: E, ...args: Args) => ErrorTypes | undefined; | ||
] | readonly [ | ||
null | ||
]): ErrorTypes | undefined; | ||
/** | ||
@@ -43,6 +52,4 @@ * Retrieved memoized value for any Querable schema | ||
get<S extends Queryable>(schema: S, ...args: SchemaArgs<S>): DenormalizeNullable<S> | undefined; | ||
readonly fetchedAt: number; | ||
readonly abort: Error; | ||
} | ||
export type ExpiryStatusInterface = 1 | 2 | 3; | ||
//# sourceMappingURL=SnapshotInterface.d.ts.map |
@@ -5,2 +5,4 @@ import type { ErrorTypes } from './ErrorTypes.js'; | ||
export interface SnapshotInterface { | ||
readonly fetchedAt: number; | ||
readonly abort: Error; | ||
/** | ||
@@ -34,5 +36,12 @@ * Gets the (globally referentially stable) response for a given endpoint/args pair from state given. | ||
/** @see https://dataclient.io/docs/api/Snapshot#getError */ | ||
getError: <E extends Pick<EndpointInterface, 'key'>, Args extends readonly [ | ||
getError<E extends EndpointInterface>(endpoint: E, ...args: readonly [ | ||
...Parameters<E> | ||
] | readonly [ | ||
null | ||
]): ErrorTypes | undefined; | ||
getError<E extends Pick<EndpointInterface, 'key'>>(endpoint: E, ...args: readonly [ | ||
...Parameters<E['key']> | ||
]>(endpoint: E, ...args: Args) => ErrorTypes | undefined; | ||
] | readonly [ | ||
null | ||
]): ErrorTypes | undefined; | ||
/** | ||
@@ -43,6 +52,4 @@ * Retrieved memoized value for any Querable schema | ||
get<S extends Queryable>(schema: S, ...args: SchemaArgs<S>): DenormalizeNullable<S> | undefined; | ||
readonly fetchedAt: number; | ||
readonly abort: Error; | ||
} | ||
export type ExpiryStatusInterface = 1 | 2 | 3; | ||
//# sourceMappingURL=SnapshotInterface.d.ts.map |
@@ -5,2 +5,4 @@ import type { ErrorTypes } from './ErrorTypes.js'; | ||
export interface SnapshotInterface { | ||
readonly fetchedAt: number; | ||
readonly abort: Error; | ||
/** | ||
@@ -34,5 +36,12 @@ * Gets the (globally referentially stable) response for a given endpoint/args pair from state given. | ||
/** @see https://dataclient.io/docs/api/Snapshot#getError */ | ||
getError: <E extends Pick<EndpointInterface, 'key'>, Args extends readonly [ | ||
getError<E extends EndpointInterface>(endpoint: E, ...args: readonly [ | ||
...Parameters<E> | ||
] | readonly [ | ||
null | ||
]): ErrorTypes | undefined; | ||
getError<E extends Pick<EndpointInterface, 'key'>>(endpoint: E, ...args: readonly [ | ||
...Parameters<E['key']> | ||
]>(endpoint: E, ...args: Args) => ErrorTypes | undefined; | ||
] | readonly [ | ||
null | ||
]): ErrorTypes | undefined; | ||
/** | ||
@@ -43,6 +52,4 @@ * Retrieved memoized value for any Querable schema | ||
get<S extends Queryable>(schema: S, ...args: SchemaArgs<S>): DenormalizeNullable<S> | undefined; | ||
readonly fetchedAt: number; | ||
readonly abort: Error; | ||
} | ||
export type ExpiryStatusInterface = 1 | 2 | 3; | ||
//# sourceMappingURL=SnapshotInterface.d.ts.map |
@@ -5,2 +5,4 @@ import type { ErrorTypes } from './ErrorTypes.js'; | ||
export interface SnapshotInterface { | ||
readonly fetchedAt: number; | ||
readonly abort: Error; | ||
/** | ||
@@ -34,5 +36,12 @@ * Gets the (globally referentially stable) response for a given endpoint/args pair from state given. | ||
/** @see https://dataclient.io/docs/api/Snapshot#getError */ | ||
getError: <E extends Pick<EndpointInterface, 'key'>, Args extends readonly [ | ||
getError<E extends EndpointInterface>(endpoint: E, ...args: readonly [ | ||
...Parameters<E> | ||
] | readonly [ | ||
null | ||
]): ErrorTypes | undefined; | ||
getError<E extends Pick<EndpointInterface, 'key'>>(endpoint: E, ...args: readonly [ | ||
...Parameters<E['key']> | ||
]>(endpoint: E, ...args: Args) => ErrorTypes | undefined; | ||
] | readonly [ | ||
null | ||
]): ErrorTypes | undefined; | ||
/** | ||
@@ -43,6 +52,4 @@ * Retrieved memoized value for any Querable schema | ||
get<S extends Queryable>(schema: S, ...args: SchemaArgs<S>): DenormalizeNullable<S> | undefined; | ||
readonly fetchedAt: number; | ||
readonly abort: Error; | ||
} | ||
export type ExpiryStatusInterface = 1 | 2 | 3; | ||
//# sourceMappingURL=SnapshotInterface.d.ts.map |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
1222327
18390