@magic-xpa/engine 4.1000.0-dev000.0 → 4.1000.0-dev4100.100

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.
@@ -99,7 +99,7 @@ export class MirrorPrmMap extends PrmMap {
99
99
  while (this.mirrorFromXML(parser.getNextTag(), parser)) {
100
100
  }
101
101
  }
102
- RestoreGlobalParams(xml) {
102
+ RestoreParams(xml) {
103
103
  let parser = new XmlParser(xml);
104
104
  while (this.mirrorFromXML(parser.getNextTag(), parser)) {
105
105
  }
@@ -148,4 +148,4 @@ export class MirrorPrmMap extends PrmMap {
148
148
  }
149
149
  }
150
150
  }
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJtTWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy91dGlsL1BybU1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFLcEQsTUFBTSxPQUFPLE1BQU07SUE2QmpCO1FBNUJBLFdBQU0sR0FBdUIsSUFBSSxDQUFDO1FBNkI5QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksVUFBVSxFQUFVLENBQUM7SUFDM0MsQ0FBQztJQXZCUyxRQUFRLENBQUMsQ0FBUztRQUMxQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUM1QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDOztZQUUvQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBSUQsUUFBUSxDQUFDLENBQVMsRUFBRSxDQUFTO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBSUQsTUFBTSxDQUFDLENBQVM7UUFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixDQUFDO0NBT0Y7QUFLRCxNQUFNLE9BQU8sWUFBd0MsU0FBUSxNQUFjO0lBWXpFLFlBQVksSUFBc0I7UUFDaEMsS0FBSyxFQUFFLENBQUM7UUFWQSxZQUFPLEdBQWlCLElB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QUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaWN0aW9uYXJ5LCBMaXN0LCBTdHJpbmdCdWlsZGVyIH0gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5pbXBvcnQgeyBMb2dnZXIsIFhNTENvbnN0YW50cywgWG1sUGFyc2VyIH0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7IENvbnN0SW50ZXJmYWNlIH0gZnJvbSAnLi4vQ29uc3RJbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBJTWlycm9yWE1MIH0gZnJvbSAnLi9JTWlycm9yWE1MJztcclxuaW1wb3J0IHtQYXJhbVBhcnNlUmVzdWx0fSBmcm9tIFwiLi9QYXJhbVBhcnNlUmVzdWx0XCI7XHJcblxyXG5cclxuLy8vIDxzdW1tYXJ5PiBUaGlzIGNsYXNzIG1hbmFnZXMgYSBkaWN0aW9uYXJ5IG9mIHZhcmlhYmxlcy4gdGhlbiBuYW1lIG9mIHRoZSB2YXJpYWJsZSBpcyB0aGUga2V5XHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBQcm1NYXA8VFZhbHVlIGV4dGVuZHMgSU1pcnJvclhNTD57XHJcbiAgdmFsdWVzOiBEaWN0aW9uYXJ5PFRWYWx1ZT4gPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+IGdldCB0aGUgdmFsdWVcclxuICAvLy9cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInNcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgcHJvdGVjdGVkIGdldHZhbHVlKHM6IHN0cmluZyk6IFRWYWx1ZSB7XHJcbiAgICBpZiAodGhpcy52YWx1ZXMuQ29udGFpbnNLZXkocykpXHJcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlcy5nZXRfSXRlbShzKTtcclxuICAgIGVsc2VcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IHNldFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc2V0VmFsdWUoczogc3RyaW5nLCB2OiBUVmFsdWUpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWVzLnNldF9JdGVtKHMsIHYpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiByZW1vdmUgYW4gZW50cnlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHJlbW92ZShzOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWVzLlJlbW92ZShzKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gQ1RPUlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgIHRoaXMudmFsdWVzID0gbmV3IERpY3Rpb25hcnk8VFZhbHVlPigpO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIDxzdW1tYXJ5PiBUaGlzIGNsYXNzIG1hbmFnZXMgdGhlIG1pcnJvcmluZy4gSXQgaG9sZHMgYSBsaXN0IG9mIGNoYW5nZWQgdmFsdWVzIHRoYXQgbmVlZCB0byBiZVxyXG4vLy8gbWlycm9yZWQsIGFuZCBtYW5hZ2VzIHRoZSB3cml0aW5nIG9mIHRob3NlIHZhbHVlcyB0byBhbiBYTUwgYnVmZmVyXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBNaXJyb3JQcm1NYXA8VFZhbHVlIGV4dGVuZHMgSU1pcnJvclhNTD4gZXh0ZW5kcyBQcm1NYXA8VFZhbHVlPiB7XHJcblxyXG4gIC8vIExpc3Qgb2YgY2hhbmdlZCB2YXJpYWJsZXNcclxuICBwcm90ZWN0ZWQgY2hhbmdlczogTGlzdDxzdHJpbmc+ID0gbnVsbDtcclxuXHJcbiAgLy8gVHlwZSBvZiB2YXJpYWJsZXMgaW4gdGhlIHRhYmxlIC0gdXNlIGFzIGFuIGlkIGluIHRoZSBYTUwgYnVmZmVyXHJcbiAgcHJvdGVjdGVkICBtaXJyb3JlZElEOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIHR5cGUgO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+IENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGNvbnN0cnVjdG9yKHR5cGU6IG5ldyAoKSA9PiBUVmFsdWUpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xyXG4gICAgdGhpcy5jaGFuZ2VzID0gbmV3IExpc3Q8c3RyaW5nPigpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBjcmVhdGUgbmV3IGluc3RhbmNlIG9mIHNwZWNpZmllZCB0eXBlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIG5ldygpOiBUVmFsdWUge1xyXG4gICAgcmV0dXJuIG5ldyB0aGlzLnR5cGUoKTtcclxuICB9XHJcblxyXG5cclxuICBzZXRWYWx1ZShzOiBzdHJpbmcsIHY6IFRWYWx1ZSwgYWRkVG9DaGFuZ2VzPzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMpXHJcbiAgICAgIHRoaXMuc2V0VmFsdWVfMChzLCB2LCBhZGRUb0NoYW5nZXMpO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLnNldFZhbHVlXzEocywgdik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IHNldFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBzZXRWYWx1ZV8wKHM6IHN0cmluZywgdjogVFZhbHVlLCBhZGRUb0NoYW5nZXM6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmIChhZGRUb0NoYW5nZXMgJiYgIXRoaXMuY2hhbmdlcy5Db250YWlucyhzKSlcclxuICAgICAgdGhpcy5jaGFuZ2VzLnB1c2gocyk7XHJcbiAgICBzdXBlci5zZXRWYWx1ZShzLCB2KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gc2V0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIHNldFZhbHVlXzEoczogc3RyaW5nLCB2OiBUVmFsdWUpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5jaGFuZ2VzLkNvbnRhaW5zKHMpKVxyXG4gICAgICB0aGlzLmNoYW5nZXMucHVzaChzKTtcclxuICAgIHN1cGVyLnNldFZhbHVlKHMsIHYpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiByZW1vdmVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHJlbW92ZShzOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5jaGFuZ2VzLkNvbnRhaW5zKHMpKSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlcy5wdXNoKHMpO1xyXG4gICAgfVxyXG4gICAgc3VwZXIucmVtb3ZlKHMpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyB3cml0ZSB0byBhbiBYTUwgYnVmZjogd3JpdGUgdGhlIElEIGFuZCBjYWxsIGVhY2ggdmFyaWFibGUgdG8gd3JpdGUgaXRzZWxmXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBtaXJyb3JBbGxUb1hNTCgpOiBzdHJpbmcge1xyXG4gICAgbGV0IHhtbDogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7XHJcblxyXG5cclxuICAgIGlmICh0aGlzLnZhbHVlcyAhPSBudWxsKSB7XHJcblxyXG4gICAgICAvLyB3cml0ZSB0aGUgaWRcclxuICAgICAgeG1sLkFwcGVuZChcIjxcIiArIHRoaXMubWlycm9yZWRJRCArIFwiPlwiKTtcclxuXHJcbiAgICAgIC8vIGxvb3Agb24gYWxsIHZhcmlhYmxlc1xyXG4gICAgICBmb3IgKGxldCBrZXkgb2YgdGhpcy52YWx1ZXMuS2V5cykge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5DaGVja0lmU3lzdGVtUmVzZXJ2ZWRQYXJhbShrZXkpKVxyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgeG1sLkFwcGVuZChcIjxcIiArIENvbnN0SW50ZXJmYWNlLk1HX1RBR19QQVJBTSArIFwiIFwiICtcclxuICAgICAgICAgIFhNTENvbnN0YW50cy5NR19BVFRSX05BTUUgKyBcIj1cXFwiXCIgKyBYbWxQYXJzZXIuZXNjYXBlKGtleSkgKyBcIlxcXCIgXCIpO1xyXG5cclxuICAgICAgICAvLyBjYWxsIHRoZSB2YXJpYWJsZSB0byB3cml0ZSBpdCdzIG93biBkYXRhXHJcbiAgICAgICAgICB4bWwuQXBwZW5kKHRoaXMudmFsdWVzLmdldF9JdGVtKGtleSkubWlycm9yVG9YTUwoKSk7XHJcblxyXG4gICAgICAgIHhtbC5BcHBlbmQoWE1MQ29uc3RhbnRzLlRBR19URVJNKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgeG1sLkFwcGVuZChcIjwvXCIgKyB0aGlzLm1pcnJvcmVkSUQgKyBcIj5cIik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geG1sLlRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIElmIHN5c3RlbSByZXNlcnZlZCBwYXJhbSwgdGhlbiBkbyBub3Qgc2VyaWFsaXplIGZvciByZS1pbml0aWFsaXplIHNlc3Npb25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIENoZWNrSWZTeXN0ZW1SZXNlcnZlZFBhcmFtKGtleTogYW55KTogYm9vbGVhblxyXG4gIHtcclxuICAgIGlmIChrZXkgPT0gXCJVVEY4VFJBTlNcIiB8fCBrZXkgPT09IFwiUkVNT1RFX0hPU1RcIiB8fCBrZXkgPT09IFwiUkVNT1RFX0FERFJcIiB8fFxyXG4gICAgICBrZXkgPT09IFwiQ1RYXCIgfHwga2V5ID09PSBcIk1HQVJHMFwiIHx8IGtleSA9PT0gXCJEQVRBXCIgfHwga2V5ID09PSBcIk1HQ1VSUkVOVFJFUVVFU1RJRFwiIHx8XHJcbiAgICAgIGtleSA9PT0gXCJIVFRQX01HWFBBUklBR0xPQkFMVU5JUVVFU0VTU0lPTklEXCIgfHwga2V5ID09PSBcIk1HX1BPU1RfQk9EWVwiKVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIGVsc2VcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyB3cml0ZSB0byBhbiBYTUwgYnVmZjogd3JpdGUgdGhlIElEIGFuZCBjYWxsIGVhY2ggY2hhbmdlZCB2YXJpYWJsZSB0byB3cml0ZSBpdHNlbGZcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIG1pcnJvclRvWE1MKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgeG1sOiBTdHJpbmdCdWlsZGVyID0gbmV3IFN0cmluZ0J1aWxkZXIoKTtcclxuXHJcbiAgICBpZiAodGhpcy5jaGFuZ2VzLmxlbmd0aCA+IDApIHtcclxuXHJcbiAgICAgIC8vIHdyaXRlIHRoZSBpZFxyXG4gICAgICB4bWwuQXBwZW5kKFwiPFwiICsgdGhpcy5taXJyb3JlZElEICsgXCI+XCIpO1xyXG5cclxuICAgICAgLy8gbG9vcCBvbiBhbGwgY2hhbmdlZCB2YXJpYWJsZXNcclxuXHJcblxyXG4gICAgICB0aGlzLmNoYW5nZXMuZm9yRWFjaChjaGFuZ2UgPT4ge1xyXG5cclxuICAgICAgICB4bWwuQXBwZW5kKFwiPFwiICsgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX1BBUkFNICsgXCIgXCIgK1xyXG4gICAgICAgICAgWE1MQ29uc3RhbnRzLk1HX0FUVFJfTkFNRSArIFwiPVxcXCJcIiArIFhtbFBhcnNlci5lc2NhcGUoY2hhbmdlKSArIFwiXFxcIiBcIik7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnZhbHVlcy5Db250YWluc0tleShjaGFuZ2UpKVxyXG4gICAgICAgIC8vIGNhbGwgdGhlIHZhcmlhYmxlIHRvIHdyaXRlIGl0J3Mgb3duIGRhdGFcclxuICAgICAgICAgIHhtbC5BcHBlbmQodGhpcy52YWx1ZXMuZ2V0X0l0ZW0oY2hhbmdlKS5taXJyb3JUb1hNTCgpKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB4bWwuQXBwZW5kKFwicmVtb3ZlZD1cXFwiWVxcXCJcIik7XHJcbiAgICAgICAgeG1sLkFwcGVuZChcIj5cIik7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgeG1sLkFwcGVuZChcIjwvXCIgKyB0aGlzLm1pcnJvcmVkSUQgKyBcIj5cIik7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNoYW5nZXMuQ2xlYXIoKTtcclxuICAgIHJldHVybiB4bWwuVG9TdHJpbmcoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gcGFyc2UgdGhlIFhNTCBhbmQgZmlsbCB0aGUgZGF0YVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZmlsbERhdGEocGFyc2VyOiBYbWxQYXJzZXIpOiB2b2lkIHtcclxuICAgIHdoaWxlICh0aGlzLm1pcnJvckZyb21YTUwocGFyc2VyLmdldE5leHRUYWcoKSwgcGFyc2VyKSkge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgUmVzdG9yZUdsb2JhbFBhcmFtcyAoeG1sOiBzdHJpbmcgKVxyXG4gIHtcclxuICAgIGxldCBwYXJzZXI6IFhtbFBhcnNlciA9IG5ldyBYbWxQYXJzZXIoeG1sKTtcclxuICAgIHdoaWxlICh0aGlzLm1pcnJvckZyb21YTUwocGFyc2VyLmdldE5leHRUYWcoKSwgcGFyc2VyKSkge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBmaWxsIGZyb20gWE1MXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJmb3VuZFRhZ05hbWVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInhtbFBhcnNlclwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBtaXJyb3JGcm9tWE1MKGZvdW5kVGFnTmFtZTogc3RyaW5nLCB4bWxQYXJzZXI6IFhtbFBhcnNlcik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGZvdW5kVGFnTmFtZSA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmIChmb3VuZFRhZ05hbWUgPT09IHRoaXMubWlycm9yZWRJRCkge1xyXG4gICAgICB4bWxQYXJzZXIuc2V0Q3VyckluZGV4MkVuZE9mVGFnKCk7XHJcbiAgICAgIHRoaXMuZmlsbERhdGFFbnRyeSh4bWxQYXJzZXIpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGZvdW5kVGFnTmFtZSA9PT0gKFwiL1wiICsgdGhpcy5taXJyb3JlZElEKSkge1xyXG4gICAgICAvLyBBZnRlciB1cGRhdGluZyBmcm9tIHRoZSBzZXJ2ZXIsIGNsZWFyIHRoZSBjaGFuZ2VzIGxpc3Qgc28gdGhleSB3b24ndCBiZSBzZW50IGFnYWluXHJcbiAgICAgIHRoaXMuY2hhbmdlcy5DbGVhcigpO1xyXG4gICAgICB4bWxQYXJzZXIuc2V0Q3VyckluZGV4MkVuZE9mVGFnKCk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJUaGVyZSBpcyBubyBzdWNoIHRhZyBpbiBNaXJyb3JQcm1NYXAubWlycm9yRnJvbVhNTCgpOiBcIiArIGZvdW5kVGFnTmFtZSk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHBhcnNlIGFuZCBmaWxsIHRoZSBwYXJhbXMsIHVudGlsIHRoZSBzZWN0aW9uIGVuZHNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGZpbGxEYXRhRW50cnkoeG1sUGFyc2VyOiBYbWxQYXJzZXIpOiB2b2lkIHtcclxuICAgIGxldCBuZXh0VGFnOiBzdHJpbmcgPSB4bWxQYXJzZXIuZ2V0TmV4dFRhZygpO1xyXG5cclxuICAgIHdoaWxlIChuZXh0VGFnID09PSBDb25zdEludGVyZmFjZS5NR19UQUdfUEFSQU0pIHtcclxuICAgICAgbGV0IG5hbWVTdGFydDogbnVtYmVyID0geG1sUGFyc2VyLmdldFhNTGRhdGEoKS5pbmRleE9mKFhNTENvbnN0YW50cy5NR19BVFRSX05BTUUgKyBcIj1cXFwiXCIsIHhtbFBhcnNlci5nZXRDdXJySW5kZXgoKSkgK1xyXG4gICAgICAgIFhNTENvbnN0YW50cy5NR19BVFRSX05BTUUubGVuZ3RoICsgMjtcclxuXHJcbiAgICAgIHhtbFBhcnNlci5zZXRDdXJySW5kZXgobmFtZVN0YXJ0KTtcclxuICAgICAgbGV0IG5hbWVFbmQ6IG51bWJlciA9IHhtbFBhcnNlci5nZXRYTUxkYXRhKCkuaW5kZXhPZihcIlxcXCJcIiwgbmFtZVN0YXJ0KTtcclxuXHJcbiAgICAgIC8vIGdldCB0aGUgdmFyaWFibGVzIGRhdGFcclxuICAgICAgbGV0IG5hbWU6IHN0cmluZyA9IHhtbFBhcnNlci5nZXRYTUxzdWJzdHJpbmcobmFtZUVuZCkudHJpbSgpO1xyXG4gICAgICB4bWxQYXJzZXIuc2V0Q3VyckluZGV4KG5hbWVFbmQpO1xyXG5cclxuICAgICAgLy8gY3JlYXRlIGFuZCBpbml0IHRoZSBuZXcgdmFsdWVcclxuICAgICAgbGV0IG5ld1ZhbDogVFZhbHVlID0gdGhpcy5uZXcoKTtcclxuXHJcbiAgICAgIHN3aXRjaCAobmV3VmFsLmluaXQobmFtZSwgeG1sUGFyc2VyKSkge1xyXG4gICAgICAgIGNhc2UgUGFyYW1QYXJzZVJlc3VsdC5PSzpcclxuICAgICAgICAgIHRoaXMudmFsdWVzLnNldF9JdGVtKG5hbWUsIG5ld1ZhbCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFBhcmFtUGFyc2VSZXN1bHQuVE9VUFBFUjpcclxuICAgICAgICAgIHRoaXMudmFsdWVzLnNldF9JdGVtKG5hbWUudG9VcHBlckNhc2UoKSwgbmV3VmFsKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgUGFyYW1QYXJzZVJlc3VsdC5ERUxFVEU6XHJcbiAgICAgICAgICB0aGlzLnZhbHVlcy5SZW1vdmUobmFtZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gbW92ZSB0byBuZXh0IHRhZ1xyXG4gICAgICB4bWxQYXJzZXIuc2V0Q3VyckluZGV4MkVuZE9mVGFnKCk7XHJcbiAgICAgIG5leHRUYWcgPSB4bWxQYXJzZXIuZ2V0TmV4dFRhZygpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJtTWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy91dGlsL1BybU1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFLcEQsTUFBTSxPQUFPLE1BQU07SUE2QmpCO1FBNUJBLFdBQU0sR0FBdUIsSUFBSSxDQUFDO1FBNkI5QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksVUFBVSxFQUFVLENBQUM7SUFDM0MsQ0FBQztJQXZCUyxRQUFRLENBQUMsQ0FBUztRQUMxQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUM1QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDOztZQUUvQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBSUQsUUFBUSxDQUFDLENBQVMsRUFBRSxDQUFTO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBSUQsTUFBTSxDQUFDLENBQVM7UUFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixDQUFDO0NBT0Y7QUFLRCxNQUFNLE9BQU8sWUFBd0MsU0FBUSxNQUFjO0lBWXpFLFlBQVksSUFBc0I7UUFDaEMsS0FBSyxFQUFFLENBQUM7UUFWQSxZQUFPLEdBQWlCLElB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QztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGljdGlvbmFyeSwgTGlzdCwgU3RyaW5nQnVpbGRlciB9IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuaW1wb3J0IHsgTG9nZ2VyLCBYTUxDb25zdGFudHMsIFhtbFBhcnNlciB9IGZyb20gJ0BtYWdpYy14cGEvdXRpbHMnO1xyXG5pbXBvcnQgeyBDb25zdEludGVyZmFjZSB9IGZyb20gJy4uL0NvbnN0SW50ZXJmYWNlJztcclxuaW1wb3J0IHsgSU1pcnJvclhNTCB9IGZyb20gJy4vSU1pcnJvclhNTCc7XHJcbmltcG9ydCB7UGFyYW1QYXJzZVJlc3VsdH0gZnJvbSBcIi4vUGFyYW1QYXJzZVJlc3VsdFwiO1xyXG5cclxuXHJcbi8vLyA8c3VtbWFyeT4gVGhpcyBjbGFzcyBtYW5hZ2VzIGEgZGljdGlvbmFyeSBvZiB2YXJpYWJsZXMuIHRoZW4gbmFtZSBvZiB0aGUgdmFyaWFibGUgaXMgdGhlIGtleVxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgUHJtTWFwPFRWYWx1ZSBleHRlbmRzIElNaXJyb3JYTUw+e1xyXG4gIHZhbHVlczogRGljdGlvbmFyeTxUVmFsdWU+ID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBnZXQgdGhlIHZhbHVlXHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHByb3RlY3RlZCBnZXR2YWx1ZShzOiBzdHJpbmcpOiBUVmFsdWUge1xyXG4gICAgaWYgKHRoaXMudmFsdWVzLkNvbnRhaW5zS2V5KHMpKVxyXG4gICAgICByZXR1cm4gdGhpcy52YWx1ZXMuZ2V0X0l0ZW0ocyk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBzZXRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldFZhbHVlKHM6IHN0cmluZywgdjogVFZhbHVlKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlcy5zZXRfSXRlbShzLCB2KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gcmVtb3ZlIGFuIGVudHJ5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICByZW1vdmUoczogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlcy5SZW1vdmUocyk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICB0aGlzLnZhbHVlcyA9IG5ldyBEaWN0aW9uYXJ5PFRWYWx1ZT4oKTtcclxuICB9XHJcbn1cclxuXHJcbi8vLyA8c3VtbWFyeT4gVGhpcyBjbGFzcyBtYW5hZ2VzIHRoZSBtaXJyb3JpbmcuIEl0IGhvbGRzIGEgbGlzdCBvZiBjaGFuZ2VkIHZhbHVlcyB0aGF0IG5lZWQgdG8gYmVcclxuLy8vIG1pcnJvcmVkLCBhbmQgbWFuYWdlcyB0aGUgd3JpdGluZyBvZiB0aG9zZSB2YWx1ZXMgdG8gYW4gWE1MIGJ1ZmZlclxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgTWlycm9yUHJtTWFwPFRWYWx1ZSBleHRlbmRzIElNaXJyb3JYTUw+IGV4dGVuZHMgUHJtTWFwPFRWYWx1ZT4ge1xyXG5cclxuICAvLyBMaXN0IG9mIGNoYW5nZWQgdmFyaWFibGVzXHJcbiAgcHJvdGVjdGVkIGNoYW5nZXM6IExpc3Q8c3RyaW5nPiA9IG51bGw7XHJcblxyXG4gIC8vIFR5cGUgb2YgdmFyaWFibGVzIGluIHRoZSB0YWJsZSAtIHVzZSBhcyBhbiBpZCBpbiB0aGUgWE1MIGJ1ZmZlclxyXG4gIHByb3RlY3RlZCAgbWlycm9yZWRJRDogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSB0eXBlIDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBDVE9SXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBjb25zdHJ1Y3Rvcih0eXBlOiBuZXcgKCkgPT4gVFZhbHVlKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy50eXBlID0gdHlwZTtcclxuICAgIHRoaXMuY2hhbmdlcyA9IG5ldyBMaXN0PHN0cmluZz4oKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gY3JlYXRlIG5ldyBpbnN0YW5jZSBvZiBzcGVjaWZpZWQgdHlwZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBuZXcoKTogVFZhbHVlIHtcclxuICAgIHJldHVybiBuZXcgdGhpcy50eXBlKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgc2V0VmFsdWUoczogc3RyaW5nLCB2OiBUVmFsdWUsIGFkZFRvQ2hhbmdlcz86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzKVxyXG4gICAgICB0aGlzLnNldFZhbHVlXzAocywgdiwgYWRkVG9DaGFuZ2VzKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5zZXRWYWx1ZV8xKHMsIHYpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBzZXRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgc2V0VmFsdWVfMChzOiBzdHJpbmcsIHY6IFRWYWx1ZSwgYWRkVG9DaGFuZ2VzOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAoYWRkVG9DaGFuZ2VzICYmICF0aGlzLmNoYW5nZXMuQ29udGFpbnMocykpXHJcbiAgICAgIHRoaXMuY2hhbmdlcy5wdXNoKHMpO1xyXG4gICAgc3VwZXIuc2V0VmFsdWUocywgdik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IHNldFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBzZXRWYWx1ZV8xKHM6IHN0cmluZywgdjogVFZhbHVlKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuY2hhbmdlcy5Db250YWlucyhzKSlcclxuICAgICAgdGhpcy5jaGFuZ2VzLnB1c2gocyk7XHJcbiAgICBzdXBlci5zZXRWYWx1ZShzLCB2KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gcmVtb3ZlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICByZW1vdmUoczogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuY2hhbmdlcy5Db250YWlucyhzKSkge1xyXG4gICAgICB0aGlzLmNoYW5nZXMucHVzaChzKTtcclxuICAgIH1cclxuICAgIHN1cGVyLnJlbW92ZShzKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gd3JpdGUgdG8gYW4gWE1MIGJ1ZmY6IHdyaXRlIHRoZSBJRCBhbmQgY2FsbCBlYWNoIHZhcmlhYmxlIHRvIHdyaXRlIGl0c2VsZlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgbWlycm9yQWxsVG9YTUwoKTogc3RyaW5nIHtcclxuICAgIGxldCB4bWw6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigpO1xyXG5cclxuXHJcbiAgICBpZiAodGhpcy52YWx1ZXMgIT0gbnVsbCkge1xyXG5cclxuICAgICAgLy8gd3JpdGUgdGhlIGlkXHJcbiAgICAgIHhtbC5BcHBlbmQoXCI8XCIgKyB0aGlzLm1pcnJvcmVkSUQgKyBcIj5cIik7XHJcblxyXG4gICAgICAvLyBsb29wIG9uIGFsbCB2YXJpYWJsZXNcclxuICAgICAgZm9yIChsZXQga2V5IG9mIHRoaXMudmFsdWVzLktleXMpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuQ2hlY2tJZlN5c3RlbVJlc2VydmVkUGFyYW0oa2V5KSlcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIHhtbC5BcHBlbmQoXCI8XCIgKyBDb25zdEludGVyZmFjZS5NR19UQUdfUEFSQU0gKyBcIiBcIiArXHJcbiAgICAgICAgICBYTUxDb25zdGFudHMuTUdfQVRUUl9OQU1FICsgXCI9XFxcIlwiICsgWG1sUGFyc2VyLmVzY2FwZShrZXkpICsgXCJcXFwiIFwiKTtcclxuXHJcbiAgICAgICAgLy8gY2FsbCB0aGUgdmFyaWFibGUgdG8gd3JpdGUgaXQncyBvd24gZGF0YVxyXG4gICAgICAgICAgeG1sLkFwcGVuZCh0aGlzLnZhbHVlcy5nZXRfSXRlbShrZXkpLm1pcnJvclRvWE1MKCkpO1xyXG5cclxuICAgICAgICB4bWwuQXBwZW5kKFhNTENvbnN0YW50cy5UQUdfVEVSTSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHhtbC5BcHBlbmQoXCI8L1wiICsgdGhpcy5taXJyb3JlZElEICsgXCI+XCIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHhtbC5Ub1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBJZiBzeXN0ZW0gcmVzZXJ2ZWQgcGFyYW0sIHRoZW4gZG8gbm90IHNlcmlhbGl6ZSBmb3IgcmUtaW5pdGlhbGl6ZSBzZXNzaW9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBDaGVja0lmU3lzdGVtUmVzZXJ2ZWRQYXJhbShrZXk6IGFueSk6IGJvb2xlYW5cclxuICB7XHJcbiAgICBpZiAoa2V5ID09IFwiVVRGOFRSQU5TXCIgfHwga2V5ID09PSBcIlJFTU9URV9IT1NUXCIgfHwga2V5ID09PSBcIlJFTU9URV9BRERSXCIgfHxcclxuICAgICAga2V5ID09PSBcIkNUWFwiIHx8IGtleSA9PT0gXCJNR0FSRzBcIiB8fCBrZXkgPT09IFwiREFUQVwiIHx8IGtleSA9PT0gXCJNR0NVUlJFTlRSRVFVRVNUSURcIiB8fFxyXG4gICAgICBrZXkgPT09IFwiSFRUUF9NR1hQQVJJQUdMT0JBTFVOSVFVRVNFU1NJT05JRFwiIHx8IGtleSA9PT0gXCJNR19QT1NUX0JPRFlcIilcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gd3JpdGUgdG8gYW4gWE1MIGJ1ZmY6IHdyaXRlIHRoZSBJRCBhbmQgY2FsbCBlYWNoIGNoYW5nZWQgdmFyaWFibGUgdG8gd3JpdGUgaXRzZWxmXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBtaXJyb3JUb1hNTCgpOiBzdHJpbmcge1xyXG4gICAgbGV0IHhtbDogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuY2hhbmdlcy5sZW5ndGggPiAwKSB7XHJcblxyXG4gICAgICAvLyB3cml0ZSB0aGUgaWRcclxuICAgICAgeG1sLkFwcGVuZChcIjxcIiArIHRoaXMubWlycm9yZWRJRCArIFwiPlwiKTtcclxuXHJcbiAgICAgIC8vIGxvb3Agb24gYWxsIGNoYW5nZWQgdmFyaWFibGVzXHJcblxyXG5cclxuICAgICAgdGhpcy5jaGFuZ2VzLmZvckVhY2goY2hhbmdlID0+IHtcclxuXHJcbiAgICAgICAgeG1sLkFwcGVuZChcIjxcIiArIENvbnN0SW50ZXJmYWNlLk1HX1RBR19QQVJBTSArIFwiIFwiICtcclxuICAgICAgICAgIFhNTENvbnN0YW50cy5NR19BVFRSX05BTUUgKyBcIj1cXFwiXCIgKyBYbWxQYXJzZXIuZXNjYXBlKGNoYW5nZSkgKyBcIlxcXCIgXCIpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy52YWx1ZXMuQ29udGFpbnNLZXkoY2hhbmdlKSlcclxuICAgICAgICAvLyBjYWxsIHRoZSB2YXJpYWJsZSB0byB3cml0ZSBpdCdzIG93biBkYXRhXHJcbiAgICAgICAgICB4bWwuQXBwZW5kKHRoaXMudmFsdWVzLmdldF9JdGVtKGNoYW5nZSkubWlycm9yVG9YTUwoKSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgeG1sLkFwcGVuZChcInJlbW92ZWQ9XFxcIllcXFwiXCIpO1xyXG4gICAgICAgIHhtbC5BcHBlbmQoXCI+XCIpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHhtbC5BcHBlbmQoXCI8L1wiICsgdGhpcy5taXJyb3JlZElEICsgXCI+XCIpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jaGFuZ2VzLkNsZWFyKCk7XHJcbiAgICByZXR1cm4geG1sLlRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IHBhcnNlIHRoZSBYTUwgYW5kIGZpbGwgdGhlIGRhdGFcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGZpbGxEYXRhKHBhcnNlcjogWG1sUGFyc2VyKTogdm9pZCB7XHJcbiAgICB3aGlsZSAodGhpcy5taXJyb3JGcm9tWE1MKHBhcnNlci5nZXROZXh0VGFnKCksIHBhcnNlcikpIHtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFJlc3RvcmVQYXJhbXMgKHhtbDogc3RyaW5nIClcclxuICB7XHJcbiAgICBsZXQgcGFyc2VyOiBYbWxQYXJzZXIgPSBuZXcgWG1sUGFyc2VyKHhtbCk7XHJcbiAgICB3aGlsZSAodGhpcy5taXJyb3JGcm9tWE1MKHBhcnNlci5nZXROZXh0VGFnKCksIHBhcnNlcikpIHtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gZmlsbCBmcm9tIFhNTFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZm91bmRUYWdOYW1lXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ4bWxQYXJzZXJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgbWlycm9yRnJvbVhNTChmb3VuZFRhZ05hbWU6IHN0cmluZywgeG1sUGFyc2VyOiBYbWxQYXJzZXIpOiBib29sZWFuIHtcclxuICAgIGlmIChmb3VuZFRhZ05hbWUgPT09IG51bGwpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBpZiAoZm91bmRUYWdOYW1lID09PSB0aGlzLm1pcnJvcmVkSUQpIHtcclxuICAgICAgeG1sUGFyc2VyLnNldEN1cnJJbmRleDJFbmRPZlRhZygpO1xyXG4gICAgICB0aGlzLmZpbGxEYXRhRW50cnkoeG1sUGFyc2VyKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChmb3VuZFRhZ05hbWUgPT09IChcIi9cIiArIHRoaXMubWlycm9yZWRJRCkpIHtcclxuICAgICAgLy8gQWZ0ZXIgdXBkYXRpbmcgZnJvbSB0aGUgc2VydmVyLCBjbGVhciB0aGUgY2hhbmdlcyBsaXN0IHNvIHRoZXkgd29uJ3QgYmUgc2VudCBhZ2FpblxyXG4gICAgICB0aGlzLmNoYW5nZXMuQ2xlYXIoKTtcclxuICAgICAgeG1sUGFyc2VyLnNldEN1cnJJbmRleDJFbmRPZlRhZygpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2dXaXRoTXNnKFwiVGhlcmUgaXMgbm8gc3VjaCB0YWcgaW4gTWlycm9yUHJtTWFwLm1pcnJvckZyb21YTUwoKTogXCIgKyBmb3VuZFRhZ05hbWUpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBwYXJzZSBhbmQgZmlsbCB0aGUgcGFyYW1zLCB1bnRpbCB0aGUgc2VjdGlvbiBlbmRzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBmaWxsRGF0YUVudHJ5KHhtbFBhcnNlcjogWG1sUGFyc2VyKTogdm9pZCB7XHJcbiAgICBsZXQgbmV4dFRhZzogc3RyaW5nID0geG1sUGFyc2VyLmdldE5leHRUYWcoKTtcclxuXHJcbiAgICB3aGlsZSAobmV4dFRhZyA9PT0gQ29uc3RJbnRlcmZhY2UuTUdfVEFHX1BBUkFNKSB7XHJcbiAgICAgIGxldCBuYW1lU3RhcnQ6IG51bWJlciA9IHhtbFBhcnNlci5nZXRYTUxkYXRhKCkuaW5kZXhPZihYTUxDb25zdGFudHMuTUdfQVRUUl9OQU1FICsgXCI9XFxcIlwiLCB4bWxQYXJzZXIuZ2V0Q3VyckluZGV4KCkpICtcclxuICAgICAgICBYTUxDb25zdGFudHMuTUdfQVRUUl9OQU1FLmxlbmd0aCArIDI7XHJcblxyXG4gICAgICB4bWxQYXJzZXIuc2V0Q3VyckluZGV4KG5hbWVTdGFydCk7XHJcbiAgICAgIGxldCBuYW1lRW5kOiBudW1iZXIgPSB4bWxQYXJzZXIuZ2V0WE1MZGF0YSgpLmluZGV4T2YoXCJcXFwiXCIsIG5hbWVTdGFydCk7XHJcblxyXG4gICAgICAvLyBnZXQgdGhlIHZhcmlhYmxlcyBkYXRhXHJcbiAgICAgIGxldCBuYW1lOiBzdHJpbmcgPSB4bWxQYXJzZXIuZ2V0WE1Mc3Vic3RyaW5nKG5hbWVFbmQpLnRyaW0oKTtcclxuICAgICAgeG1sUGFyc2VyLnNldEN1cnJJbmRleChuYW1lRW5kKTtcclxuXHJcbiAgICAgIC8vIGNyZWF0ZSBhbmQgaW5pdCB0aGUgbmV3IHZhbHVlXHJcbiAgICAgIGxldCBuZXdWYWw6IFRWYWx1ZSA9IHRoaXMubmV3KCk7XHJcblxyXG4gICAgICBzd2l0Y2ggKG5ld1ZhbC5pbml0KG5hbWUsIHhtbFBhcnNlcikpIHtcclxuICAgICAgICBjYXNlIFBhcmFtUGFyc2VSZXN1bHQuT0s6XHJcbiAgICAgICAgICB0aGlzLnZhbHVlcy5zZXRfSXRlbShuYW1lLCBuZXdWYWwpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBQYXJhbVBhcnNlUmVzdWx0LlRPVVBQRVI6XHJcbiAgICAgICAgICB0aGlzLnZhbHVlcy5zZXRfSXRlbShuYW1lLnRvVXBwZXJDYXNlKCksIG5ld1ZhbCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFBhcmFtUGFyc2VSZXN1bHQuREVMRVRFOlxyXG4gICAgICAgICAgdGhpcy52YWx1ZXMuUmVtb3ZlKG5hbWUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIG1vdmUgdG8gbmV4dCB0YWdcclxuICAgICAgeG1sUGFyc2VyLnNldEN1cnJJbmRleDJFbmRPZlRhZygpO1xyXG4gICAgICBuZXh0VGFnID0geG1sUGFyc2VyLmdldE5leHRUYWcoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -476,6 +476,7 @@ ConstInterface.RC_TOKEN_DATA = "DATA=";
476
476
  ConstInterface.WEBCLIENT_REINITIALIZE_REQUEST = "WCREINITIALIZEREQUEST=Y";
477
477
  ConstInterface.MAIN_PROG_VIEW = "MainProgramsDataView";
478
478
  ConstInterface.GLOBAL_PARAM_LIST = "GlobalParamList";
479
+ ConstInterface.ENV_VAR_LIST = "EnvVarList";
479
480
  ConstInterface.LAST_EXCEPTION = "LastException";
480
481
  ConstInterface.CTX_REMOVED_FROM_SRVR = "CtxRemovedFromSrvr";
481
482
  ConstInterface.LAST_ROUTE_EVENT = "LastRouteEvent";
@@ -5274,10 +5275,12 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5274
5275
  return __awaiter(this, void 0, void 0, function* () {
5275
5276
  let mainPrgViewStringForServer = yield this.BuildXMLForMainProgramDataView();
5276
5277
  let globalParamsString = AccessHelper.globalParams.mirrorAllToXML();
5278
+ let changedEnvVarList = AccessHelper.envParamsTable.mirrorAllToXML();
5277
5279
  let dataStorage = window.localStorage;
5278
5280
  dataStorage.setItem(ConstInterface.IS_SESSION_REINITIALIZING, "true");
5279
5281
  dataStorage.setItem(ConstInterface.MAIN_PROG_VIEW, mainPrgViewStringForServer.toString());
5280
5282
  dataStorage.setItem(ConstInterface.GLOBAL_PARAM_LIST, globalParamsString);
5283
+ dataStorage.setItem(ConstInterface.ENV_VAR_LIST, changedEnvVarList);
5281
5284
  dataStorage.setItem(ConstInterface.LAST_EXCEPTION, RemoteCommandsProcessor.lastExceptionMessage);
5282
5285
  if (RuntimeContextBase.Instance.RemovedContextFromServer)
5283
5286
  dataStorage.setItem(ConstInterface.CTX_REMOVED_FROM_SRVR, "1");
@@ -5514,6 +5517,7 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5514
5517
  let reqBuf;
5515
5518
  let isInitialCall = sessionStage === CommandsProcessorBase_SessionStage.INITIAL;
5516
5519
  let globalParamsString = null;
5520
+ let envVarsString = null;
5517
5521
  if (this.DelayCommandExecution)
5518
5522
  return;
5519
5523
  if (Logger.Instance.LogLevel == Logger_LogLevels.RequestInfo && !isInitialCall)
@@ -5539,12 +5543,16 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5539
5543
  let buffer = new StringBuilder();
5540
5544
  if (!RemoteCommandsProcessor.IsSessionReInitializing)
5541
5545
  buffer.Append(reqBuf);
5542
- if (RemoteCommandsProcessor.IsSessionReInitializing)
5546
+ if (RemoteCommandsProcessor.IsSessionReInitializing) {
5543
5547
  globalParamsString = this.RestoreSessionReInitializingDataFromLocalStorage(ConstInterface.GLOBAL_PARAM_LIST);
5544
- else
5548
+ envVarsString = this.RestoreSessionReInitializingDataFromLocalStorage(ConstInterface.ENV_VAR_LIST);
5549
+ }
5550
+ else {
5545
5551
  globalParamsString = AccessHelper.globalParams.mirrorToXML();
5552
+ envVarsString = AccessHelper.envParamsTable.mirrorToXML();
5553
+ }
5546
5554
  changes.Append(globalParamsString);
5547
- changes.Append(AccessHelper.envParamsTable.mirrorToXML());
5555
+ changes.Append(envVarsString);
5548
5556
  if (changes.Length > 0) {
5549
5557
  changes.Insert(0, "<" + ConstInterface.MG_TAG_ENV_CHANGES + ">");
5550
5558
  changes.Append("</" + ConstInterface.MG_TAG_ENV_CHANGES + ">");
@@ -5583,13 +5591,15 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5583
5591
  dataStorage.removeItem(ConstInterface.IS_SESSION_REINITIALIZING);
5584
5592
  dataStorage.removeItem(ConstInterface.MAIN_PROG_VIEW);
5585
5593
  dataStorage.removeItem(ConstInterface.GLOBAL_PARAM_LIST);
5594
+ dataStorage.removeItem(ConstInterface.ENV_VAR_LIST);
5586
5595
  dataStorage.removeItem(ConstInterface.LAST_EXCEPTION);
5587
5596
  }
5588
5597
  }
5589
5598
  FlowMonitorQueue.Instance.enable(false);
5590
5599
  yield this.ProcessResponse(respBuf, AccessHelper.mgDataTable.currMgdID, null, res);
5591
5600
  if (RemoteCommandsProcessor.IsSessionReInitializing) {
5592
- AccessHelper.globalParams.RestoreGlobalParams(globalParamsString);
5601
+ AccessHelper.globalParams.RestoreParams(globalParamsString);
5602
+ AccessHelper.envParamsTable.RestoreParams(envVarsString);
5593
5603
  let dataStorage = window.localStorage;
5594
5604
  let ctxRemoved = dataStorage.getItem(ConstInterface.CTX_REMOVED_FROM_SRVR);
5595
5605
  if (ctxRemoved === "1") {
@@ -6918,7 +6928,7 @@ ExpressionDict.expDesc = [
6918
6928
  null,
6919
6929
  new ExpDesc('N', 0, 0, 0, "", false),
6920
6930
  null,
6921
- new ExpDesc('B', 0, 2, 2, "BN", false),
6931
+ null,
6922
6932
  new ExpDesc('B', 0, 2, 2, "V ", false),
6923
6933
  null,
6924
6934
  null,
@@ -7367,12 +7377,12 @@ ExpressionDict.expDesc = [
7367
7377
  null,
7368
7378
  new ExpDesc('A', 0, 1, 1, "A", false),
7369
7379
  new ExpDesc('N', 0, 2, 2, "AA", false),
7370
- new ExpDesc('B', 0, -2, -2, "V ", false),
7371
- new ExpDesc('B', 0, 1, 1, "N", false),
7372
- new ExpDesc('B', 0, -2, -2, "V ", false),
7373
- new ExpDesc('B', 0, 1, 1, "N", false),
7374
- new ExpDesc('B', 0, 2, 2, "VB", false),
7375
- new ExpDesc('B', 0, 1, 1, "N", false),
7380
+ null,
7381
+ null,
7382
+ null,
7383
+ null,
7384
+ null,
7385
+ null,
7376
7386
  new ExpDesc('N', 0, 1, 1, "N", false),
7377
7387
  null,
7378
7388
  null,
@@ -7459,48 +7469,6 @@ ExpressionDict.expDesc = [
7459
7469
  new ExpDesc('U', 0, 0, 0, '', false),
7460
7470
  ];
7461
7471
 
7462
- var DataViewCommandType;
7463
- (function (DataViewCommandType) {
7464
- DataViewCommandType[DataViewCommandType["Init"] = 0] = "Init";
7465
- DataViewCommandType[DataViewCommandType["Clear"] = 1] = "Clear";
7466
- DataViewCommandType[DataViewCommandType["Prepare"] = 2] = "Prepare";
7467
- DataViewCommandType[DataViewCommandType["FirstChunk"] = 3] = "FirstChunk";
7468
- DataViewCommandType[DataViewCommandType["RecomputeUnit"] = 4] = "RecomputeUnit";
7469
- DataViewCommandType[DataViewCommandType["ExecuteLocalUpdates"] = 5] = "ExecuteLocalUpdates";
7470
- DataViewCommandType[DataViewCommandType["InitDataControlViews"] = 6] = "InitDataControlViews";
7471
- DataViewCommandType[DataViewCommandType["OpenTransaction"] = 7] = "OpenTransaction";
7472
- DataViewCommandType[DataViewCommandType["CloseTransaction"] = 8] = "CloseTransaction";
7473
- DataViewCommandType[DataViewCommandType["SetTransactionState"] = 9] = "SetTransactionState";
7474
- DataViewCommandType[DataViewCommandType["AddUserRange"] = 10] = "AddUserRange";
7475
- DataViewCommandType[DataViewCommandType["ResetUserRange"] = 11] = "ResetUserRange";
7476
- DataViewCommandType[DataViewCommandType["DbDisconnect"] = 12] = "DbDisconnect";
7477
- DataViewCommandType[DataViewCommandType["AddUserLocate"] = 13] = "AddUserLocate";
7478
- DataViewCommandType[DataViewCommandType["ResetUserLocate"] = 14] = "ResetUserLocate";
7479
- DataViewCommandType[DataViewCommandType["AddUserSort"] = 15] = "AddUserSort";
7480
- DataViewCommandType[DataViewCommandType["ResetUserSort"] = 16] = "ResetUserSort";
7481
- DataViewCommandType[DataViewCommandType["DataViewToDataSource"] = 17] = "DataViewToDataSource";
7482
- DataViewCommandType[DataViewCommandType["DbDelete"] = 18] = "DbDelete";
7483
- DataViewCommandType[DataViewCommandType["ControlItemsRefresh"] = 19] = "ControlItemsRefresh";
7484
- DataViewCommandType[DataViewCommandType["SQLExecute"] = 20] = "SQLExecute";
7485
- })(DataViewCommandType || (DataViewCommandType = {}));
7486
- class DataviewCommand extends ClientOriginatedCommandTaskTag {
7487
- constructor() {
7488
- super();
7489
- this.CommandType = 0;
7490
- this.TaskTag = null;
7491
- }
7492
- get CommandTypeAttribute() {
7493
- throw new NotImplementedException();
7494
- }
7495
- SerializeCommandData() {
7496
- Debug.Assert(false, "Dataview commands need not be serialized");
7497
- return null;
7498
- }
7499
- get ShouldSerialize() {
7500
- return false;
7501
- }
7502
- }
7503
-
7504
7472
  class EventHandlerPosition {
7505
7473
  constructor() {
7506
7474
  this._handlerIdx = 0;
@@ -7697,6 +7665,48 @@ EventHandlerPosition.PHASE_CONTROL_NON_SPECIFIC = 2;
7697
7665
  EventHandlerPosition.PHASE_GLOBAL = 3;
7698
7666
  EventHandlerPosition.PHASE_GLOBAL_SPECIFIC = 4;
7699
7667
 
7668
+ var DataViewCommandType;
7669
+ (function (DataViewCommandType) {
7670
+ DataViewCommandType[DataViewCommandType["Init"] = 0] = "Init";
7671
+ DataViewCommandType[DataViewCommandType["Clear"] = 1] = "Clear";
7672
+ DataViewCommandType[DataViewCommandType["Prepare"] = 2] = "Prepare";
7673
+ DataViewCommandType[DataViewCommandType["FirstChunk"] = 3] = "FirstChunk";
7674
+ DataViewCommandType[DataViewCommandType["RecomputeUnit"] = 4] = "RecomputeUnit";
7675
+ DataViewCommandType[DataViewCommandType["ExecuteLocalUpdates"] = 5] = "ExecuteLocalUpdates";
7676
+ DataViewCommandType[DataViewCommandType["InitDataControlViews"] = 6] = "InitDataControlViews";
7677
+ DataViewCommandType[DataViewCommandType["OpenTransaction"] = 7] = "OpenTransaction";
7678
+ DataViewCommandType[DataViewCommandType["CloseTransaction"] = 8] = "CloseTransaction";
7679
+ DataViewCommandType[DataViewCommandType["SetTransactionState"] = 9] = "SetTransactionState";
7680
+ DataViewCommandType[DataViewCommandType["AddUserRange"] = 10] = "AddUserRange";
7681
+ DataViewCommandType[DataViewCommandType["ResetUserRange"] = 11] = "ResetUserRange";
7682
+ DataViewCommandType[DataViewCommandType["DbDisconnect"] = 12] = "DbDisconnect";
7683
+ DataViewCommandType[DataViewCommandType["AddUserLocate"] = 13] = "AddUserLocate";
7684
+ DataViewCommandType[DataViewCommandType["ResetUserLocate"] = 14] = "ResetUserLocate";
7685
+ DataViewCommandType[DataViewCommandType["AddUserSort"] = 15] = "AddUserSort";
7686
+ DataViewCommandType[DataViewCommandType["ResetUserSort"] = 16] = "ResetUserSort";
7687
+ DataViewCommandType[DataViewCommandType["DataViewToDataSource"] = 17] = "DataViewToDataSource";
7688
+ DataViewCommandType[DataViewCommandType["DbDelete"] = 18] = "DbDelete";
7689
+ DataViewCommandType[DataViewCommandType["ControlItemsRefresh"] = 19] = "ControlItemsRefresh";
7690
+ DataViewCommandType[DataViewCommandType["SQLExecute"] = 20] = "SQLExecute";
7691
+ })(DataViewCommandType || (DataViewCommandType = {}));
7692
+ class DataviewCommand extends ClientOriginatedCommandTaskTag {
7693
+ constructor() {
7694
+ super();
7695
+ this.CommandType = 0;
7696
+ this.TaskTag = null;
7697
+ }
7698
+ get CommandTypeAttribute() {
7699
+ throw new NotImplementedException();
7700
+ }
7701
+ SerializeCommandData() {
7702
+ Debug.Assert(false, "Dataview commands need not be serialized");
7703
+ return null;
7704
+ }
7705
+ get ShouldSerialize() {
7706
+ return false;
7707
+ }
7708
+ }
7709
+
7700
7710
  class AddUserRangeDataviewCommand extends DataviewCommand {
7701
7711
  constructor() {
7702
7712
  super();
@@ -8336,13 +8346,6 @@ class CommandFactory {
8336
8346
  }
8337
8347
  }
8338
8348
 
8339
- class Sort {
8340
- constructor() {
8341
- this.fldIdx = 0;
8342
- this.dir = false;
8343
- }
8344
- }
8345
-
8346
8349
  var ParamParseResult;
8347
8350
  (function (ParamParseResult) {
8348
8351
  ParamParseResult[ParamParseResult["OK"] = 0] = "OK";
@@ -8448,7 +8451,7 @@ class MirrorPrmMap extends PrmMap {
8448
8451
  while (this.mirrorFromXML(parser.getNextTag(), parser)) {
8449
8452
  }
8450
8453
  }
8451
- RestoreGlobalParams(xml) {
8454
+ RestoreParams(xml) {
8452
8455
  let parser = new XmlParser(xml);
8453
8456
  while (this.mirrorFromXML(parser.getNextTag(), parser)) {
8454
8457
  }
@@ -9920,8 +9923,7 @@ class MirrorString {
9920
9923
  this._reserved = false;
9921
9924
  }
9922
9925
  mirrorToXML() {
9923
- return ConstInterface.MG_ATTR_ENV_VALUE + "=\"" + XmlParser.escape(this._value) + "\" " +
9924
- ConstInterface.MG_ATTR_ENV_WRITEINI + "=F";
9926
+ return ConstInterface.MG_ATTR_ENV_VALUE + "=\"" + XmlParser.escape(this._value) + "\"";
9925
9927
  }
9926
9928
  init(name, xmlParser) {
9927
9929
  let valueStart, valueEnd, reserveStart, paramEnd;
@@ -11497,11 +11499,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
11497
11499
  val1 = valStack.pop();
11498
11500
  this.eval_op_eoy(resVal, val1);
11499
11501
  break;
11500
- case ExpressionInterface.EXP_OP_ROLLBACK:
11501
- val2 = valStack.pop();
11502
- val1 = valStack.pop();
11503
- yield this.eval_op_rollback(resVal);
11504
- break;
11505
11502
  case ExpressionInterface.EXP_OP_VARSET:
11506
11503
  val2 = valStack.pop();
11507
11504
  val1 = valStack.pop();
@@ -11866,41 +11863,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
11866
11863
  val1 = valStack.pop();
11867
11864
  this.eval_op_taskType(resVal, val1);
11868
11865
  break;
11869
- case ExpressionInterface.EXP_OP_RANGE_ADD:
11870
- nArgs = valStack.pop();
11871
- if (nArgs > 0) {
11872
- Exp_params = new Array(nArgs);
11873
- for (j = 0; j < nArgs; j++)
11874
- Exp_params[nArgs - 1 - j] = valStack.pop();
11875
- yield this.eval_op_range_add(resVal, Exp_params);
11876
- }
11877
- break;
11878
- case ExpressionInterface.EXP_OP_RANGE_RESET:
11879
- val1 = valStack.pop();
11880
- yield this.eval_op_range_reset(resVal, val1);
11881
- break;
11882
- case ExpressionInterface.EXP_OP_LOCATE_ADD:
11883
- nArgs = valStack.pop();
11884
- if (nArgs > 0) {
11885
- Exp_params = new Array(nArgs);
11886
- for (j = 0; j < nArgs; j++)
11887
- Exp_params[nArgs - 1 - j] = valStack.pop();
11888
- yield this.eval_op_locate_add(resVal, Exp_params);
11889
- }
11890
- break;
11891
- case ExpressionInterface.EXP_OP_LOCATE_RESET:
11892
- val1 = valStack.pop();
11893
- yield this.eval_op_locate_reset(resVal, val1);
11894
- break;
11895
- case ExpressionInterface.EXP_OP_SORT_ADD:
11896
- val2 = valStack.pop();
11897
- val1 = valStack.pop();
11898
- yield this.eval_op_sort_add(resVal, val1, val2);
11899
- break;
11900
- case ExpressionInterface.EXP_OP_SORT_RESET:
11901
- val1 = valStack.pop();
11902
- yield this.eval_op_sort_reset(resVal, val1);
11903
- break;
11904
11866
  case ExpressionInterface.EXP_OP_TSK_INSTANCE:
11905
11867
  val1 = valStack.pop();
11906
11868
  this.eval_op_tsk_instance(resVal, val1);
@@ -13569,14 +13531,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
13569
13531
  yield fld.updateDisplay();
13570
13532
  });
13571
13533
  }
13572
- eval_op_rollback(resVal) {
13573
- return __awaiter(this, void 0, void 0, function* () {
13574
- let task = this.ExpTask.GetContextTask() || this.ExpTask;
13575
- yield AccessHelper.eventsManager.handleInternalEventWithTask(task, InternalInterface.MG_ACT_ROLLBACK);
13576
- resVal.Attr = StorageAttribute.BOOLEAN;
13577
- resVal.BoolVal = true;
13578
- });
13579
- }
13580
13534
  eval_op_like(source, maskOrg, resVal) {
13581
13535
  let i;
13582
13536
  let j;
@@ -14137,75 +14091,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
14137
14091
  resultStr.Replace('\\@', '@');
14138
14092
  resVal.StrVal = resultStr.ToString();
14139
14093
  }
14140
- eval_op_range_add(resVal, Exp_params) {
14141
- return __awaiter(this, void 0, void 0, function* () {
14142
- resVal.Attr = StorageAttribute.BOOLEAN;
14143
- resVal.BoolVal = yield this.add_rt_ranges(Exp_params, false);
14144
- });
14145
- }
14146
- eval_op_range_reset(resVal, parent) {
14147
- const _super = Object.create(null, {
14148
- GetContextTask: { get: () => super.GetContextTask }
14149
- });
14150
- return __awaiter(this, void 0, void 0, function* () {
14151
- resVal.Attr = StorageAttribute.BOOLEAN;
14152
- let iParent = parent.MgNumVal.NUM_2_LONG();
14153
- if ((iParent >= 0 && iParent < (this.ExpTask.getTaskDepth(false))) || iParent === ExpressionEvaluator.TRIGGER_TASK) {
14154
- let task = _super.GetContextTask.call(this, iParent);
14155
- if (task !== null) {
14156
- let command = CommandFactory.CreateDataViewCommand(task.getTaskTag(), DataViewCommandType.ResetUserRange);
14157
- yield task.DataviewManager.Execute(command);
14158
- resVal.BoolVal = true;
14159
- }
14160
- }
14161
- });
14162
- }
14163
- eval_op_locate_add(resVal, Exp_params) {
14164
- return __awaiter(this, void 0, void 0, function* () {
14165
- resVal.Attr = StorageAttribute.BOOLEAN;
14166
- resVal.BoolVal = yield this.add_rt_ranges(Exp_params, true);
14167
- });
14168
- }
14169
- eval_op_locate_reset(resVal, parent) {
14170
- const _super = Object.create(null, {
14171
- GetContextTask: { get: () => super.GetContextTask }
14172
- });
14173
- return __awaiter(this, void 0, void 0, function* () {
14174
- resVal.Attr = StorageAttribute.BOOLEAN;
14175
- let iParent = parent.MgNumVal.NUM_2_LONG();
14176
- if ((iParent >= 0 && iParent < (this.ExpTask.getTaskDepth(false))) || iParent === ExpressionEvaluator.TRIGGER_TASK) {
14177
- let task = _super.GetContextTask.call(this, iParent);
14178
- if (task !== null) {
14179
- let command = CommandFactory.CreateDataViewCommand(task.getTaskTag(), DataViewCommandType.ResetUserLocate);
14180
- yield task.DataviewManager.Execute(command);
14181
- resVal.BoolVal = true;
14182
- }
14183
- }
14184
- });
14185
- }
14186
- eval_op_sort_add(resVal, varnum, dir) {
14187
- return __awaiter(this, void 0, void 0, function* () {
14188
- resVal.Attr = StorageAttribute.BOOLEAN;
14189
- resVal.BoolVal = yield this.add_sort(varnum, dir);
14190
- });
14191
- }
14192
- eval_op_sort_reset(resVal, parent) {
14193
- const _super = Object.create(null, {
14194
- GetContextTask: { get: () => super.GetContextTask }
14195
- });
14196
- return __awaiter(this, void 0, void 0, function* () {
14197
- resVal.Attr = StorageAttribute.BOOLEAN;
14198
- let iParent = parent.MgNumVal.NUM_2_LONG();
14199
- if ((iParent >= 0 && iParent < (this.ExpTask.getTaskDepth(false))) || iParent === ExpressionEvaluator.TRIGGER_TASK) {
14200
- let task = _super.GetContextTask.call(this, iParent);
14201
- if (task !== null) {
14202
- let command = CommandFactory.CreateDataViewCommand(task.getTaskTag(), DataViewCommandType.ResetUserSort);
14203
- yield task.DataviewManager.Execute(command);
14204
- resVal.BoolVal = true;
14205
- }
14206
- }
14207
- });
14208
- }
14209
14094
  eval_op_tsk_instance(resVal, Parent) {
14210
14095
  let tag = 0;
14211
14096
  let iParent = Parent.MgNumVal.NUM_2_LONG();
@@ -14219,88 +14104,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
14219
14104
  resVal.MgNumVal = new NUM_TYPE();
14220
14105
  resVal.MgNumVal.NUM_4_LONG(tag);
14221
14106
  }
14222
- add_sort(varnum, dir) {
14223
- return __awaiter(this, void 0, void 0, function* () {
14224
- if (varnum.MgNumVal === null)
14225
- return false;
14226
- let itm = varnum.MgNumVal.NUM_2_LONG();
14227
- if (itm === 0)
14228
- return false;
14229
- let fld = this.GetFieldOfContextTask(itm);
14230
- if (fld === null)
14231
- return false;
14232
- let task = fld.getTask();
14233
- let vee_idx = fld.getId() + 1;
14234
- let expr_64 = new Sort();
14235
- expr_64.fldIdx = vee_idx;
14236
- expr_64.dir = dir.BoolVal;
14237
- let sort = expr_64;
14238
- let command = CommandFactory.CreateAddUserSortDataviewCommand(task.getTaskTag(), sort);
14239
- yield task.DataviewManager.Execute(command);
14240
- return true;
14241
- });
14242
- }
14243
- add_rt_ranges(Exp_params, locate) {
14244
- return __awaiter(this, void 0, void 0, function* () {
14245
- let varnum = Exp_params[0];
14246
- let min = Exp_params[1];
14247
- if (varnum.MgNumVal === null)
14248
- return false;
14249
- let itm = varnum.MgNumVal.NUM_2_LONG();
14250
- if (itm === 0)
14251
- return false;
14252
- let fld = this.GetFieldOfContextTask(itm);
14253
- if (fld === null)
14254
- return false;
14255
- let task = fld.getTask();
14256
- let vee_idx = fld.getId() + 1;
14257
- let expr_78 = new UserRange();
14258
- expr_78.veeIdx = vee_idx;
14259
- let rng = expr_78;
14260
- if (min.IsNull)
14261
- rng.nullMin = true;
14262
- if (!rng.nullMin && (min.Attr === StorageAttribute.ALPHA || min.Attr === StorageAttribute.UNICODE) && min.StrVal.length === 0)
14263
- rng.discardMin = true;
14264
- else {
14265
- if (!rng.nullMin) {
14266
- if (!StorageAttributeCheck.isTheSameType(fld.getType(), min.Attr))
14267
- return false;
14268
- if (StorageAttributeCheck.StorageFldAlphaUnicodeOrBlob(fld.getType(), min.Attr))
14269
- this.ConvertExpVal(min, fld.getType());
14270
- rng.min = min.ToMgVal();
14271
- }
14272
- }
14273
- if (Exp_params.length === 3) {
14274
- let max = Exp_params[2];
14275
- if (max.IsNull)
14276
- rng.nullMax = true;
14277
- if (!rng.nullMax && (max.Attr === StorageAttribute.ALPHA || max.Attr === StorageAttribute.UNICODE) && max.StrVal.length === 0)
14278
- rng.discardMax = true;
14279
- else {
14280
- if (!rng.nullMax) {
14281
- if (!StorageAttributeCheck.isTheSameType(fld.getType(), max.Attr))
14282
- return false;
14283
- if (StorageAttributeCheck.StorageFldAlphaUnicodeOrBlob(fld.getType(), max.Attr))
14284
- this.ConvertExpVal(max, fld.getType());
14285
- rng.max = max.ToMgVal();
14286
- }
14287
- }
14288
- }
14289
- else
14290
- rng.discardMax = true;
14291
- if (!rng.discardMin || !rng.discardMax) {
14292
- if (locate) {
14293
- let command = CommandFactory.CreateAddUserLocateDataviewCommand(task.getTaskTag(), rng);
14294
- yield task.DataviewManager.Execute(command);
14295
- }
14296
- else {
14297
- let command2 = CommandFactory.CreateAddUserRangeDataviewCommand(task.getTaskTag(), rng);
14298
- yield task.DataviewManager.Execute(command2);
14299
- }
14300
- }
14301
- return true;
14302
- });
14303
- }
14304
14107
  eval_op_getParam(resVal, name) {
14305
14108
  Debug.Assert(!name.IsNull && name.StrVal !== null);
14306
14109
  let expVal = GlobalParams.Instance.get(name.StrVal);
@@ -19636,6 +19439,13 @@ class DataviewManager extends DataviewManagerBase {
19636
19439
  }
19637
19440
  }
19638
19441
 
19442
+ class Sort {
19443
+ constructor() {
19444
+ this.fldIdx = 0;
19445
+ this.dir = false;
19446
+ }
19447
+ }
19448
+
19639
19449
  class SortCollection {
19640
19450
  constructor() {
19641
19451
  this._sortTab = null;
@@ -19871,11 +19681,7 @@ class MgForm extends MgFormBase {
19871
19681
  this.GetDataview().setTopRecIdxModified(true);
19872
19682
  try {
19873
19683
  this._suffixDone = false;
19874
- let newDisplayLine = this.GetDataview().getCurrRecIdx() + size;
19875
- if (unit === Constants.MOVE_UNIT_PAGE && this.isLineMode())
19876
- if (newDisplayLine > this.GetDataview().getSize() - 1)
19877
- visibleLine -= newDisplayLine - (this.GetDataview().getSize() - 1);
19878
- yield this.setCurrRowByDisplayLine(newDisplayLine, true, false);
19684
+ yield this.setCurrRowByDisplayLine(this.GetDataview().getCurrRecIdx() + size, true, false);
19879
19685
  this.GetDataview().setTopRecIdxModified(false);
19880
19686
  yield this.RefreshDisplay(Constants.TASK_REFRESH_FORM);
19881
19687
  }
@@ -19915,6 +19721,7 @@ class MgForm extends MgFormBase {
19915
19721
  try {
19916
19722
  yield this.RefreshDisplay(Constants.TASK_REFRESH_FORM);
19917
19723
  yield this.setCurrRowByDisplayLine(this.GetDataview().getTopRecIdx() + this.getLastValidRow(), false, true);
19724
+ visibleLine = this.getLastValidRow();
19918
19725
  }
19919
19726
  catch (Exception) {
19920
19727
  }
@@ -30432,7 +30239,7 @@ class CommandsTable {
30432
30239
  }
30433
30240
  }
30434
30241
 
30435
- let CurrentClientVersion = '4.1000.0-dev000.0';
30242
+ let CurrentClientVersion = '4.1000.0-dev4100.100';
30436
30243
 
30437
30244
  class ClientManager {
30438
30245
  constructor() {